-- 1.查詢所有員工資訊。查詢員工編號,員工姓名,工資,職務名稱,職務描述
/*分析:員工編號,員工姓名,工資 用到emp;職務名稱,職務描述 用到了job
emp.job_id=job.id
*/--隱式內連線
select
emp.id,emp.ename,emp.salary,job.jname,job.description
from emp,job
where emp.job_id=job.id;
--顯示內連線
select
emp.id,emp.ename,emp.salary,job.jname,job.description
from emp join job on emp.job_id=job.id;
--左外連線
select
emp.id,emp.ename,emp.salary,job.jname,job.description
from emp left join job on emp.job_id=job.id;
--查詢的是左表的所有資料和右表的交集部分
--右外連線
select
emp.id,emp.ename,emp.salary,job.jname,job.description
from job right join emp on job.id=emp.job_id;
--查詢的是右表的所有資料和左表的交際部分
-- 2.查詢員工編號,員工姓名,工資,職務名稱,職務描述,部門名稱,部門位置
/*分析:emp.id,emp.ename,emp.salary,job.jname,job.description,dept.dname,dept.loc
emp,job,dept
emp.job_id=job.id and emp.dept_id=dept.id
*/--隱式內連線
select
emp.id,emp.ename,emp.salary,job.jname,job.description,dept.dname,dept.loc
from emp,job,dept
where emp.job_id=job.id and emp.dept_id=dept.id;
-- 3.查詢員工姓名,工資,工資等級
/*emp.id,emp.salary,salarygrade
emp.salary<=salarygrade.losalary and emp.salary>=salarygrade.hisalary
emp.salary between salarygrade.losalary and salarygrade.hisalary
*/select
t1.ename,t1.salary,t2.grade
from emp t1,salarygrade t2
where t1.salary between t2.losalary and t2.hisalary;
-- 4.查詢員工姓名,工資,職務名稱,職務描述,部門名稱,部門位置,工資等級
/*emp.id,emp.salary,job.jname,job.description,dept.dname,dept.loc,salarygrade
emp.job_id=job.id,emp.dept_id=dept.id
emp.salary between salarygrade.losalary and salarygrade.hisalary
*/select a.ename,a.salary,b.jname,b.description,c.dname,c.loc,d.grade
from emp a,job b,dept c,salarygrade d
where a.job_id=b.id
and a.dept_id=c.id
and a.salary between d.losalary and d.hisalary ;
-- 5.查詢出部門編號、部門名稱、部門位置、部門人數
/*1.dept.id,dept.dname,dept.loc,部門人數 emp表
2.使用分組查詢。按照emp.dept_id 查詢count(id)
3.使用子查詢將第二步的查詢結果和dept表進行關聯查詢
*/select
a.id,a.dname,a.loc,b.tatal
from
dept a,
(select
dept_id,count(id) tatal
from emp
group by dept_id) b
where a.id=b.dept_id;
-- 6.查詢所有員工的姓名及其直接上級的姓名,沒有領導的員工也需要查詢
/*分析1.姓名 emp ,直接上級的名字 emp emp表的id和mgr是自關聯
2.條件emp.mgr=emp.id
3.用左外連線查詢到左表的資料和右表的交集
*/select
a.ename,
a.mgr,
b.id,
b.ename
from emp a,emp b
where a.mgr = b.id;
select
a.ename,
a.mgr,
b.id,
b.ename
from emp a
left join emp b
on a.mgr=b.id;
多表查詢練習
部門表 create table dept id int primary key primary key,部門id dname varchar 50 部門名稱 loc varchar 50 部門所在地 新增4個部門 insert into dept id,dname,loc values 10,教研...
多表子查詢練習
insert into emp values 7369,smith clerk 7902,1980 12 17 800,null,20 insert into emp values 7499,allen salesman 7698,1981 02 20 1600,300,30 insert into...
多表查詢練習題
部門表 create table dept id int primary key primary key,部門id dname varchar 50 部門名稱 loc varchar 50 部門所在地 新增4個部門 insert into dept id,dname,loc values 10,教學...