数据库数据完整性的6个约束

数据库数据完整性

  • default约束
  • check约束
  • null约束
  • unique约束
  • primary key约束
  • foreign key约束
  • 总结

前言:数据完整性是指存储在数据库中数据的准确性和可靠性。它是应防止数据库中存在不符合语义规定的数据和防止因错误信息的输入输出造成无效操作或错误信息而提出的。

类型:
      域完整性  :域完整性指特定列的项的有效性(default、check、null)
      实体完整性:要求表中的所有行具有具有唯一的标识符,例如主关键字值(unique、primary key)
      引用完整性:确保两表间的关系在更新和删除期间保持同步(foreign key)

default约束

定义:指定某列的默认值。

创建表的时候定义:

-- 设置Student表中的SEX默认为男
CREATE TABLE Student
(
SEX CHAR(2) DEFAULT '男' null,
name varchar(10) null
)

表已创建后定义:

-- 设置Student表中的SEX默认为男
ALTER TABLE Student
ADD CONSTRAINT DEF_SEX   --添加的约束名称
DEFAULT '男'    --约束类型及约束的值
FOR SEX  --添加约束的列
GO

图形界面操作:default约束: 表-右键-设计-默认值或绑定

:每列只能有一个default约束,不能用于identity属性的列,若默认值长度大于该字段允许的字符空间则插入到该列的值会被截断。

check约束

定义:控制列值的范围。

:check约束默认检查现有数据和所有新数据,使用with nocheck只检查新数据。

检查现有数据和所有新数据:

ALTER TABLE STUDENT
ADD CONSTRAINT CHECK_AGE     	--指定约束名称
CHECK(AGE>='0' AND AGE<='100')	--指定check约束范围

只检查新数据:

ALTER TABLE STUDENT with nocheck        --使用with nocheck只检查新数据
ADD CONSTRAINT CHECK_AGE     	
CHECK(AGE>='0' AND AGE<='90')

删除约束:

ALTER TABLE STUDENT
DROP CONSTRAINT CHECK_AGE

图形界面操作创建CHECK约束:表-右键-设计-列名-右键-check约束
图形界面操作删除CHECK约束:表-约束-右键单击要删除的约束-删除即可

null约束

定义:指定列值是否允许NULL。
创建表时:

CREATE TABLE Student
(SNum char(10) NULL/NOT NULL);

修改表:

ALTER TABLE Student
ALTER COLUMN SNum char(10)T NOT NULL/NULL;

unique约束

定义:指定非主键列的两行不能有相同的值,允许一个空值,创建UNIQUE约束时,同时会创建一个同名的非聚集索引。当插入或修改数据时,UNIQUE约束自动执行校验数据。

建表时:

CREATE TABLE T_TEST
(ID INT NOT NULL,
NAME VARCHAR(10) CONSTRAINT UNIQUE_NAME UNIQUE(NAME)
);

修改表:

 ALTER TABLE STUDENT
 ADD CONSTRAINT UNIQUE_NAME
 UNIQUE(NAME)

图形界面操作添加UNIQUE约束:表-右键-设计-列名-右键-索引/键-添加。

primary key约束

定义:能唯一标识表中每一行的值的一列或一组列,这样的一列或多列称为表的主键 。一个表只能有一个 PRIMARY KEY 约束,并且 PRIMARY KEY 约束中的列不允许空值,不允许重复。

foreign key约束

定义:用于建立和加强两个表数据之间的链接,可以是一列或多列,称为表的外键(FK).一个表可以有多个foreign key约束。选作外键的列必须与其对应的主键列具有相同的数据类型,每个键中列的数目必须相等.FOREIGN KEY 约束不仅可以与另一表的primary key约束相链接,它还可以定义为引用另一表的unique约束。

外键约束的主要目的是控制可以存储在外键表中的数据,但它还可以控制对主键表中数据的更改。

:外键在另一个表不一定是主键,但必须是唯一性索引。

创建外键:

ALTER TABLE Score		--创建外键
ADD CONSTRAINT FK_SNum
FOREIGN KEY(SNum)
REFERENCES Student(SNum)
GO
  • 默认创建的外键FK约束,当你删除或更改主键表所在数据时,报错提示该动作与外键约束冲突。
  • 若使用级联更新或级联删除时,当更新或删除主键表中的记录时,外键表中与主键相关的记录一同删除或更新。

级联更新、级联删除的使用:

ALTER TABLE Score
ADD CONSTRAINT FK_SNum
FOREIGN KEY(SNum)
REFERENCES COURSE(SNum)
ON DELETE CASCADE	--级联删除
ON UPDATE CASCADE	--级联更新

总结

  • default、check、null约束是针对表中的列进行完整性的控制,因此叫做域完整性;
  • primary key、unique约束是针对行限制数据行的唯一性,因此叫做实体完整性;
  • foreign key约束是针对表与表之间的关系控制数据完整性,因此叫做参照完整性。

你可能感兴趣的:(数据库数据完整性的6个约束)