“建立数据库”包括五个内容:定义数据结构、管理数据库对象、规格化过程、操作数据以及管理数据库事务
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 选项可以去除已经定义的约束。例如下面去除主键约束。
领取专属 10元无门槛券
私享最新 技术干货