《SQL入门经典》笔记

“建立数据库”包括五个内容:定义数据结构、管理数据库对象、规格化过程、操作数据以及管理数据库事务

1. 什么是数据库对象?

数据库对象用于存储或引用数据,需要被定义,例如表、试图、簇、序列、索引和异名(让表具有另一个名称)。

2. 什么是规划?

规划是与数据库某个用户名相关联的数据库对象集合。相应的用户名被称为“规划所有人”/“关联对象组的所有人”。

同一个数据库中可以在不同规划下有相同表名的不同表。如果没有指定规划,数据库默认选择所有同名的表。

一个数据库可以有多个规划人。例如“user1”登录到数据库创建了EMPLOYEE_TBL时,从数据库角度,这个表应该叫做“USER1.EMPLOYEE_TBL”。

在自己的规划里不必引用规划名称,两种表达均可:

3. 表:

是关系型数据库里最主要、最简单的数据存储形式。

列=字段,命名时学会合理使用下划线。

(1) 在create table table_name前,应学会花时间思考表的设计。就像写程序一样。

一个示例:

(2)ALTER TABLE可以添加删除列、修改列定义、添加和去除约束,在某些实现中还可以修改表SOTRAGE值。

修改表元素(列的属性,包含:数据类型、长度、有效位数、标度、列值能否为空):

添加列的一条基本规则是:如果表中已经有数据,不能添加为NOT NULL的列。原因:如果现有记录没有包含新列所需要的所有数据,就会自相矛盾。

我们可以选择强行添加一个为NULL的列,然后挨个插入记录,再把列的属性改为NOT NULL。可以看到,很麻烦了。

添加自动增加的列:很多时候需要这个功能,比如没有合适的主键,自己增加一个ID需要作为主键。MYSQL提供了SERIAL方法为表生成真正的唯一值:

修改列的一些通用规则:

列长可增加到特定数据类型所允许的最大长度;

缩短列长需要所有数据的长度都小于等于新长度;

数值数据的位数可增加;想要缩短,要求同上;

数值的小数位数可以增加或减少;

列的数据类型一般是可以改变的

(3) 从现有表新建另一个表:

利用CREATE TABLE和SELECT语句可以复制现有的表。

(4)删除表:

使用restrict并且表被视图或约束所引用,DROP语句会报错。

CASCADE选项能成功删除,全部引用视图和约束全部删除。

删表尽量带上规划名,否则容易误删。

4. 完整性约束:

完整性约束用于确定关系型数据库的准确性和一致性。在关系型数据库中,数据完整性通过引用完整性实现。

5. 引用完整性:

(1)主键约束:

主键是表里一个或多个用于实现记录唯一性的字段(主键可以由多个字段构成),体现每条记录的唯一性。

我们可以使用如下主键定义方法。此时,主键是一个隐含约束,在创建表时产生。

此外还可以使用:

(2)唯一性约束:

唯一性约束要求表里某个字段的值在每条记录里都是唯一的,与主键类似。可以当做主键的备胎。从下面的例子可知,唯一性约束可为空值,但是存在的值必须保证其唯一性。

(3)外键约束:

外键是子表里的一个字段,引用父表里的主键。外键约束是确保表与表之间引用完整性的主要机制。在下面的例子中,EMP_ID被定义为表EMPLOYEE_PAY_TBL的外键。

父子关系:子表EMPLOYEE_PAY_TBL里的字段EMP_ID的每一个值在父表EMPLOYEE_TBL的主键EMP_ID中都有对应的值。当父表删除该主键中的一个值,子表中对应的值也会被删除,这就是引用完整性。

除了上述方法,还可以用ALTER TABLE向表里添加外键:

(4) NOT NULL约束:

NOT NULL也可以被看做一个约束。

(5)检查约束:

检查(CHK)约束用于检查输入到特定字段的数据的有效性。检查约束可以为数据提供了另一层保护,检查数据是否处于一定范围。

(6)去除约束:

利用ALTER TABLE命令的DROP CONSTRAINT 选项可以去除已经定义的约束。例如下面去除主键约束。

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20180912G236SW00?refer=cp_1026
  • 腾讯「云+社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 yunjia_community@tencent.com 删除。

扫码关注云+社区

领取腾讯云代金券