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
 );

练习题:表的关联练习

posted @ 2019-07-09 19:43  叫我大表哥  阅读(469)  评论(0编辑  收藏  举报