7、约束(重要)
7.1、什么是约束?
约束对应的英语单词:constraint
在创建表的时候,我们可以给表中的字段加上一些约束,保证表中数据完整有效。
7.2、约束包括哪些?
非空约束:not null
唯一性约束:unique
主键约束:primary key (简称PK)
外键约束:foreign key (奖惩FK)
检查约束:check(mysql不支持,oracle支持)
重点学习四个约束:
not null
unique
primary key
foreign key
约束添加在列的后面,叫列级约束
约束没添加在列的后面,叫表级约束
7.3、非空约束:not null
非空约束not null约束的字段不能为NULL
drop table if exists t_vip;
create table t_vip(
id int,
name varchar(255) not null
);
insert into t_vip(id,name) values(1,'zhangsan');
insert into t_vip(id,name) values(2,'lisi');
insert into t_vip(id) values(3);//报错,name有非空约束
附:xxxx.sql文件被称为sql脚本文件
sql脚本文件编写大量的sql语句
执行sql脚本文件,该文件中所有的sql语句会全部执行
批量的执行sql语句,可以使用sql脚本文件
在mysql但你高中怎么执行sql脚本?
source D:\............
实际工作中项目经理给了个xxx.sql文件,执行这个脚本文件,电脑上数据库数据就有了,
数据量大直接用记事本打开sql脚本文件可能会死机,所以用source
7.4、唯一性约束:unique
唯一性约束unique约束的字段不能重复,但是可以为NULL
drop table if exists t_vip
create table t_vip(
id int,
name varchar(255) unique,//约束添加在列的后面,叫列级约束
email varchar(255)
);
insert into t_vip(id,name,email) values(1,'zhangsan','zhangsan@123.com');
insert into t_vip(id,name,email) values(2,'lisi','lisi@123.com');
insert into t_vip(id,name,email) values(3,'wangwu','wangwu@123.com');
select * from t_vip;
insert into t_vip(id,name,email) values(1,'zhangsan','zhangsan@123.com');//name有唯一性约束,报错
name字段虽然被unique约束,但都可以为NULL
新需求:name和email字段联合起来具有唯一性!!
drop table if exists t_vip
create table t_vip(
id int,
name varchar(255) unique,
email varchar(255)
);
这张表这样创建是不符合我以上“新需求”的
这样创建表示:name具有唯一性,email具有唯一性。各自唯一。
insert into t_vip(id,name,email) values(1,'zhangsan','zhangsan@123.com');
insert into t_vip(id,name,email) values(2,'zhangsan','zhangsan@sina.com');
联合唯一方法:
drop table if exists t_vip
create table t_vip(
id int,
name varchar(255) ,
email varchar(255)
unique(name,email) //约束没有添加在列的后面,叫表级约束
);
需要多个字段联合起来约束的时候用表级约束
注意:not null 只有列级约束,没有表级约束,unique有表级约束
7.5、unique和not null联合
drop table if exists t_vip
create table t_vip(
id int,
name varchar(255) not null unique
):
在mysql中,如果一个字段同时被not null和unique约束的话,该字段自动变为主键字段。
注意:oracle不一样