01 - 数据库和 SQL

数据库简介

数据库是什么?

  • 数据库是将大量数据保存起来,通过计算机加工而成的可以进行高效访问的数据集合。
  • 用来管理数据库的计算机系统称为数据库管理系统(DBMS)。
  • 通过使用DBMS,多个用户便可安全、简单地操作大量数据。
  • 数据库有很多种类,SQL语言是来操作关系数据库。
  • 关系数据库通过关系数据库管理系统(RDBMS)进行管理。

数据库(DB)
数据库管理系统(DBMS)


DBMS 分类

  • 层次数据库(Hierarchical Database,HDB)

把数据通过层次结构(树形结构)的方式表现出来


  • 关系数据库(Relational Database,RDB)

采用由行和列组成的二维表来管理数据,使用专门的 SQL(Structured Query Language,结构化查询语言)对数据进行操作。

这种类型的 DBMS 称为关系数据库管理系统(Relational Database Management System,RDBMS)具有代表性的 RDBMS 有如下 5 种:
Oracle Database :甲骨文公司的 RDBMS
SQL Server :微软公司的 RDBMS
DB2 :IBM 公司的 RDBMS
PostgreSQL :开源的 RDBMS
MySQL :开源的 RDBMS


  • 面向对象数据库(Object Oriented Database,OODB)

把数据以及对数据的操作集合起来以对象为单位进行管理


  • XML 数据库(XML Database,XMLDB)

XML{4[eXtensible Markup Language 的缩写,一种使用 HTML 那样的标签来表现数据结构的语言。以 <name>铃木</name> 这样的形式来保存数据。]} 作为在网络上进行交互的数据的形式逐渐普及起来。XML 数据库可以对 XML 形式的大量数据进行高速处理。


  • 键值存储系统(Key-Value Store,KVS)

这是一种单纯用来保存查询所使用的主键(Key)和值(Value)的组合的数据库。


数据库结构

  • 使用 RDBMS 时,最常见的系统结构就是客户端 / 服务器类型(C/S 类型)这种结构。

说明:

  1. 服务器指的是用来接收其他程序发出的请求,并对该请求进行相应处理的程序(软件),或者是安装了此类程序的设备(计算机)。在计算机上持续执行处理,并等待接收下一条请求。RDBMS 也是一种服务器,它能够从保存在硬盘上的数据库中读取数据并返回,还可以把数据变更为指定内容。
  2. 向服务器发出请求的程序(软件),或者是安装了该程序的设备(计算机)称为客户端。
  3. 关系数据库通过类似 Excel 工作表那样的、由行和列组成的二维表来管理数据。用来管理数据的二维表在关系数据库中简称为表。
    3-1. 表的列(垂直方向)称为字段,它代表了保存在表中的数据项目
    3-2. 表的行(水平方向)称为记录,它相当于一条数据。关系数据库必须以行为单位进行数据读写
1-1.png
1-2.png

SQL语句的分类

SQL 用关键字、表名、列名等组合而成的一条语句(SQL 语句)来描述操作的内容。关键字是指那些含义或使用方法已事先定义好的英语单词,存在包含“对表进行查询”或者“参考这个表”等各种意义的关键字。

  • DDL(Data Definition Language,数据定义语言)用来创建或者删除存储数据用的数据库以及数据库中的表等对象
  1. CREATE:创建数据库和表等对象
  2. DROP:删除数据库和表等对象
  3. ALTER:修改数据库和表等对象的结构
  • DML(Data Manipulation Language,数据操纵语言)用来查询或者变更表中的记录
  1. SELECT:查询表中的数据
  2. INSERT:向表中插入新数据
  3. UPDATE:更新表中的数据
  4. DELETE:删除表中的数据
  • DCL(Data Control Language,数据控制语言)用来确认或者取消对数据库中的数据进行的变更。除此之外,还可以对 RDBMS 的用户是否有权限操作数据库中的对象(数据库表等)进行设定。
  1. COMMIT:确认对数据库中的数据进行的变更
  2. ROLLBACK:取消对数据库中的数据进行的变更
  3. GRANT:赋予用户操作权限
  4. REVOKE:取消用户的操作权限

SQL 基本书写规则

  • SQL 语句要以分号(;)结尾
  • SQL 不区分关键字的大小写
  • 常数的书写方式是固定的
  1. 在 SQL 语句中直接书写的字符串、日期或者数字等称为常数
  2. SQL 语句中含有字符串的时候,需要像 'abc' 这样,使用单引号(')将字符串括起来,用来标识这是一个字符串。
  3. SQL 语句中含有日期的时候,同样需要使用单引号将其括起来。日期的格式有很多种('26 Jan 2010' 或者 '10/01/26' 等)
  4. 在 SQL 语句中书写数字的时候,不需要使用任何符号标识,直接写成 1000 这样的数字即可
  • SQL 语句的单词之间需使用半角空格或换行符来进行分隔。

代码清单

创建 Product 表的CREATE TABLE 语句

CREATE TABLE Product
(
    product_id     CHAR(4)      NOT NULL,
    product_name   VARCHAR(100) NOT NULL,
    product_type   VARCHAR(32)  NOT NULL,
    sale_price     INTEGER,
    purchase_price INTEGER,
    regist_date    DATE,
    PRIMARY KEY (product_id)
);

删除 Product 表

DROP TABLE Product;

添加一列可以存储100位的可变长字符串的product_name_pinyin列

-- DB2  PostgreSQL  MySQL
ALTER TABLE Product ADD COLUMN product_name_pinyin VARCHAR(100);

-- Oracle
ALTER TABLE Product ADD (product_name_pinyin VARCHAR2(100));

-- SQL Server
ALTER TABLE Product ADD product_name_pinyin VARCHAR(100);

删除 product_name_pinyin 列

SQL Server  DB2  PostgreSQL  MySQL
ALTER TABLE Product DROP COLUMN product_name_pinyin;

Oracle
ALTER TABLE Product DROP (product_name_pinyin);

向 Product 表中插入数据的 SQL 语句

-- SQL Server  PostgreSQL
-- DML :插入数据
BEGIN TRANSACTION;

INSERT INTO Product VALUES ('0001', 'T恤衫', '衣服', 1000, 500, '2009-09-20');
INSERT INTO Product VALUES ('0002', '打孔器', '办公用品', 500, 320, '2009-09-11');
INSERT INTO Product VALUES ('0003', '运动T恤', '衣服', 4000, 2800, NULL);
INSERT INTO Product VALUES ('0004', '菜刀', '厨房用具', 3000, 2800, '2009-09-20');
INSERT INTO Product VALUES ('0005', '高压锅', '厨房用具', 6800, 5000, '2009-01-15');
INSERT INTO Product VALUES ('0006', '叉子', '厨房用具', 500, NULL, '2009-09-20');
INSERT INTO Product VALUES ('0007', '擦菜板', '厨房用具', 880, 790, '2008-04-28');
INSERT INTO Product VALUES ('0008', '圆珠笔', '办公用品', 100, NULL,'2009-11-11');

COMMIT;

变更表名

Oracle  PostgreSQL
ALTER TABLE Poduct RENAME TO Product;

DB2
RENAME TABLE Poduct TO Product;

SQL Server
sp_rename 'Poduct', 'Product';

MySQL
RENAME TABLE Poduct to Product;
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,684评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 87,143评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 151,214评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,788评论 1 277
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,796评论 5 368
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,665评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,027评论 3 399
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,679评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 41,346评论 1 299
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,664评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,766评论 1 331
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,412评论 4 321
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,015评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,974评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,203评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,073评论 2 350
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,501评论 2 343

推荐阅读更多精彩内容

  • ORA-00001: 违反唯一约束条件 (.) 错误说明:当在唯一索引所对应的列上键入重复值时,会触发此异常。 O...
    我想起个好名字阅读 5,169评论 0 9
  • http://www.itpub.net/thread-1393352-1-1.htmlhi,看到你关于数据库存储...
    yahzon阅读 580评论 1 0
  • 数据库概述、数据库服务器和客户端安装 2.1数据库概述 学习目标 1. 能够说出什么是数据 2. 能够说出为什...
    Cestine阅读 718评论 0 7
  • ORACLE自学教程 --create tabletestone ( id number, --序号usernam...
    落叶寂聊阅读 1,066评论 0 0
  • 我们夫妇俩年岁大了,毎年需做一次体检,朋友安排我们去奉贤南桥镇社区卫生服务中心去做B超,我有点疑惑,我想:“上...
    可燃上海阅读 1,408评论 6 14