MySQL【六】约束条件
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 );