索引
#创建单值索引
create index job_index on emp(job);
show index from emp;
#使用索引
select * from emp where job='经理';
#使用主键索引
select * from emp where empno=100;
#创建唯一索引
alter table emp add unique(ename);
show index from emp;
select * from emp where ename ='jack';
#创建复合索引(最左特性)
alter table emp add index fuhe_index(ename,job,hiredate);
show index from emp;
#没有用到索引 explain 判断
explain
select * from emp where ename='jack' or job='员工';
select *from dept where dname='accounting' and loc='一区';
select * from emp where hiredate='2017-02-02';
#删除索引
alter table emp drop index fuhe_index
#多表联查
#笛卡尔积
select * from dept,emp;
select * from dept,emp where dept.deptno=emp.deptno and dept.dname='accounting' ;
#连接查询join
select * from dept
#inner join
#工作中,常用的是left join小表驱动大表
left join
#right join
emp on dept.deptno=emp.deptno
#where dept.dname ='accounting'
;
#子查询
select deptno from dept where dname='accounting';
select* from emp where deptno=(select deptno from dept where dname='accounting');
#查询办公地址在一区的员工信息
select * from dept,emp where dept.deptno=emp.deptno and dept.loc='一区';
select * from dept left join emp on dept.deptno=emp.deptno where dept.loc='一区';
select * from emp where deptno=(select deptno from dept where loc ='一区');
#查询办公地址在二区的员工信息
select * from dept a,emp b where a.deptno=b.deptno and a.loc='二区';
select * from dept a right join emp b on a.deptno=b.deptno where a.loc='二区';
#SELECT deptno FROM dept WHERE loc ='二区';(2,3) 返回多条数据用in
select * from emp where deptno in (select deptno from dept where loc ='二区');