实体完整性与参照完整性

410 阅读2分钟

实体完整性:

实体完整性:如果一个属性是主键,则他不能为空。
列级实体完整性: 列定义时加上关键字PRIMARY KEY
表级实体完整性: 表定义时,在语句的最后加上PRIMARY KEY (col_name,...)

定义替代键约束:替代键是没有被选为主键的候选键,用UNIQUE定义。

注:CONSTRAINT可以用来定义表完整性约束的名字
CONSTRAINT key_name PRIMARY KEY (key)

例:创建一个学生表student1,学号为主键,姓名为替代键

image.png

也可以在创建表之后定义实体完整性
语法:
ALTER TABLE table_name
ADD [CONSTARAINT key_name] PRIMARY KEY(col_name);

删除实体完整性:
语法:
ALTER TABLE table_name
DROP[CONSTRINAT key_name] PRIMARY KEY (col_name);

参照完整性:

参照完整性:如果一个属性是外键,则它的取值有两种可能,(1)为空(2)在外键对应的表中的主键中取值。

创建表时定义参照完整性:

创建表时定义参照完整性:列级参照完整性(不会生效,仅用于备注)
列定义是加上关键字REFERENCES ref_table_name(ref_name)
创建表之后定义参照完整性:使用ALTER TABLE命令。

表级参照完整性:

表定义时,在语句最后加上 CONSTRAINT ref_key_name FOREGN KEY (ref_key)REFERENCE ref_table_name(ref_key)

参照性定义

参照性定义=:
REFERENCES 表名 [(索引列名 ... )]
[ON DELETE {RESTRICT | CASCADE | SET NULL | NO ACTION}] [ON UPDATE {RESTRICT | CASCADE | SET NULL | NO ACTION}]
索引列名=:
列名 [(长度)] [ASC | DESC]

参照动作:

指定这个参照动作应用那一条语句:这里有两条相关的语句,即UPDATEDELETE语句
指定采取哪个动作:可能采取的动作是RESTRICT、CASCADE、SET NULL、NO ACTION和SET DEFAULT。

不同参照动作含义
RESTRICT:不允许进行修改或删除操作。若修改或删除主表的主键时,如果子表中存在子记录,系统将产生一个错误提示。这是缺省的参照完整性设置。
CASCADE
:从父表删除或更新行时自动删除或更新子表中匹配的行
SET NULL:当从父表删除或更新行时,设置子表中与之对应的外键 列为NULL。如果外键列没有指定NOT NULL限定词,这就是合法的
NO ACTION:NO ACTION意味着不采取动作,就是如果有一个相关 的外键值在被参考的表里,删除或更新父表中主要键值的企图不被允 许,和RESTRICT一样
SET DEFAULT:作用和SET NULL一样,只不过SET DEFAULT是指定 子表中的外键列为默认值

image.png

image.png

image.png