#约束

–主键约束

它能够唯一确定一张表中的一条记录,也就是我们通过给某个字段添加约束,就可以使得改字段不重复且不为空。

mysql> create table user(

id int primary key,

name varchar(20)

);

用mysql给表中的一个字段添加约束 mysql增加约束sql语句_字段


用mysql给表中的一个字段添加约束 mysql增加约束sql语句_用mysql给表中的一个字段添加约束_02


mysql> insert into user values(1,‘zhangsan’);

mysql> insert into user values(2,‘zhangsan’);

mysql> select * from user;

用mysql给表中的一个字段添加约束 mysql增加约束sql语句_主键_03


mysql> insert into user values(NULL,‘zhangsan’);

用mysql给表中的一个字段添加约束 mysql增加约束sql语句_字段_04


–联合主键,只要联合主键值加起来不重复就可以

mysql> create table user2(

-> id int,name varchar(20),

-> password varchar(20),

-> primary key(id,name)

-> );

mysql> insert into user2 values(1,‘zhangsan’,‘123’);

mysql> insert into user2 values(2,‘zhangsan’,‘123’);

mysql> insert into user2 values(4,‘lisi’,‘123’);

用mysql给表中的一个字段添加约束 mysql增加约束sql语句_mysql_05


mysql> insert into user2 values(NULL,‘lisi’,‘123’);

用mysql给表中的一个字段添加约束 mysql增加约束sql语句_用mysql给表中的一个字段添加约束_06


–自增约束(管控让它自动增长)

–auto_increment

mysql> create table user3(id int primary key auto_increment,name varchar(20));

mysql> insert into user3 (name) values(‘zhangsan’);

用mysql给表中的一个字段添加约束 mysql增加约束sql语句_用mysql给表中的一个字段添加约束_07


mysql> insert into user3 (name) values(‘zhangsan’);

用mysql给表中的一个字段添加约束 mysql增加约束sql语句_mysql_08


–如果说我们创建表的时候,忘记创建主键约束了?该怎么办?

mysql> create table user4(

-> id int,

-> name varchar(20));

用mysql给表中的一个字段添加约束 mysql增加约束sql语句_mysql_09


–修改表结构,添加主键

mysql> alter table user4 add primary key (id);

用mysql给表中的一个字段添加约束 mysql增加约束sql语句_字段_10


–如何删除?

mysql> alter table user4 drop primary key;

用mysql给表中的一个字段添加约束 mysql增加约束sql语句_主键_11


–使用modify修改字段,添加约束

mysql> alter table user4 modify id int primary key;

用mysql给表中的一个字段添加约束 mysql增加约束sql语句_用mysql给表中的一个字段添加约束_12


–唯一约束

–约束修饰的字段的值不可以重复

mysql> create table user5(

-> id int,

-> name varchar(20));

mysql> alter table user5 add unique(name);

用mysql给表中的一个字段添加约束 mysql增加约束sql语句_mysql_13


mysql> insert into user5 values(1,‘zhangsan’);

mysql> insert into user5 values(1,‘zhangsan’);

用mysql给表中的一个字段添加约束 mysql增加约束sql语句_字段_14


–name=lisi

mysql> insert into user5 values(1,‘lisi’);

用mysql给表中的一个字段添加约束 mysql增加约束sql语句_mysql_15


mysql> create table user6(

-> id int,

-> name varchar(20),

-> unique(name));

用mysql给表中的一个字段添加约束 mysql增加约束sql语句_用mysql给表中的一个字段添加约束_16

mysql> create table user7(

-> id int,

-> name varchar(20),unique

-> );

用mysql给表中的一个字段添加约束 mysql增加约束sql语句_mysql_17


–unique(id,name)表示两个键在一起不重复就行

mysql> create table user8(

-> id int,

-> name varchar(20),

-> unique(id,name);

用mysql给表中的一个字段添加约束 mysql增加约束sql语句_主键_18


mysql> insert into user8 values(1,‘zhangsan’);

mysql> insert into user8 values(2,‘zhangsan’);

mysql> insert into user8 values(1,‘lisi’);

用mysql给表中的一个字段添加约束 mysql增加约束sql语句_用mysql给表中的一个字段添加约束_19


–如何删除唯一约束?

mysql> alter table user7 drop index name;

用mysql给表中的一个字段添加约束 mysql增加约束sql语句_字段_20


–modify 添加

alter table user7 modify name varchar(20) unique;

用mysql给表中的一个字段添加约束 mysql增加约束sql语句_字段_21


–总结

–1、建表是时候就添加约束

–2、可以使用alter。。。add。。。

–3、alter。。。 modify。。。

–4、删除alter。。。drop。。。–非空约束

–修饰的字段不能为空 NULL

mysql> create table user9(

-> id int,

-> name varchar(20) not null);

用mysql给表中的一个字段添加约束 mysql增加约束sql语句_mysql_22


mysql> insert into user9 (id) values(1);

用mysql给表中的一个字段添加约束 mysql增加约束sql语句_主键_23

mysql> insert into user9 values(1,‘zhangsan’);

用mysql给表中的一个字段添加约束 mysql增加约束sql语句_主键_24


mysql> insert into user9 (name) values(‘lisi’);

用mysql给表中的一个字段添加约束 mysql增加约束sql语句_主键_25


用mysql给表中的一个字段添加约束 mysql增加约束sql语句_主键_26

–默认约束

–就是当我们插入字段值的首,如果没有传值,就会使用默认值

mysql> create table user10(

-> id int,

-> name varchar(20),

-> age int default 10);

用mysql给表中的一个字段添加约束 mysql增加约束sql语句_主键_27


mysql> insert into user10(id,name) values(1,‘zhangsan’);

用mysql给表中的一个字段添加约束 mysql增加约束sql语句_mysql_28


–传了值,就不会使用默认值

mysql> insert into user10(id,name) values(1,‘zhangsan’,19);

用mysql给表中的一个字段添加约束 mysql增加约束sql语句_用mysql给表中的一个字段添加约束_29


–外键约束

–涉及到两个表:父表,子表

–主表,副表–班级

create table classes(

id int primary key,

name varchar(20)

);

用mysql给表中的一个字段添加约束 mysql增加约束sql语句_字段_30

–学生表

create table studets(

id int primary key,

name varchar(20),

class_id int,

foreign key(class_id) references classes (id)

);

用mysql给表中的一个字段添加约束 mysql增加约束sql语句_字段_31


insert into classes values(1,‘一班’);

insert into classes values(2,‘二班’);

insert into classes values(3,‘三班’);

insert into classes values(4,‘四班’);

用mysql给表中的一个字段添加约束 mysql增加约束sql语句_主键_32


insert into students values(1001,‘张三’,1);

insert into students values(1002,‘张三’,2);

insert into students values(1003,‘张三’,3);

insert into students values(1004,‘张三’,4);

–1、主表classes中没有的数据值,在副表中,是不可以使用的。

–2、主表中的记录被副表引用,是不可以被删除的。