约束与default

  • 约束
  • primary key(主键特点是不可以为空,不可以重复)
  • unique(可以为空,不可以重复,但空值可以重复)
  • not null
  • auto_increment
  • default


约束

MySQL数据库通过约束(constraints)防止无效的数据进入到表中,以保护数据的实体完整性。
约束分为字段级别约束和表级别约束:
- 字段级约束:只为单个字段添加约束;
- 表级约束:为一个或多个字段添加约束

primary key(主键特点是不可以为空,不可以重复)

#创建一个表
create table user(
id char(17) primary key comment '主键',
user_name varchar(17) unique comment '用户名'
)
#添加信息
insert into user(id,user_name) values (null,'444')	#出错,因为主键不能为空

输出结果为

true和false在数据库中记录数值 java 在数据库中default_主键

#再添加如下信息
insert into user(id,user_name) values ('null','222')
insert into user(id,user_name) values ('','333')	#可以添加成功,与第一条语句中的null有差别

输出结果为

true和false在数据库中记录数值 java 在数据库中default_数据_02

#再添加如下数据
insert into user(id,user_name) values ('null','666')	#主键值为null值,表中已经存在一个,所以不可以重复

true和false在数据库中记录数值 java 在数据库中default_主键_03

unique(可以为空,不可以重复,但空值可以重复)

#创建一个字段与上表相同的表,添加如下信息
insert into user(id,user_name) values ('666','666')		#该数据添加成功
insert into user(id,user_name) values ('777','666')		#添加不成功,错误提示如下,因为设置了unique约束,不能重复

错误提示为

true和false在数据库中记录数值 java 在数据库中default_数据_04

#再添加如下信息,均可以添加成功,为空时可以重复
insert into user(id,user_name) values ('888',null)
insert into user(id,user_name) values ('999',null)
insert into user(id,user_name) values ('000',null)

表示中数据为

true和false在数据库中记录数值 java 在数据库中default_字段_05

not null

# 首先创建一个表
create table user_info(
id char(36) primary key comment '主键',
user_name varchar(17) unique comment '用户名',
password varchar(15) not null comment '密码'
)
# 添加信息
insert into user_info(id,user_name,password) values ('1111','1111','')  #添加的是空字符(有字符),不为空,可以添加。
insert into user_info(id,user_name,password) values ('3333','3333333','null')	#添加的是null字符,添加成功。
insert into user_info(id,user_name,password) values ('5555','5555',null)	#设置为空(没有字符)时出错,由于限制了not null所以不能是null

错误提示为

true和false在数据库中记录数值 java 在数据库中default_字段_06


添加完成后的表中结果为

true和false在数据库中记录数值 java 在数据库中default_数据_07

auto_increment

#先创建一个表
create table publisher(
id int(17) primary key auto_increment comment '主键',
user_name varchar(17) comment '用户名'
)
#添加信息
insert into publisher (user_name) values ('出版社')	#添加时,id根据前一个id值自动增长,添加4次后表中结果为

true和false在数据库中记录数值 java 在数据库中default_主键_08

#只有四条信息时,可以自己添加第五条数据的id
insert into publisher (id,user_name) values ('7','教育出版社')	#运行结果如下

true和false在数据库中记录数值 java 在数据库中default_主键_09

#再次添加两次该条数据,从上一个id值开始自增
insert into publisher (user_name) values ('教育出版社')

true和false在数据库中记录数值 java 在数据库中default_数据_10

default

#先创建一个表
create table user(
id int(17) primary key comment '主键',
user_name varchar(17) unique comment '用户名',
password varchar(15) comment '密码',
sex char(2) default 0 comment '性别'
)
#添加如下数据,不设置性别
insert into user (id,user_name,password) values ('3333','3333333','188')

运行结果为 (性别添加了默认值,所以会有默认为0)

true和false在数据库中记录数值 java 在数据库中default_字段_11

#可以将默认值设置为0或者1
insert into user (id,user_name,password,sex) values ('111','111','188',0)
insert into user (id,user_name,password,sex) values ('222','222','188',1)