MySQL表的约束
所谓完整性是指数据的准确性和一致性,而完整性检查就是值检查数据的确定性和一致性。
MySQL数据库管理系统提供了一致机制来检查数据库表中的数据是否满足规定的条件,以保证数据库表中数据的准确性和一致性,这种机制就是约束
完整性约束关键字 | 含义 |
---|---|
not null(NK) | 约束字段的值不能为空 |
default | 设置字段的默认值 |
unique key(UK) | 约束字段的值是唯一 |
primary key(PK) | 约束字段为表的主键,可以作为该表记录的唯一标识 |
auto_increment | 约束字段的值为自动增加 |
foreign key(FK) | 约束字段为表的外键 |
1、//设置非空约束(not null,NK)
create table table_name(
属性名 数据类型 not null
...
);
2、//设置字段为默认值(default)
create table table_name(
属性名 数据类型 default 默认值
);
e.g.:
create table table_name(
dname varchar(10) deafult '菠萝吹雪'
);
插入数据的时候,default 后的默认值 写default会打印出“菠萝吹雪”
3、//设置唯一约束(unique,UK)
1、//设置某表中某字段的UK约束
create table table_name(
属性名 数据类型 unique
);
2、//给某字段的UK约束设置一个名字
create table table_name(
属性名1 数据类型1,
属性名2 数据类型2,
属性名3 数据类型3,
constraint uk_属性名3 unique(属性名3)
);
ERROR 1062 (23000): Duplicate entry ‘boluo’ for key ‘name’
如果有重复值,会显示以上错误
4、//设置主键约束(primary key, PK)
1、单字段主键
设置某表中某字段的PK约束
create table table_name(
属性名 数据类型 primary key,
属性名 数据类型,
.......
);
2、//给某字段的PK约束设置一个名字
create table table_name(
属性名1 数据类型1 ,
属性名2 数据类型2,
属性名3 数据类型3
.......
constraint pk_属性名3 primary key(属性名)
);
多字段主键—主键由多个字段组合而成
create table table_name(
属性名1 数据类型1 ,
属性名2 数据类型2,
属性名3 数据类型3
.......
constraint pk___属性名2_ _属性名3 primary key(属性名2,属性名3)
);
设置字段自动增加(auto_increment)
create table table_name(
属性名 数据类型 auto_increment,
....
....
);
设置外键约束(foreign key,FK)—用于两个表及以上
父表:
create table table_name(
属性名1 数据类型1 primary key,
属性名2 数据类型2,
属性名3 数据类型3,
.......
);
字表:
create table table_name(
属性名4 数据类型4 primary key;
属性名5 数据类型5,
属性名6 数据类型6,
constraint 外键约束名(fk_属性名6) foreign key (属性名6)
references 要关联的父表的表名 (父表属性名1)
);
其中属性名1为父表的主键,属性名6为子表的外键
举例:
create table t_dept(
deptno int primary key,
dname varchar(20),
loc varchar(40)
);
create table t_employee(
empno int primary key,
ename varchar(20),
job varchar(40),
deptno int,
constraint fk_deptno foreign key(deptno)
references t_dept(deptno)
);