数据库小结(1)完整性约束

完整性约束

完整性约束用于确定关系型数据库里数据的准确性和一致性。在关系型数据库里,数据完整性是通过引用完整性的概念实现的,在引用完整性里包含了很多类型。

1.主键约束

主键是表里一个或多个用于实现记录唯一性的字段。虽然主键通常是由一个字段构成,但也可以由多个字段构成。举例来说,雇员的社会保险号码或工号都是可以在雇员表里作为主键。主键的作用在于表里每条记录都具有唯一的值。由于在雇员表里一般不会出现用多条记录表示一个雇员的情况,所以雇员的工号可以作为主键。主键是在创建表时指定的。

2.唯一性约束

唯一性约束要求表里某个字段的值在每条记录里都是唯一的,这一点与主键类似。即使我们对一个字段设置了主键约束,也可以对另一字段设置唯一性约束,尽管它不会被当作主键使用。
研究下面这个范例:

CREATE TABLE EMPLOYEE_TBL
(EMP_ID      CHAR(9)      NOT NULL   PRIMARY KEY,
-------------------------------------------------
-------------------------------------------------
-------------------------------------------------
EMP_PHONE    INTEGER(10)  NULL       UNIQUE,
-------------------------------------------------
);

在这个范例中,主键是EMP_ID,表示雇员的工号,用于确保表里的每条记录都是唯一的。主键通常是在查询里引用的字段,特别是结合表时。字段EMP_PHONE也会定义成为UNIQUE,表示任意两个雇员都不能拥有相同的电话号码。这两个都具有唯一性的字段之间没有太多的区别,只是主键让表有了一定的秩序,并且可以用于结合相互关联的表。

3.外键约束

外键是子表里的一个字段,引用父表里的主键。外键约束是确保表与表之间引用完整性的主要机制。一个被定义为外键的字段用于引用另一个表里的主键。

比如字表的EMP_ID引用父表中的EMP_ID字段。为了在子表中插入一个EMP_ID的值,它首先要存在于父表的EMP_ID里。类似的,父表里删除一个EMP_ID的值,子表里相应的EMP_ID值必须全部被删除,这就是引用完整性的概念。

4.NOT NULL约束

NOT NULL也是一个可以用于字段的约束,它不允许字段包含NULL值;换句话说,定义为NOT NULL的字段在每条记录里都必须有值。在没有指定NOT NULL时,字段默认为NULL,也就是可以是NULL值。

5.检查约束

检查(CHK)约束用于检查输入到特定字段的数据的有效性,可以提供后端的数据库编辑,虽然编辑通常是在前端程序里完成的。一般情况下,编辑功能限制了能够输入到字段或对象的值,无论这个功能是在数据库还是在前端里实现的。检查约束为数据提供了另一层保护。
在检查约束里可以使用几乎任何条件,就像在SQL查询里一样。

6.去除约束

利用ALTER TABLE命令的DROP CONSTRAINT选项可以去除已经定义的约束。举例来说,如果我们想要去除表EMPLOYEES里的主键约束,可以使用下面的命令:

ALTER TABLE EMPLOYEES DROP CONSTRAINT EMPLOYEES_PK;
Table altered;

在MySQL中可以使用下面这样的命令来去除主键约束:

ALTER TABLE EMPLOYEES DROP PRIMARY KEY;
Table altered;
发布了22 篇原创文章 · 获赞 28 · 访问量 2654

猜你喜欢

转载自blog.csdn.net/qq_43561507/article/details/103911811