类型:
域完整性 :域完整性指特定列的项的有效性(default、check、null)
实体完整性:要求表中的所有行具有具有唯一的标识符,例如主关键字值(unique、primary key)
引用完整性:确保两表间的关系在更新和删除期间保持同步(foreign key)
定义:指定某列的默认值。
创建表的时候定义:
-- 设置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约束默认检查现有数据和所有新数据,使用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。
创建表时:
CREATE TABLE Student
(SNum char(10) NULL/NOT NULL);
修改表:
ALTER TABLE Student
ALTER COLUMN SNum char(10)T NOT NULL/NULL;
定义:指定非主键列的两行不能有相同的值,允许一个空值,创建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 约束中的列不允许空值,不允许重复。
定义:用于建立和加强两个表数据之间的链接,可以是一列或多列,称为表的外键(FK).一个表可以有多个foreign key约束。选作外键的列必须与其对应的主键列具有相同的数据类型,每个键中列的数目必须相等.FOREIGN KEY 约束不仅可以与另一表的primary key约束相链接,它还可以定义为引用另一表的unique约束。
外键约束的主要目的是控制可以存储在外键表中的数据,但它还可以控制对主键表中数据的更改。
注:外键在另一个表不一定是主键,但必须是唯一性索引。
创建外键:
ALTER TABLE Score --创建外键
ADD CONSTRAINT FK_SNum
FOREIGN KEY(SNum)
REFERENCES Student(SNum)
GO
级联更新、级联删除的使用:
ALTER TABLE Score
ADD CONSTRAINT FK_SNum
FOREIGN KEY(SNum)
REFERENCES COURSE(SNum)
ON DELETE CASCADE --级联删除
ON UPDATE CASCADE --级联更新