目录
一、索引
1、概念
2、添加索引的条件
3、查看sql语句的执行计划
4、操作索引
5、索引的分类
二、视图(view)
1、概念
2、视图语句
3、视图用法
三、数据库数据的导入导出
1、DBA命令
四、数据库设计三范式(避免数据冗余)
1、三范式内容
2、一对一关系表的设计
索引:相当于目录;通过目录可以快速的找到对应的资源
在数据库查询一张表时有两种检索方式:全表扫描、根据索引检查(效率高)
PS:索引虽然能够提高检索效率,但不能随意添加索引;如果表中数据经常修改,则不适合添加索引,因为数据一旦修改,索引需要重新排序,进行维护
1、数据量庞大
2、该字段很少的DML操作
3、该字段经常出现在where子句中
PS:主键和具有unique约束的字段会自动添加索引
语句:explain select 字段 from 表名 where 条件;
创建索引:create index 索引名 on 表名(字段); 删除索引:drop index 索引名 on 表名;
索引的实现原理是B 树
单一索引:给一个字段添加索引
复合索引:给多个字段添加索引
主键索引:主键上会自动添加索引
唯一索引:有unipue约束的字段上会自动添加索引
PS:模糊查询时,第一个通配符是%,这个时候索引失效
视图:指站在不同角度去看数据
创建视图:create view 视图名 as select 字段,... from 表名; 删除视图:drop view 视图名;
视图可以隐藏表的实现细节,保密级别较高的系统,数据库只对外提供相关的视图;能够通过对视图的操作改变原表数据,不是直接操作原表
数据导出:
mysqldump 数据库名称>导出位置 -u数据库用户名 -p数据库密码——(导出整个库)
mysqldump 数据库名称 表名称>导出位置 -u数据库用户名 -p数据库密码——(导出指定数据库中的指定表)
数据导入:create database 数据库名称;
use 数据库名称;
source 数据库位置;
第一范式:任何一张表都应该有主键,且每一个字段原子性不可再分
第二范式:建立在第一范式的基础之上,所有非主键字段完全依赖主键,不能产生部份依赖
部份依赖:指字段以来多个主键中的其中一个,称为部分依赖
解决多对多关系:建立三张表,其中关系表使用两个外键
第三范式:建立在第二范式的基础之上,所有非主键字段直接以来主键,不能产生传递依赖
传递依赖:字段1依赖字段2,字段2依赖主键字段3,称为传递依赖
一对多关系:两张表,多的表加外键
PS:在实际开发中,以满足客户的需求为主,有时候会拿冗余换速度
1、主键共享
将表一的主键当作表二的主键+外键
案例:
2、外键唯一
在表二中新增一个字段用于存放表一中的主键,新增字段为表二中的外键且需要添加unique约束 案例: