1、常见约束
NOT NULL:非空
该字段的值是必填的,如果不设置该约束,该字段默认是可以为空
DEFAULT:默认
该字段有默认值
CHECK:检查,mysql语法支持,但效果不支持
该字段值可以加以限制,比如年龄可以控制在0-120之间
PRIMARY KEY:主键
该字段值不可以重复
1、不可以为空
2、一个表中只能有一个主键,但是可以多个字段做组合主键
UNIQUE:唯一约束
该字段值不可以重复
1、可以为空
2、一个表中可以有多个唯一键,可以有组合唯一键
FOREIGN KEY:外键
用于限制多表的关系
1、从表的该字段值必须来自于主表的关联列的值
2、从表和主表的关联列的类型必须一样
3、主表的关联列必须是主键
4、在从表中设置外键
5、一个表中可以添加多个外键
6、插入数据时,先插入主表
删除数据时,先删除从表
分类:
位置 支持
列级约束 列的后面 除了外键
表级约束 表的后面 除了非空和默认
★★★★★★★★★★★创建表时添加约束 ★★★★★★★★★★★ √
CREATE TABLE 表名(
字段名 字段类型 列级约束,
字段名 字段类型 列级约束,
表级约束
)
2、添加列级约束
USE test;
DROP TABLE IF EXISTS stuinfo;
CREATE TABLE stuinfo(
id INT NOT NULL UNIQUE,#非空约束+主键约束
stuName VARCHAR(20) UNIQUE,#唯一约束
gender CHAR DEFAULT '男',#默认约束
age INT UNSIGNED CHECK (age BETWEEN 0 AND 120)#检查约束
);
DESC stuinfo;
SELECT * FROM stuinfo;
3、插入默认值
INSERT INTO stuinfo(id,stuname,age) VALUES(3,'lily',12);
INSERT INTO stuinfo VALUES(5,'jack',DEFAULT,900);
唯一 + 主键
4、关于插入null
INSERT INTO stuinfo VALUES(7,NULL,DEFAULT,900);
5、关于插入多个唯一或主键
DROP TABLE IF EXISTS stuinfo;
CREATE TABLE stuinfo(
id INT NOT NULL UNIQUE,#非空约束+主键约束
stuName VARCHAR(20) UNIQUE,#唯一约束
gender CHAR DEFAULT '男',#默认约束
age INT UNSIGNED CHECK (age BETWEEN 0 AND 120)#检查约束
);