六种常见约束
- not null:非空约束,用于保证该字段的值不能为空
- default:默认约束,用于保证该字段的值不能为空
- primary key:主键约束,用于保证该字段的值具有唯一性,且非空
- unique:唯一约束,用于保证该字段的值具有唯一性,可以为空
- check:检查约束,用于对插入的数据按照设置的逻辑进行检查
- foreign key:外键约束,用于限制两个表的关系,用于保证该字段的值必须来主表关联列的值
DROP TABLE IF EXISTS test1 ;
CREATE TABLE test1 (
id INT PRIMARY KEY,
#主键
id_name VARCHAR (20) NOT NULL,
#非空约束
seat INT UNIQUE,
#唯一
gender CHAR(1) CHECK (gender = '男'
OR gender = '女'),
#检查约束
class VARCHAR (220) DEFAULT '高三一班' #默认约束
) ;
*约束是可以叠加的
主键和唯一键的比较
primary key | unique | |
---|---|---|
值唯一性 | 唯一 | 唯一 |
是否为空 | 非空 | 可以为空 |
表中允许个数 | 1 | 多个 |
允许组合 | 允许 | 允许 |
外键约束
特点:
- 要求在从表设置外键关系
- 从表的外键列的类型和主表的关联列一致或兼容,名称无要求(类似于java中的父系和子系)
- 主表的关联列必须是一个key(一般是主键或唯一键)
- 插入数据时 先插入主表,再插入从表
- 删除数据时,先删除从表,再删除主表
语法:
ALTER TABLE 表名 ADD 【CONSTRAINT 外键名字】 FOREIGN KEY 外键字段 REFERENCES 主表(关联列);
外键约束不支持列级约束
主键约束和外键约束的对比
主键约束 | 外键约束 | |
---|---|---|
说明 | 唯一性,不能重复,不允许为空 | 外键可以重复以及允许为空,表的外键是另一表的主键 |
功能 | 保证字段的唯一性 | 关联数据,与其他表建立联系 |
不同点 | 主键只能由一个 | 允许存在多个外键 |