🔥码云GVP开源项目 12k star Uniapp+ElementUI 功能强大 支持多语言、二开方便! 广告
[TOC] ## **约束** > 说明:在创建表的时候,对表设置一些规则,只有满足这些规则,才可以插入数据,我们把这些规则叫做约束。 * 常见的约束 > (A)主键约束(primary key) > (B)唯一约束(unique) > (C)默认值约束(default) > (D)非空约束(not null) <br /> ### **1. 主键约束** > 说明:主键约束就是用来标识表中记录的唯一标识符,避免用户输入重复数据, 被主键约束所修饰的列,其列值是唯一且非空的,一张表中只能有一个主键约束。 #### 1) 创建表时,添加主键约束 ``` create table work01( id int(4) primary key, name varchar(20) ); insert into work01 values(101,'tom '); insert into work01 values(101,'to '); ``` #### 2) 复合主键(联合主键)---重点 > 说明:使用主键约束修饰2列或者多列的组合值 ``` create table work02( id int(4), name varchar(20), age int(3), primary key(id,name) ); ``` #### 3) 修改表时,添加主键约束 > 格式: > alter table 表名 add primary key(列名1,列名2,....); * 案例:创建一张表,表名为work03,表中,包含的字段有: id int(4),name ``` varchar(20),sex char(3),age int(3),修改表时,对id列添加主键约束 create table work03( id int(4), name varchar(20), sex char(3), age int(3) ); desc work03; alter table work03 add primary key(id); ``` > 练习:创建一张表,表名为work04,包含的字段有: id int ,name varchar(20),passwd varchar(20),修改表时, 对name和passwd添加主键约束并验证 ``` create table work04( id int , name varchar(20), passwd varchar(20) ); alter table work04 add primary key(name,passwd); insert into work04 values(101,'tom ','123456'); insert into work04 values(102,'tom ','666666'); insert into work04 values(103,'toms','666666'); //验证主键的唯一性 insert into work04 values(104,'tom ','123456'); ``` #### 4) 删除主键约束 > 格式: > alter table 表名 drop primary key; * 案例:删除work04表中的主键约束 `alter table work04 drop primary key;` <br /> ### **2. 唯一约束** > 说明:唯一约束就是用来指定一列或者多列的组合值,使其具有唯一性,被唯一约束所修饰的列,列值可以为null, > 一张表中可以有,多个唯一约束。 > (***被唯一约束的字段值不能重复***) #### 1) 创建表时,添加唯一约束 ``` create table work05( id int(4) primary key, name varchar(20) unique, age int(3) unique, address varchar(50) ); insert into work05(id,address) values(1001,'北京'); insert into work05 values(1002,'天蚕土豆丝',23,'上海'); insert into work05 values(1003,'我吃西红柿',22,'上海'); insert into work05 values(1004,'西红柿',22,'上海'); select * from work05; ``` > **备注:唯一约束字段值重复,添加不成功** * 练习:创建一张表,表名为work06,表中包含的字段有: id int(4) pk,name varchar(20) uq,age int(3),并验证唯一性 ``` create table work06( id int(4) primary key, name varchar(20) unique, age int(3) ); insert into work06 values(101,'tom',23); insert into work06(id,age) values(102,25); insert into work06 values(103,'tom',30); ``` #### 2) 修改表时,添加唯一约束 > 格式: > alter table 表名 add unique(列名1,列名2,.....列名n); * 案例:创建一张表,表名为work07,表中包含的字段有:id int(4) pk name varchar(20) address varchar(50), 修改表时,对地址添加唯一约束 ``` create table work07( id int(4) primary key, name varchar(20), address varchar(50) ); alter table work07 add unique(address); ``` * 练习:创建一张表,表名为work08,表中字段有: id int pk,name varchar(20) sex char(3),email varchar(30), 修改表时,对name和sex添加唯一约束 ``` create table work08( id int primary key, name varchar(20), sex char(3), email varchar(30) ); alter table work08 add unique(name,sex); insert into work08 values(101,'tom','男','123456'); insert into work08 values(102,'tom','男','654321'); desc work08; ``` #### 3) 删除唯一约束 * 格式: `alter table 表名 drop index key_name; ` > (A)查询keys值语句 `show keys from 表名\G; ` * 案例:删除work07表中address上的唯一约束 `alter table work07 drop index address;` <br /> ### **3. 默认值约束** > 说明:默认值约束就是,在表中的某列,指定默认值约束,当执行插入操作的时候,如果某列没有插入列值, 系统会自动将默认值变为列值。 #### 1) 创建表时,添加默认值约束 ``` create table work09( id int(4) primary key, name varchar(20) unique, age int(3) default 18, address varchar(50) ); insert into work09(id,name) values(1001,'西门吹雪'); select * from work09; ``` #### 2) 修改表时,添加默认值约束 > 格式: `alter table 表名 modify 列名 数据类型 default 默认值; ` > 案例:创建一张表,表名为work10,字段有: id int(4) pk name varchar(20) uq,address varchar(50),修改表时, 对address添加默认值约束,默认值为北京 ``` create table work10( id int(4) primary key, name varchar(20) unique, address varchar(50) ); alter table work10 modify address varchar(50) default '北京'; ``` * 练习:修改work09表中,age列上的默认值约束,将默认值修改为20并验证 ``` alter table work09 modify age int(3) default 20; insert into work09(id,name,address) values(110,'陆小凤','成都'); select * from work09; ``` #### 3) 删除默认值约束 > 格式: `alter table 表名 modify 列名 数据类型; ` > 案例:删除work10表中,address列上的默认值约束 `alter table work10 modify address varchar(50); ` > 练习:删除work09表中,age列上的默认值约束 `alter table work09 modify age int(3);` <br /> ### **4. 非空约束** > 说明:非空约束就是,对表中的,某列添加非空约束,当值执行插入操作的时候,不可以插入null。 #### 1) 创建表时,添加非空约束 ``` create table work11( id int(4) primary key, name varchar(20) unique, age int(3) default 18, address varchar(50) not null ); insert into work11(id,name) values(111,'叶孤城'); ``` #### 2) 修改表时,添加非空约束 > 格式: `alter table 表名 modify 列名 数据类型 not null; ` 案例:创建一张表,表名为work12,表中包含的字段有: id int(4) pk name `varchar(20),age int(3) default 18, ` * 修改表时,对name列添加非空约束 ``` create table work12( id int(4) primary key, name varchar(20), age int(3) default 18 ); alter table work12 modify name varchar(20) not null; insert into work12(id,age) values(1007,23); ``` > 练习:创建一张表,表名为work13,字段有:id int pk,name varchar(20) uq,email varchar(20),修改表时, 对email列添加非空约束并验证 ``` create table work13( id int primary key, name varchar(20) unique, email varchar(20) ); alter table work13 modify email varchar(20) not null; ``` > 练习:创建一张表,表名为work13,字段有:id int pk,name varchar(20) uq,email varchar(20),修改表时, * 对email列添加非空约束并验证 ``` create table work13( id int primary key, name varchar(20) unique, email varchar(20) ); alter table work13 modify email varchar(20) not null; ```