一、约束
1.约束含义
一种限制,用于限制表中的数据,为了保证表中数据的准确性和可靠性。
2.约束格式
添加分类分为列级约束和表级约束。
CREATE TABLE 表名{
字段名 字段类型 列级约束,
字段名 字段类型,
表级约束
}
在创建表或修改表时添加。
3.约束分类
NOT NULL:非空,用于保证该字段的值不能为空。
比如姓名,学号
Null类型特征:
所有的类型的值都可以是null,包括int、 float等数据类型
空字符串””不等于null,0也不等于nul
DEFAULT:默认,用于保证该字段有默认值。
比如性别
PRIMARY KEY:主键,用于保证该字段的值具有唯一性,并且非空。(标识性:代表整行的字段)
比如学号,员工编号
主键约束相当于唯一约束+非空约束的组合,主 键约束列不允许重复,也不允许出现空值。
• 如果是多列组合的主键约束,那么这些列都不允 许为空值,并且组合的值不允许重复。
• 每个表最多只允许一个主键,建立主键约束可以 在列级别创建,也可以在表级别上创建。
• MySQL的主键名总是PRIMARY,当创建主键约束 时,系统默认会在所在的列和列组合上建立对应的 唯一索引。
UNIQUE:唯一,用于保证该字段的值具有唯一性,可以为空。
比如座位号
同一个表可以有多个唯一约束,多个列组合的约束。 在创建唯一约束的时候,如果不给唯一约束名称,就 默认和列名相同。 • MySQL会给唯一约束的列上默认创建一个唯一索引
CHECK:检查约束(mysql不支持,语法支持)
表级约束除了非空、默认,其他都支持。
语法:
constranint 约束名 约束类型(字段名)
列级约束都支持,但外键约束没有效果。
主键和唯一的区别
保证唯一性 | 是否允许为空 | 一个表中可以有多少个 | 是否允许组合 | |
---|---|---|---|---|
主键 | √ | × | 至多有一个 | √,但不推荐 |
唯一 | √ | √ | 可以有多个 | √,但不推荐 |
外键
外键约束是保证一个或两个表之间的参照完整性, 外键是构建于一个表的两个字段或是两个表的两个字 段之间的参照关系。
1.要求在从表设置外键关系;
2.从表的外键列的类型和主表的关联列的类型要求一致或兼容,名称无要求;
3.主表的关联列必须是一个key(一般是主键、唯一);
4.插入数据时,先插入主表,再插入从表;
5.删除数据时,先删除从表,在删除主表;