美文网首页转载部分
MySQL-约束与索引

MySQL-约束与索引

作者: 遇明不散 | 来源:发表于2019-06-03 17:46 被阅读2次

约束

保证数据的完整性、一致性、有效性

默认约束
  • 在插入记录时,如果不给该字段赋值,则使用默认值
  • 字段名 数据类型 default 值
非空约束
  • 不允许将该字段设置为NULL
  • 字段名 数据类型 not null

索引

定义

对数据库中表的一列或者多列的值进行排序的一种结构(MySQL中用Btree方式)

优缺点
  • 优点
    • 加快数据的检索速度
  • 缺点
    • 当对表中的数据进行增加、删除或修改的时候,索引也得动态维护,降低了数据的维护速度
    • 索引需要占用物理空间
索引示例
# 开启运行时间检测
set profiling=1;
# 执行查询语句
select name from t1 where name="lucy99999";
# 查看执行时间
show profiles;
# 在name字段创建索引
create index name on t1(name);
# 再执行查询语句
select name from t1 where name="lucy88888";
# 查看执行时间
show profiles;
索引分类
普通索引 index
  • 一个表中可以有多个index字段
  • 字段的值可以有重复,且可以为null
  • 经常把做查询条件的字段设置为index字段
  • index字段的key标志是MUL
# 创建index
# 创建表时
create table 表名(...,index(字段名),index(字段名),...);
# 已有表
create index 索引名 on 表名(字段名);

# 查看索引
desc 表名
show index from 表名\G;

# 删除索引
drop index 索引名 on 表名;
唯一索引 unique key
  • 一个表中可以有多个unique字段
  • unique字段的值不允许重复,但可以为null
  • uniquekey标志是UNI
# 创建唯一索引
# 创建表时创建
create table 表名(...,unique(字段名),unique(字段名),...);
# 在已有表中创建
create unique index 索引名 on 表名(字段名);
# 删除唯一索引
drop index 索引名 on 表名;
# index,unique在删除时只能一个一个删
主键索引 primary key
  • 一个表中只能有一个主键(primary)字段
  • 对应字段的值不允许重复,且不能为空
  • 主键字段的key标志PRI
  • 把表中能够唯一标识一条记录的字段设置为主键,通常把表中记录编号的字段设置为主键
# 创建主键索引
# 创建表时
create table 表名(字段名 数据类型 primary key [auto_increment],...)
auto_increment = 起始值;
# 已有表
alter table 表名 add primary key(字段名);
# 删除自增长属性(modify)
alter table 表名 modify 字段名 数据类型;
# 删除主键索引
alter table 表名 drop primary key;
# 已有表添加自增长属性
alter table 表名 modify 字段名 数据类型 auto_increment;
# 已有表重新指定起始值
alter table 表名 auto_increment = 起始值;
外键索引 foreign key
  • 让当前表字段的值在另一个表的范围内选择
  • 主表、从表字段数据类型要一致
  • 主表被参考字段:主键
# 创建外键
foreign key(参考字段名)
references 主表(被参考字段名)
on delete 级联动作
on update 级联动作

# 在已有表中添加外键
# 在已有表中添加外键时,会受到表中原有数据的限制
alter table 表名 add
foreign key(参考字段名) references 被参考表名(被参考字段名)
on delete 级联动作
on undate 级联动作

# 查看外键名
show create table 表名;
# 删除外键
alter table 表名 drop foreign key 外键名;

级联动作

  • cascade 数据级联更新
    • 当主表删除记录时,如果从表有相关联记录则级联删除
    • 当主表更新被参考字段的值时,从表级联更新参考字段的值
  • restrict (默认)
    • 当主表删除记录时,如果从表中有相关记录则不允许主表删除
    • 当主表更新记录时,如果从表中有相关记录则不允许主表更新
  • set null
    • 当主表删除记录时,从表中相关记录外键字段变为null
    • 当主表更新记录时,从表中相关记录外键字段变为null
  • no action
    • restrict,都是立即检查外键限制

相关文章

  • MySQL-约束与索引

    约束 保证数据的完整性、一致性、有效性 默认约束 在插入记录时,如果不给该字段赋值,则使用默认值 字段名 数据类型...

  • 05 MySQL-初识MySQL-索引-下

    04 MySQL-初识MySQL-索引-上 篇中介绍了InnoDB索引的数据结构模型以及索引维护。本篇继续针对My...

  • mysql-索引

    mysql-索引 按数据结构分类 B树索引-NOSQL使用较多 B+树索引 hash索引-KV数据库上比较常见 位...

  • MYSQL-索引

    MYSQL-索引 概述 用来加快查询的技术很多,其中最重要的是索引。通常索引能够快速提高查询速度。如果不适用索引,...

  • day04 索引 约束 触发器

    1 索引 什么是索引 索引的分类 创建索引 删除索引 合理使用索引提升查询效率 2 约束 什么是约束 约束的类型 ...

  • mysql-约束

  • MYSQL-约束

    1、约束保证数据的完整性和唯一性 2、约束分为表级约束和列级约束 (约束只针对某一个字段使用—列级约束;约束针对两...

  • 索引与约束练习

    作业部分 索引 学生表创建id为其主键 约束 设置学生表中name为非空,sex默认为男性 插入记录查看约束情况

  • MySQL 约束与索引

    一、主键约束 1.1 CONSTRAINT PRIMARY KEY 创建双主键数据表 如果将一个字段设为主键,可以...

  • 五、SQL—索引/约束①

    在数据库系统中解决问题的技术就是索引与约束。索引用来提高数据的检索速度约束则用来保证数据的完整性 索引 索引是建立...

网友评论

    本文标题:MySQL-约束与索引

    本文链接:https://www.haomeiwen.com/subject/rtsdtctx.html