约束
约束用于确保数据库的数据满足特定的规则,多个约束可以作用于一个字段上。
在mysql中,约束一般有:
primary key(主键)
not null(非空)
unique(唯一)
primary key(主键)
主键是唯一标识每一行的列(行也叫字段)。
主键拥有以下特性:
- 两种指定方式:
- 创建表时指定:字段名 字段类型 primary key
- 创建表时最后写:primary key(列名)
- 主键不能重复且不能为null。
- 一张表最多只能有一个主键,但可以是复合主键
两种指定方式
主键的两种声明方式。
--第一种,创建表时指定
create table t3(
id int primary key,
name varchar(50),
email varchar(50)
);
--第一种,创建表时最后写
create table t4(
id int,
name varchar(50),
email varchar(50),
primary key(id)
);
主键不能重复且不能为null
顾名思义,约束为主键的列,它的行不能重复且不能为null。
准备数据
--id被指定为主键。
create table t1(
id int primary key,
name varchar(50),
email varchar(50)
);
insert into t1 values(1,'阿卡丽','akali@asd.com');
insert into t1 values(2,'手机壳','shoujike@aqwe.com');
栗子:
在t1表中插入数据(1,'大树','dsax@asdas.com')
在t1表中插入数据(null,'莫伊','asd@dqwe.com')
SQL语句:
insert into t1 values(1,'大树','dsax@asdas.com');
insert into t1 values(null,'莫伊','asd@dqwe.com');
程序运行结果:
一张表最多只能有一个主键,但可以是复合主键
准备数据
create table t2(
id int primary key,
name varchar(50) primary key,
email varchar(50)
);
--ERROR 1068 (42000): Multiple primary key defined
--复合主键要使用第二种声明方式
create table t2(
id int,
name varchar(50),
email varchar(50),
primary key(id,name)
);
insert into t2 values(1,'阿卡丽','akali@asd.com');
insert into t2 values(2,'手机壳','shoujike@aqwe.com');
栗子:
在t2表中插入数据(1,'大树','dsax@asdas.com')
在t2表中插入数据(1,'阿卡丽','qwe@safsa.com')
SQL语句:
insert into t2 values(1,'大树','dsax@asdas.com');
insert into t2 values(1,'阿卡丽','qwe@safsa.com');
程序运行结果:
因为t2表中主键是由id+name组成的复合主键,所以第二条语句无法执行。
not null(非空)和unique(唯一)
非空拥有以下特性:
not null指定的列,行不能为null。
唯一拥有以下特性:
unique指定的列,行不能重复。
行可以为null,如果该列没有被not null约束,可以有多个null。
准备数据
create table t5(
id int primary key,
name varchar(50) unique not null,
email varchar(50) unique
);
insert into t5 values(1,'大树','dsax@asdas.com');
insert into t5 values(2,'阿卡丽','qwe@safsa.com');
栗子:
在t5表中插入数据(3,'明烛',null)
在t5表中插入数据(4,'大树','qwe@saf.com')
在t5表中插入数据(5,null,null)
在t5表中插入数据(6,'玻璃杯',null)
SQL语句:
insert into t5 values(3,'明烛',null);
insert into t5 values(4,'大树','qwe@saf.com');
insert into t5 values(5,null,null);
insert into t5 values(6,'玻璃杯',null);
程序运行结果:
第一条成功插入,
第二条name相同,
第三条name为null,
第四条成功插入,因为unique可以为null,且email没有被not null约束,可以有多个null。
标签:insert,Java,into,第六天,values,SQL,null,com,主键 From: https://www.cnblogs.com/Ocraft/p/17832415.html