not null
#not null (是否可以为空)
create table stu(id int(10),
name char(12) notnull,
sex enum('male','female')
);
not null + default(默认值)
create table stu2(
id int,
name char(12) notnull,
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 +port192.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 3306create 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) notnull unique,
password char(32),
ident char(18) notnull unique
);
一张表中只能有一个主键 : 主键从约束的角度上来说 就是非空且唯一的
只不过,非空+唯一可以设置多个字段,但是主键只能给一个表中的一个字段设置
(一般情况下,我们给id字段设置为主键,不允许一张表不设置主键)
create table pri2(
id1 int primary key,
id3 int unique notnull
);
联合主键
约束多个字段各自不能为空,并且联合唯一
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
);
练习题:表的关联练习