MySQL约束条件
not null
# not null (是否可以为空) create table stu(id int(10), name char(12) not null, sex enum('male','female') );
not null + default(默认值)
create table stu2( id int, name char(12) not null, phone char(11), sex enum('male','female') not null default 'male' );
unique(唯一)
create table stu3( id int, name char(12), ident char(18) unique );
unique(联合唯一)
ip + port 192.168.16.13 mysql 3306 192.168.16.13 kugou 8080 192.168.16.13 flask 5000 192.168.16.15 mysql 3306 192.168.16.16 mysql 3306 create table service( id int, ip char(15), name char(15), port int(5), unique(ip,port) );
auto_increment
自增的条件(这一列必须是数字,这一列必须是uniuqe)
create table userinfo(
id int unique auto_increment,
name char(12),
password char(32)
);
primary key(主键)
primary key(主键) == not null 非空 + unique 唯一
create table userinfo3(
id int unique,
username char(18) not null unique,
password char(32),
ident char(18) not null unique
);
一张表中只能有一个主键 : 主键从约束的角度上来说 就是非空且唯一的
只不过,非空+唯一可以设置多个字段,但是主键只能给一个表中的一个字段设置
(一般情况下,我们给id字段设置为主键,不允许一张表不设置主键)
create table pri2(
id1 int primary key,
id3 int unique not null
);
联合主键
约束多个字段各自不能为空,并且联合唯一
create table pri4(
id1 int,
num int,
primary key(id1,num)
);
外键
foreign Key(被关联的项) references 被关联的表(待关联的项)
# 表2 班级表 cid class_name
create table clas(
cid int primary key,
class_name char(20)
);
# 表1 学生表 id name class_id
create table stu(
id int primary key ,
name char(18),
class_id int,
foreign Key(class_id) references clas(cid)
);
级联更新,级联删除
(关联后可以修改也可以删除)on update cascade on dalete cascade
create table stu(
id int primary key ,
name char(18),
class_id int,
foreign Key(class_id) references clas(cid)
on update cascade on dalete cascade
);