表或列的primary key,unique,not null等修饰符常常被称作约束(constraint)
主要作用:是数据库用来提高数据质量和保证数据完整性的一套机制,是表定义(DDL语句)的一部分
约束主要包括:
约束的定义方式
创建表时定义
列级别定义

表级别定义

修改表时进行追加定义

约束的查看
使用desc查看列属性查看约束

使用show create 命令查看

使用show index命令查看(无法查看not null 约束)

非空约束(not null)
用于确保其所在列的值不能为空值null,允许有多个列设置非空约束
只有列级定义和追加定义
列级定义

追加定义

非空约束的删除(将其改回为null)

或

惟一约束(unique)
列字段中不允许有重复值,但是可以有空值,允许有多个列设置惟一约束
也被称为惟一索引(其他数据库管理系统略有不同)
列级定义

表级定义

追加定义

删除惟一约束

主键约束(primary key)
主键列中不允许有重复值,也不可以有空值
一个表中只能有一个主键约束,但一个主键约束可以包含多个列
定义主键时会同时为主键创建唯一性索引
列级定义

表级定义

追加定义

删除主键约束

外键约束(foreign key)
外键约束引用主键构成完整性约束,外键允许有空值,不允许存在对应主键约束的列所有数值以外的其它值
外键可以同时创建多个
创建外键约束时,MySQL自动创建非唯一性索引
表级别定义

先定义作为关联的主键表

或使用constraint为外键指定名字

定义外键表指定外键为主键表中的主键
追加定义

删除外键

索引是一种可以让SELECT语句提高效率的一种数据结构,类似书籍的目录、图书分类号等
索引要占用额外磁盘存储空间
索引的优点
索引的缺点
索引的类型
索引分类
按照存储方式分类
创建索引
语法结构如下:
CREATE INDEX index_name ON table_name(col_name); #创建普通索引
CREATE UNIQUE INDEX index_name ON table_name(col_name); #创建唯一索引
CREATE INDEX index_name ON table_name(col_name1,col_name2); #创建普通组合索引
CREATE UNIQUE INDEX index_name ON table_name(col_name1,col_name2); #创建唯一组合索引
#注:index_name必须唯一建表时添加索引

追加索引

或追加组合索引

查看索引

或

或

删除索引

或

注:第一种删除方法为mysql‘特有的,第二种为通用方法
注意事项:
原文:https://www.cnblogs.com/lastyear/p/11972806.html