相关文章推荐
鬼畜的绿豆  ·  varchar怎么转成date-掘金·  1 年前    · 
拉风的包子  ·  Android Bitmap ...·  1 年前    · 
6 MySQL视图 多表连接(内连接 外连接) 子查询

6 MySQL视图 多表连接(内连接 外连接) 子查询

视图就是一张虚拟表

mysql> create or replace view myview as

-> select ename,dname from emp inner join dept on emp.deptno=dept.deptno;

select * from myview;

多表连接:笛卡尔积 交叉连接(无意义) 内连接 外连接 完全外连接(mysql不支持)

交叉连接 mysql> select * from emp,dept;

内连接

select * from emp,dept where emp.deptno=dept.deptno;

mysql> select * from emp right join dept on emp.deptno=dept.deptno;

mysql> select * from emp inner join dept on emp.deptno=dept.deptno;

select * from emp right outer join dept on emp.deptno=dept.deptno;

mysql> select * from emp right outer join dept on emp.deptno=dept.deptno;

mysql> select * from emp left outer join dept on emp.deptno=dept.deptno;

mysql> select ename,mgr,dname from emp inner join dept on emp.deptno=dept.deptno;

select e1.empno,e1.ename,e1.mgr,e2.empno,e2.ename from emp e1 inner join emp e2 on e1.mgr=e2.empno;

mysql> select * from (select e1.ename emp_name,e2.ename mgr_name from emp e1 inner join emp e2 on e1.mgr=e2.empno) e3 ;

mysql> select * from (select e1.ename emp_name,e2.ename mgr_name,e1.deptno deptno from emp e1 inner join emp e2 on e1.mgr=e2.empno) e3 inner join dept on e3.deptno=dept.deptno ;

子查询

嵌套子查询

select * from emp where sal=(select max(sal) from emp)

相关子查询

select * from emp as e1 where sal=(select max(sal) from emp e2 where e2.deptno=e1.deptno);

select dept.*,(select count(*) from emp) from dept;

select dept.*,(select count(*) from emp where emp.deptno=dept.deptno) from dept;

对emp表增加一列显示薪资排名

找出入职日期早于其直接上级的员工

善知软件实训基地

It一哥

编辑于 2023-12-28 06:27 ・IP 属地河北