实体完整性:
实体完整性:如果一个属性是主键,则他不能为空。
列级实体完整性: 列定义时加上关键字PRIMARY KEY
表级实体完整性: 表定义时,在语句的最后加上PRIMARY KEY (col_name,...)
定义替代键约束:替代键是没有被选为主键的候选键,用UNIQUE定义。
注:CONSTRAINT可以用来定义表完整性约束的名字
CONSTRAINT key_name PRIMARY KEY (key)
例:创建一个学生表student1,学号为主键,姓名为替代键
也可以在创建表之后定义实体完整性
语法:
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]
参照动作:
指定这个参照动作应用那一条语句:这里有两条相关的语句,即UPDATE和DELETE语句
指定采取哪个动作:可能采取的动作是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是指定 子表中的外键列为默认值