MYSQL学习(七)

一、什么是索引

  索引是在数据库表的字段添加的,为了提高查询效率存在的一种机制,一张表的一个字段可以添加一个索引,当然,也可以多个字段联合也可以添加索引。
  索引是一个B-Tree数据结构。遵循左小右大的原则存放,采用中序遍历方式遍历取数据。
  MYSQL扫描方式:

  • 全表扫描
  • 索引检索

二、索引的实现原理

  任何数据库当中,主键上都会自动添加索引对象,另外,MYSQL中带有unique约束的字段也会自动创建索引对象。
  在字段频繁出现在where的后面的时候,并且该字段很少的DML(insert delete update)操作。考虑添加索引

三、索引的创建和删除

创建索引:
create index index_name on tablae_name(arrt)
删除索引:
drop index index_name on table_name
通过explain select ..... 可以查看检索方式

四、索引什么时候失效

  • select * from emp where ename like '%T';
    模糊匹配以%开始会失效,但MYSQL现在也已经实现了不失效

  • 使用or,两边至少有一个没有索引对象,建议使用union

  • 使用复合索引的时候,没有使用最左侧字段名的字段查找

  • 索引列参加了运算
    explain select * from emp where sal + 1 = 800;

  • 索引列使用函数
    explain select * from emp where lower(ename) = 'smith';

五、索引的分类

  • 单一索引
  • 符合索引
  • 主键索引
  • 唯一性索引

六、视图

view:站在不同的角度去看待同一份数据
创建视图:
create view emp_view as select * from emp;
删除视图:
drop view dept2_view;

七、视图的作用

  我们可以对面向视图对象进行增删改查,会导致原表被操作。
  假设有一条非常复杂的SQL语句,而这条SQL语句需要在不同的位置上反复使用。每一次使用这个SQL语句的时候都需要重新编写,很麻烦,可以把这条浮渣的SQL语句以视图对象的形式新建。
  使用视图就和使用table一样,可以进行增删改查(CRUD),它存储在硬盘上且不会消失。

八、DBA命令

创建用户:
create user zrf identified by ‘123456’;

  1. 数据的导入导出
    导出要在windows的dos命令窗口中
    mysqldump database_name [table_name]>path -uroot -p123456;
    导入要连接数据库并进入数据库
    source path

九、数据库设计三范式

  • 第一范式:任何一张表必须要有主键,每一个字段原子性不可再分

  • 第二范式:满足第一范式且所有非主键字段完全依赖主键,不要产生部分依赖。
      通常部分依赖是因为依赖复合主键里的某个字段,会产生空间浪费。
      通常出现在多对多模式的表中
      多对多,三张表,关系表两个外键!!!

  • 第三范式:满足第二范式且所有非主键字段直接依赖主键,不要产生传递依赖
      通常出现在一对多模式的表中。
      一对多,两张表,多的表加外键!!!

一对一表数据庞大如何拆表?

可以拆表,然后利用
外键+唯一性约束

你可能感兴趣的:(MYSQL学习(七))