mysql 约束
一.数据的完整性
作用:保证用户输入的数据保存到数据库中是正确的
实质:创建表的时候给表中的字段添加约束
1.实体完整性
实体:表中的一行或者一条记录代表一个实体
实体完整性的作用:标识每一行数据不重复
2 约束
A. 主键约束
主键约束: primary key
特点: 数据唯一,且不能为null
主关键字可以是表中的一个字段或者多个字段,他的值用来唯一标识表中的某一条记录
场景: 在多个表的关联关系中
mysql> create table stu1(
-> id int primary key,
-> name varchar(50)
-> );
mysql> create table stu2(
-> id int ,
-> name varchar(50),
-> **primary key(**id,name)
-> );
B. 唯一约束
作用: 不能出现重复值,但可以为null
create table stu( id int primary key,
name varchar(50) unique );
#primary key和unique之间的区别
a1.二者都强调的是唯一性
b1.在同一个表中,一般只出现一个primary key,可以出现多个unique
c1.primary key不允许为null,但是unique是允许的
C. 自增长约束
自增长约束使用字段只能是整数类型; 一般会添加给主键
mysql> create table stu5(
-> id int primary key auto_increment,
-> name varchar(50) unique
-> );
D.非空约束
not null,如果字段被约束为not null ,插入数据的时候,字段坚决不能为null,
如果为null,数据库立马报错;
create table stu( id int primary key auto_increment,
name varchar(50) unique not null);
E.默认值约束
使用默认值约束字段,如果建表插入数据时未传入参数,表格中将会用默认值填充.
mysql> create table stu7(
-> id int primary key auto_increment,
-> name varchar(50) unique not null,
-> address varchar(50) default “beijing”
-> ); # 添加参数时adress 不传参数就会默认为beijing
F.外键约束
foreign key
添加外键必须先有主键,主键和外键的类型必须保持一致
作用:将两个甚至多个表产生联系
mysql> create table student(
-> stuid varchar(10) primary key,
-> stuname varchar(50)
-> );
mysql> create table score(
-> score int,
-> courseid int
-> stuid varchar(10) foreign key(stuid) references student(stuid));