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)