mysql 四约束 三范式 六索引
1.MySQL 约束
1.约束的作用 分类
表列的primary key主键,unique唯一键,not null非空等修饰符常常被称作约束(constraint)
约束是数据库用来 提高数据质量和保证数据完整性的一套机制
约束作用在表列上,是表定义(DDL语句)的一部分
约束分类
非空约束(not null)
唯一性约束(unique)
主键约束(primary key)
外键约束(foreign key)
2.查看约束 (索引) 三种方式 desc show create show index
desctable_name表名;
show create tabletable_name\G
show index fromtable_name;看不了非空约束
3.约束的定义方式 列表 和追究定义 primary key主键 案例
创建表时建立约束(事中)建表之前就已经规划好了
create table t (id intprimary key,name char(10));列级定义
create table t (id int,name char(10),primary key(id));表级定义
修改表时追加约束(事后)建表之后根据需要追加
alter table t add primary key(id);追加定义
create table kwz(id int,name varchar(10),sex char(10),phone char(10),primary key(id,name));
desc kwz;
4.非空约束 null 使用modify来追加定义 列级 和追加定义 案例
非空约束用于确保其所在列的值 不能为空值null
只有 列级定义 和 追加定义
语法
create table z(id int not null,name char(10));列级定义
alter table zmodifyname char(10)not null;追加定义
加 非空 约束null
create table z(id int not null,name char(10));
alter table z modify name char(10) not null;
desc z;
insert into z values(1,'aa');
insert into z values(2,'aa');
insert into z values(2,'');
5.MySQL唯一性约束 unique 案例
表列中不允许有重复值,但是可以有空值
语法
create table t1 (id intunique,name char(10));列级定义
create table t2 (id int,name char(10),unique(id));表级定义
create table t3 (id int,name char(10));追加定义
alter table t3 modify id int unique;
允许有空值 不允许重复
insert into t3 values(4,'aa');
insert into t3 values(5,'');允许有空值
insert into t3 values(5,'kk');不允许重复
select * from t3;
6.MySQL主键primary key约束 一个表只有 一个主键约束列
表列中不允许有重复值,也不可以有空值
一个表中只能有一个主键约束列,但可以有多个非空+唯一约束的列
语法
create table t (id int primary key,name char(10));列级定义
create table t (id int,name char(10),primary key(id));表级定义
修改表时追加约束(事后)建表之后根据需要追加
alter table t add primary key(id);追加定义
7.MySQL外键foreign key约束 也叫参考约束或一致性约束表级定义
外键 约束引用 主键构成 完整性约束
外键允许有空值