热线电话:13121318867

登录
2023-08-11 阅读量: 2303
CDA数据分析一级教材SQL语句 12

4.3多表查询


--union

select *from t1

union

select *from t2;


-- union all,其中(a,12) 出现了2次

select * from t1

union all

select * from t2;


- 查询 manager 的姓名、所属部门名称和入职日期

-- 使用 on 声明连接条件

select ename,dname,job,hiredate

from emp

inner join dept on emp.deptno=dept.deptno

where job='manager';

-- 使用 using 声明连接条件

select ename,dname,job,hiredate

from emp

inner join dept using (deptno)

where job='manager';


查询每位员工的 ename、dname、sal

-- 使用 on 声明连接条件

select ename,dname,sal from emp

left join dept on emp.deptno=dept.deptno;

-- 使用 using 声明连接条件

select ename,dname,sal

from emp

left join dept using(deptno);


查询各地区的员工数量--

-- 使用 on 声明连接条件

select loc,count(empno) 员工数

from emp right join dept on emp.deptno=dept.deptno

group by loc;

-- 使用 using 声明连接条件

select loc,count(empno) 员工数

from emp

right join dept using (deptno)

group by loc;


-- 对表 t1 和表 t2 进行全连接

select * from tl left join t2 on t1.公共字段 1=t2。公共字段2

union

select * from tl right join t2 on t1.公共字段1=t2.公共字段2;


--查询所有员工的姓名及直属领导的姓名

select 员工表 .ename 员工姓名 ,领导表 .ename 领导姓名

from emp 员工表 left join emp 领导表 on 员工表 .mgr= 领导表empno;


查询入职日期早于直属领导的员工的姓名及所属部门

select 员工表 .empno,员工表 .ename,dname

from emp 员工表

left join emp 领导表 on 员工表 .mgr= 领导表 .empno

left join dept on 员工表 .deptno=dept.deptno

where 员工表 .hiredate< 领导表 .hiredate;


-- 使用 from 子句

select * from t1,t2;

-- 使用 cross join

select * from t1 cross join t2;

-- 表 t1和表 t2 中,均包含 4 条记录,最后返回 4*4,即 16 条记录


根据分组逻辑创建表--

create table salgrade(grade int,losal int,hisal int);

insert into salgrade values('低收入人群,700,1500), ('中等收入人群,,1501,3000), ('高收入人群,,3001,9999);


使用 on 声明不等值的连接条件

select empno,ename,sal,grade

from emp left join salgrade

on sal between losal and hisal;

-- 使用 where 声明不等值的连接条件

select empno,ename,sal,grade

from emp,salgrade

where sal between losal and hisal;


0.0000
0
关注作者
收藏
评论(0)

发表评论

暂无数据
推荐帖子