索引 重点
为了提高查询效率. 索引会单独生成一张表,要合理的使用索引.
分类:
1,单值索引: 一个索引只包含一个字段
2,唯一索引: 一个索引只包含一个字段,但字段的值不能重复
3,复合索引: 一个索引可以包含着多个字段
使用步骤:
1,创建索引(经常按照指定字段查询) + 使用索引
2,测试
#1.索引:好处是:提高查询效率 坏处是:索引需要单独的一张表
#1.1 查看索引:show index from 表名
SHOW INDEX FROM emp #主键自带索引
#1.2 创建单值索引:一个索引只包含一个字段
CREATE INDEX ename_index ON emp(ename)
#1.3 创建唯一索引:一个索引只包含一个字段,索引列值不能重复
#create unique index uni_index on emp(job)#失败,因为job的值有重复的
CREATE UNIQUE INDEX uni_index ON emp(sal)
#1.4 创建复合索引:一个索引包含着多个字段,遵循最左特性
CREATE INDEX fuhe_index ON emp(job,hiredate,comm)
#1.5 使用索引:背后的故事,按照索引列去查
SELECT * FROM emp WHERE ename='jack' #使用单值索引
SELECT * FROM emp WHERE sal=10000 #使用唯一索引
#使用复合索引,遵循最左特性 //没有左一都失效
EXPLAIN SELECT * FROM emp WHERE job='总监' #生效
EXPLAIN SELECT * FROM emp WHERE job='总监'AND hiredate='2019-1-1'#生效
EXPLAIN SELECT * FROM emp WHERE hiredate='2019-1-1' #失效
EXPLAIN SELECT * FROM emp WHERE hiredate='2019-1-1'AND comm=100#失效
EXPLAIN SELECT * FROM emp WHERE hiredate='2019-1-1' AND job='总监'#生效
#1.6 查询SQL的执行计划/性能(看看用没用索引)
EXPLAIN #possible_keys用到的索引
SELECT * FROM emp WHERE ename='jack'
EXPLAIN
SELECT * FROM emp WHERE sal=10000
#1.7 删除索引
ALTER TABLE emp DROP INDEX fuhe_index
视图
创建视图
create view 试图名 as 查询SQL语句
create view name_view as select * from emp where ename like '%a%'
使用视图
select * from name_view
select * from deot,emp
多表联查
三种方式
1, 笛卡尔积: 语法 select * from 表名1,表名2,表名3
2, 连接查询
3, 子查询