SQL中的六大约束

1、NOT NULL 非空约束

①强制字段列不接受空值

②例如,修改表时添加非空约束,ALTER TABLE student MODIFY COLUMN sname varchar(20)  NOT NULL;

 

2、DEFAULT 默认约束

①用于向列中插入默认值;

②如果没有规定其他的值,那么会将默认值添加到所有的新记录中。

③语法举例:

name varchar(20) default ‘张三’            name默认插入张三的值

ALTER TABLE 表名 ADD 列名 set DEFAULT '数值'    向已有列表中插入默认值

ALTER TABLE 表名 DROP CONSTRAINT 约束名    删除默认约束

 

3、PRIMARY KEY 主键约束

①约束唯一标识数据库表中的每条记录;

②主键必须包含唯一的值;

③主键列不能为空;

④一个表中主键至多有一个;

⑤语法:

StudentId INT NOT NULL PRIMARY KEY         创建学生编号为主键

PRIMARY KEY(StudentId)                创建学生编号为主键

PRIMARY KEY(StudentId,Email)             创建学生编号和邮箱为联合主键

⑥为已存在的列创建主键

ALTER TABLE 表名 ADD PRIMARY KEY(column_name)

⑦删除主键约束

ALTER TABLE 表名 DROP PRIMARY KEY

⑧删除主键约束

ALTER TABLE 表名 DROP CONSTRAINT 主键约束名

 

4、UNIQUE 唯一约束

①约束唯一标识数据库表中的每条记录;

②UNIQUE和PRIMARY KEY都为数据库提供了唯一性约束;

③每个表中至多有一个PRIMARY KEY约束,但是可以有多个UNIQUE约束;

④语法:

name INT UNIQUE

UNIQUE(column_name)

CONSTRAINT uc_PersonID UNIQUE(Id,Name)    添加多个约束

ALTER TABLE 表名 ADD UNIQUE(column_name)   增加表中的约束

ALTER TABLE 表名 DROP CONSTRAINT 主键名   删除约束

 

5、CHECK 检查约束

①check约束用于限制列中的值得范围;

②如果对单个列做check约束,那么该列只可以输入特定数值;

③如果对一个表定义check约束,那么此约束会在特定的列对值进行限制;

④语法:

StudentID INT NOT NULL CHECK(StudentID>0)    限制StudentID输入的值要大于0

StudentID INT NOT NULL, CHECK(StudentID>0)   限制StudentID输入的值要大于0

sex VARCHAR(2) NOT NULL check(sex='男' or sex='女')  限制sex的性别只能是男或女

ALTER TABLE 表名 ADD CHECK(列名>0)      向已有的列加入check约束 

 

6、FOREIGN KEY 外键约束

①一个表中的FOREIGN KEY指向另一个标的PRIMARY KEY;

②FOREIGN KEY约束用于预防破坏表之间连接的动作;

③FOREIGN KEY约束也能防止非法数据插入外键列,因为它必须是指向的那个表的值之一;

④语法:

FOREIGN KEY(column_name) REFERENCES 主表名(主键列名)          创建 column_name为主表名的外键

column_name INT FOREIGN KEY 主表名(主键列表)                创建column_name为主键名的外键

ALTER TABLE 表名 ADD FOREIGN KEY(列名) REFERENCES 主表名(主键列表)  为已存在的列创建外键 

ALTER TABLE 表名 DROP CONSTRAINT 外键约束名                删除外键约束(SQL Server,Oracle)

ALTER TABLE 表名 DROP FOREIGN KEY 外键约束名                删除外键约束(MySQL)