1.约束的种类
非空约束:not null
唯一性约束: unique
主键约束: primary key (简称PK)
外键约束:foreign key(简称FK)
检查约束:check(mysql不支持,oracle支持)
>>根据约束位置可分为
列级约束 如 name varchar(255) unique,
表级约束 如 unique(name,email) // 这时只有两个都一样才违反约束
2.非空约束 not null
drop table if exists t_vip;
create table t_vip(
id int,
name varchar(255) not null // not null只有列级约束,没有表级约束!
);
这时若输入数据的name值为空就会报错
3.唯一性约束 unique
3.1列级
create table t_vip(
id int,
name varchar(255) unique,
email varchar(255)
);
3.2表级
drop table if exists t_vip;
create table t_vip(
id int,
name varchar(255),
email varchar(255),
unique(name,email) // 约束没有添加在列的后面,这种约束被称为表级约束。
);
4.主键约束
4.1主键特征
①not null + unique(主键值不能是NULL,同时也不能重复!)
②任何一张表都应该有主键,没有主键,表无效!!
4.2主键作用
主键值是每一行记录的唯一标识。
主键值相当于一行记录的身份证号!!!
4.3单一主键和复合主键
①单一主键
create table t_vip(
id int primary key, //列级约束
name varchar(255)
);
②复合主键(不建议使用!!)
create table t_vip(
id int,
name varchar(255),
email varchar(255),
primary key(id,name)
);
>>不能有两个主键
drop table if exists t_vip;
create table t_vip(
id int primary key,
name varchar(255) primary key
);
会报错
4.4主键的自动维护 (使用auto_increment)
create table t_vip(
id int primary key auto_increment, //auto_increment表示自增,从1开始,以1递增!
name varchar(255)
);
5.外键
如何添加外键约束
以表级约束的方式添加:
foreign key 列 references 表名(列名)
注意
①被引字段不一定要是主键,有unique约束就行
②外键值可以为空值