约束条件
1约束条件
约束是一种限制,通过对表中的数据做出限制,来确保表中数据的完整性,唯一性
![08efce4fcc046156952f35c9e8f16ebd.png](https://img-blog.csdnimg.cn/img_convert/08efce4fcc046156952f35c9e8f16ebd.png)
默认约束
CREATE TABLE tb(
id INT DEFAULT 'a' ,
name VARCHAR(20)
);
插入数据的时候,如果没有明确为字段赋值,
则自动赋予默认值
在没有设置默认值的情况下,默认值为NULL
![ddcef5c1461d3af0f374b675811624c4.png](https://img-blog.csdnimg.cn/img_convert/ddcef5c1461d3af0f374b675811624c4.png)
![497b06d4c7f22ddca93e73a356fafa5a.png](https://img-blog.csdnimg.cn/img_convert/497b06d4c7f22ddca93e73a356fafa5a.png)
非空约束
CREATE TABLE tb(
id INT NOT NULL,
name VARCHAR(20)
);
限制一个字段的值不能为空,空着报错;
Insert的时候必须为该字段赋值
![9e87e1e100616ed8a5ecf305e30a7f3d.png](https://img-blog.csdnimg.cn/img_convert/9e87e1e100616ed8a5ecf305e30a7f3d.png)
主键一个表里只有一个,主键非空且唯一,你必须插入数据,否则就报错;
主键约束
![a47494aa22ee2333b810391a477ed199.png](https://img-blog.csdnimg.cn/img_convert/a47494aa22ee2333b810391a477ed199.png)
这里重复插入1,就会因为有了主键约束而报错;
自增长约束(auto_increment)
CREATE TABLE tb(
id INT auto_increment,
name VARCHAR(20),PRIMARY KEY (id)
);
自动编号,和主键组合使用,
一个表里面只能有一个自增长
![3c690f789076d341fc2b8cc5864bb25a.png](https://img-blog.csdnimg.cn/img_convert/3c690f789076d341fc2b8cc5864bb25a.png)
CREATE TABLE tb(id INT auto_increment,name VARCHAR(20) ,PRIMARY KEY (id)) auto_increment=1000;
![9f4f6aa3833fd1ceb9eddc16b8a6dad3.png](https://img-blog.csdnimg.cn/img_convert/9f4f6aa3833fd1ceb9eddc16b8a6dad3.png)
![5afadb0185097ac826970edfed63dc02.png](https://img-blog.csdnimg.cn/img_convert/5afadb0185097ac826970edfed63dc02.png)
外键约束(foreign key)
CREATE TABLE a(
id_a INT PRIMARY KEY,
name VARCHAR(20)
);
CREATE TABLE b(
id_b INT PRIMARY KEY,
name VARCHAR(20),
foreign key (id_b) references a(id_a)
);
我有的你一定有, 你没有的, 我绝对没有
1. B表中的id_b字段,只能添加 id_a中已有的数据。
2. A表中id_a 被参照的数据, 不能被修改和删除
![7a94a21ffce623498f980ba5d0224835.png](https://img-blog.csdnimg.cn/img_convert/7a94a21ffce623498f980ba5d0224835.png)
![9dabea31aedfb6aa8801e88c12501282.png](https://img-blog.csdnimg.cn/img_convert/9dabea31aedfb6aa8801e88c12501282.png)
![162ee54492f0d3a11a68fd2136ee84e0.png](https://img-blog.csdnimg.cn/img_convert/162ee54492f0d3a11a68fd2136ee84e0.png)
上面三个图我们就能看出,a表中没有的,b表中也不能插入