多表查詢練習

2022-10-09 05:06:08 字數 3593 閱讀 5245

-- 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,教學...