MySQL—— 约束&索引

约束

对表中字段(值)进行一定的约束限制,以保证数据的完整性、一致性、有效性
约束的分类(2中基本约束)
一、 (NOT NULL):不允许该字段的值有NULL
用法:

字段名 数据类型 NOT NULL

二、(DEFAULT):向表中插入记录,不给该字段赋值时,则使用默认值
用法:

字段名 数据类型 DEFAULT 默认值

注意:非空约束和默认约束可以混合使用
如:(id不能为空,性别设置默认为s)

CREATE TABLE list1(
id int NOT NULL,
name varchar(15),
sex enum('m','f','s') DEFAULT 's'
);


索引

对数据库中表的一列或多列的值进行排序的一种结构(排序使用的算反:Btree)
优点:加快数据检索速度
缺点:
· 占用物理的存储空间
· 当表中数据更新时,索引需要动态维护,占用系统资源,降低数据维护速度
索引分类:普通索引、唯一索引、外链索引、主链索引

· 普通索引(INDEX)

使用规则:

  1. 可设置多个字段(建议设置常用字段)
  2. 字段值无约束
  3. key标志:MUL

创建索引:

  1. 创建表时:
CREATE TABLE 表名(字段名 数据类型,... ...,INDEX(字段名),INDEX(字段名),....);
案例:
CREATE TABLE list(
id int,
name varchar(20),
score decimal(5,2),
INDEX(id),
INDEX(name)
);
  1. 已有表时:
CREATE INDEX 索引名 ON 表名(字段名);
案例:
CREATE INDEX number ON userlist(number);

建议:索引名和字段名保持一致

查看索引:

  1. 简单信息:
DESC 表名;(找key标志为MUL的字段)
  1. 详细信息
SHOW INDEX FROM 表名;(给出每个字段的详细信息)

参数字段:
# Non_unique (0代表唯一索引,1代表普通索引)
# Key_name(索引字段名)
# Index_type(索引类型)
# ...等

删除索引:

DROP INDEX 索引名 ON 表名;

注意:只能每次删除一个索引

· 唯一索引(UNIQUE)

使用规则:

  1. 可设置多个字段
  2. 约束:字段值不允许重复,但可为NULL
  3. key标志:UNI

创建索引:

  1. 创建表时:
CREATE TABLE 表名 (字段名 数据类型,... ...,UNIQUE(字段名),...);
  1. 已有表时:(受表中原有数据限制)(值必须具有唯一性,不重复,否则创建失败)
CREATE UNIQUE INDEX 索引名 ON 表名(字段名);
/// 案例:
/// 给表添加字段
ALTER TABLE userlist ADD number bigint;
/// 给字段创建唯一索引
CREATE UNIQUE INDEX number on userlist(number);

查看索引:

删除索引:

· 主键索引

使用规则:

创建索引:

查看索引:

删除索引:

· 外键索引

使用规则:

创建索引:

查看索引:

删除索引:

你可能感兴趣的:(MySQL—— 约束&索引)