1.概念: 哪个字段添加了检查约束,哪个字段的值,就要通过检查才能保存成功,用的更少
CREATE TABLEtest02(
id INT PRIMARY KEY AUTO_INCREMENT,
age INT,CHECK(age>0) #检查约束,了解即可!)
INSERT INTO test02 VALUES(NULL,10) #ok的
INSERT INTO test02 VALUES(NULL,-10) #会报错,没有通过检查约束
了解即可,有些版本不会生效
2. 默认约束 default
1.概念: 那个字段,添加了默认约束,哪个字段的值就有了默认值,用的很少
CREATE TABLEtest01(
id INT PRIMARY KEY AUTO_INCREMENT,
sex CHAR(3) DEFAULT '男'#默认约束
)
虽然sex设置了默认值,但是只是手动录入时有效,发起insert语句时还是要手动写具体值的
INSERT INTO test01 VALUES(NULL,'男')
3. 外键约束 foreign key
1.概念: 为了省内存,使用两张表里的主键,描述两张表的关系,也可以不只是两张表
2.语法结构:
foreign key(子表主键) references 主表表名(对方主键)3.例子:
#情况1:子表里的主键的值 必须 取自于 主表 输入或修改数据主表约束子表,要先在主表添加或修改数据
#情况2:主表里的记录想要删除时,必须保证子表没有引用才行 删除数据子表约束主表,要先删除子表数据
CREATE TABLEtb_user(
id INT PRIMARY KEY AUTO_INCREMENT,NAMEVARCHAR(10),
age INT,
phone VARCHAR(11))
CREATE TABLEtb_user_address(
user_id INT PRIMARY KEY ,#不能自增!!!
address VARCHAR(100),1.创建外键FK,描述和1号表的关系
FOREIGNKEY(user_id)REFERENCEStb_user(id))