1,什么是约束:

对表数据的限定,保证数据的正确性,有效性,完整性;
image.png
注意:MySQL不支持 检测约束 !!!

2,什么时候创建约束:

在建表的时候!!!
因为当表中已有数据的话,约束的创建会创建失败;

  1. //建表时的创建约束:s
  2. create table 表名(
  3. 字段名 数据类型 约束
  4. );

3,约束的使用:

1 *,主键约束:

  1. 1. 作用:用来区分表的数据;
  2. 1. 特点:主键必须是唯一不重复的值;且不能包含null值;(除非设置为自动增长)
  1. //way 1:
  2. create table 表名(
  3. 字段名 字段类型 primary key
  4. );
  5. //wat 2:
  6. create table 表名(
  7. 列名 数据类型,
  8. [ constraint 约束名 ] primary key(列名)
  9. );
  10. //其中约束名 :按标准来是以 FK_ 开头;
  1. 删除主键约束:

    1. alter table 表名 drop primary key;
  2. 向已有的表中添加主键约束:

    1. alter table 表名 add primary key(字段名);

    c,!!!主键的自增:auto_increment

    如:在id字段中,每增加一条数据 id 就会+1,1 -> 2; ```sql 字段名 字段类型 primary key auto_increment,

//修改自动增长的开始值: alter table 表名 auto)increment = 1000;

  1. ![image.png](https://cdn.nlark.com/yuque/0/2022/png/25975946/1646013871245-bda204f0-6435-4311-9308-b1fe689f518e.png#clientId=u83289059-926d-4&crop=0&crop=0&crop=1&crop=1&from=paste&height=133&id=u152c68b0&margin=%5Bobject%20Object%5D&name=image.png&originHeight=133&originWidth=767&originalType=binary&ratio=1&rotation=0&showTitle=false&size=128762&status=done&style=none&taskId=u31aa7f3a-2d4a-47e3-a3f9-dab2eff3c54&title=&width=767)
  2. <a name="GoFTq"></a>
  3. ### 2,唯一约束: unique
  4. ![image.png](https://cdn.nlark.com/yuque/0/2022/png/25975946/1646044552302-34d52198-e3a9-47be-a6f6-8a2f9bad890c.png#clientId=u9ef0ecf7-8138-4&crop=0&crop=0&crop=1&crop=1&from=paste&height=262&id=u50e7f875&margin=%5Bobject%20Object%5D&name=image.png&originHeight=262&originWidth=510&originalType=binary&ratio=1&rotation=0&showTitle=false&size=17480&status=done&style=none&taskId=ud91c0cf5-0291-4b99-abee-5d1d467d39d&title=&width=510)
  5. <a name="WogjD"></a>
  6. ### 3,非空约束: not null
  7. ![image.png](https://cdn.nlark.com/yuque/0/2022/png/25975946/1646044563093-930970f3-d3fe-4a8b-a451-abf4b3bfaf01.png#clientId=u9ef0ecf7-8138-4&crop=0&crop=0&crop=1&crop=1&from=paste&height=256&id=uf936366f&margin=%5Bobject%20Object%5D&name=image.png&originHeight=256&originWidth=502&originalType=binary&ratio=1&rotation=0&showTitle=false&size=17397&status=done&style=none&taskId=u9fde6fd8-bff7-4c53-aaee-9205fb39cd9&title=&width=502)
  8. <a name="A6Z0D"></a>
  9. ### 4,默认值约束: default
  10. ![image.png](https://cdn.nlark.com/yuque/0/2022/png/25975946/1646044570577-dfb5eb12-8295-4634-ba25-5e1ca02509ae.png#clientId=u9ef0ecf7-8138-4&crop=0&crop=0&crop=1&crop=1&from=paste&height=248&id=ue9ef306d&margin=%5Bobject%20Object%5D&name=image.png&originHeight=248&originWidth=524&originalType=binary&ratio=1&rotation=0&showTitle=false&size=20783&status=done&style=none&taskId=u14e346e0-5992-4f55-8652-425cd2b8bff&title=&width=524)
  11. <a name="w6zsv"></a>
  12. ### 5 *,外键约束:poreign key
  13. ```sql
  14. create table 表名(
  15. 字段名 字段类型/数据类型,
  16. ...,
  17. [CONSTRAINT 外键约束名] FOREIGN KEY(外键字段名) REFERENCES 主表(主键字段名)
  18. );

image.png

image.png
一对多:一是主表,多是从表;
使用外键的前提:主表中必须存在主键 (primary key);

6,检测约束: