MySQL约束

mac2022-06-30  101

1.默认约束 创建my_default表,准备name和age两个字段进行测试,为age添加默认约束,设置默认值为18。 use mydb; create table my_default( name varchar(10), age int unsigned default 18); 查看表结构 desc my_default; 在插入记录时,省略name和age字段 insert into my_default values(); 在插入记录时,省略age字段 insert into my_default (name) values(‘a’); 在age字段中插入NULL值 insert into my_default values(‘b’,NULL); 在age字段中使用默认值 insert into my_default values(‘c’,default); 查询结果 select *from my_default; 删除默认约束 alter table my_default modify age int unsigned; 添加默认约束 alter table my_default modify age int unsigned default 18;

2.非空约束 创建my_not_null表,准备n1,n2,n3字段进行测试,为n2,n3设置非空约束,为n3设置默认值为18。 create table my_not_null( n1 int, n2 int not null, n3 int not null default 18); 查看表结构 desc my_not_null; 插入记录进行测试 省略n2字段,插入失败,提示n2没有默认值 insert into my_not_null values(); ERROR 1364 (HY000): Field ‘n2’ doesn’t have a default value 将n2字段设为NULL,插入失败,提示n2字段不能为NULL insert into my_not_null values(null,null,null); ERROR 1048 (23000): Column ‘n2’ cannot be null 将n3字段设为NULL,插入失败,提示n3字段不能为NULL insert into my_not_null values(null,20,null); ERROR 1048 (23000): Column ‘n3’ cannot be null 省略n1和n3字段,插入成功 insert into my_not_null (n2) values(20); 查询结果 select *from my_not_null;

3.唯一约束 创建my_unique_1表和my_unique_2表,分别通过列级约束和表级约束的方法加唯一约束。 create table my_unique_1( id int unsigned unique, username varchar(10) unique ); create table my_unique_2( id int unsigned, username varchar(10), unique(id), unique(username) ); 查看表结构会发现两个表的结构是相同的。 desc my_unique_1; desc my_unique_2; 为含唯一约束的字段插入记录,插入不重复记录,插入成功 insert into my_unique_1(id) values(1); insert into my_unique_1(id) values(2); 插入重复记录,插入失败 insert into my_unique_1(id) values(1); ERROR 1062 (23000): Duplicate entry ‘1’ for key ‘id’ 查询插入记录 select *from my_unique_1; 创建测试表 create table my_unique_3( id int); 添加唯一约束 alter table my_unique_3 add unique (id); 查看添加结果 show create table my_unique_3\G 删除唯一约束 alter table my_unique_3 drop index id; 查看删除结果 show create table my_unique_3\G 创建复合唯一约束 创建测试表,添加符合唯一键 create table my_unique_4( id int unsigned,username varchar(10), unique(id,username) ); 插入不重复记录,插入成功 insert into my_unique_4 values(1,‘2’); insert into my_unique_4 values(1,‘3’); 插入重复记录,插入失败 insert into my_unique_4 values(1,‘2’); ERROR 1062 (23000): Duplicate entry ‘1-2’ for key ‘id’

4.主键约束创建my_primary表,为id字段添加主键约束 create table my_primary( id int unsigned primary key, username varchar(20) ); 查看表结构 desc my_primary; 插入测试记录,插入成功 insert into my_primary values(1,‘Tom’); 为主键插入null值,插入失败 insert into my_primary values(null,‘Jack’); ERROR 1048 (23000): Column ‘id’ cannot be null 为主键插入重复值,插入失败 insert into my_primary values(1,‘Alex’); ERROR 1062 (23000): Duplicate entry ‘1’ for key ‘PRIMARY’ 删除主键约束 alter table my_primary drop primary key; 查看删除结果 desc my_primary; 删除id字段的非空约束 alter table my_primary modify id int unsigned; 添加主键约束 alter table my_primary add primary key(id); 查看添加结果 desc my_primary;

5.自动增长 创建my_auto表,为id字段添加自动增长 create table my_auto( id int unsigned primary key auto_increment, username varchar(20) ); 查看表结构 desc my_auto; 插入记录进行测试,插入时省略id字段,将会使用自动增长 insert into my_auto (username)values (‘a’); 为id字段插入null,将会使用自动增长值 insert into my_auto values (null,‘b’); 为id字段插入具体值6 insert into my_auto values (6,‘c’); 为id字段插入0,使用自动增长值 insert into my_auto values (0,‘c’); 查看my_auto表中的数据 select *from my_auto; 查看自动增长值 show create table my_auto\G 修改自动增长值 alter table my_auto auto_increment=10; 删除自动增长 alter table my_auto modify id int unsigned; 重新为id添加自动增长 alter table my_auto modify id int unsigned auto_increment;

最新回复(0)