– 部門表
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,『教學部』,『西安』),
(20,『學工部』,『上海』),
(30,『銷售部』,『廣州』),
(40,『財務部』,『深圳』);
– 職務表,職務名稱,職務描述
create table job (
id int primary key,
jname varchar(20),
description varchar(50)
);– 新增4個職務
insert into job (id, jname, description) values
(1, 『董事長』, 『管理整個公司,接單』),
(2, 『經理』, 『管理部門員工』),
(3, 『銷售員』, 『向客人推銷產品』),
(4, 『文員』, 『使用辦公軟體』);
– 員工表
create table emp (
id int primary key, – 員工id
ename varchar(50), – 員工姓名
job_id int, – 職務id
mgr int , – 上級領導
joindate date, – 入職日期
salary decimal(7,2), – 工資
bonus decimal(7,2), – 獎金
dept_id int, – 所在部門編號
constraint emp_jobid_ref_job_id_fk foreign key (job_id) references job (id),
constraint emp_deptid_ref_dept_id_fk foreign key (dept_id) references dept (id)
);– 新增員工
insert into emp(id,ename,job_id,mgr,joindate,salary,bonus,dept_id) values
(1001,『高圓圓』,4,1004,『2000-12-17』,『8000.00』,null,20),
(1002,『趙又廷』,3,1006,『2001-02-20』,『16000.00』,『3000.00』,30),
(1003,『文章』,3,1006,『2001-02-22』,『12500.00』,『5000.00』,30),
(1004,『馬伊琍』,2,1009,『2001-04-02』,『29750.00』,null,20),
(1005,『姚笛』,4,1006,『2001-09-28』,『12500.00』,『14000.00』,30),
(1006,『王寶強』,2,1009,『2001-05-01』,『28500.00』,null,30),
(1007,『馬蓉』,2,1009,『2001-09-01』,『24500.00』,null,10),
(1008,『宋喆』,4,1004,『2007-04-19』,『30000.00』,null,20),
(1009,『黃曉明』,1,null,『2001-11-17』,『50000.00』,null,10),
(1010,『克勞澤』,3,1006,『2001-09-08』,『15000.00』,『0.00』,30),
(1011,『裡皮』,4,1004,『2007-05-23』,『11000.00』,null,20),
(1012,『黃渤』,4,1006,『2001-12-03』,『9500.00』,null,30),
(1013,『楊過』,4,1004,『2001-12-03』,『30000.00』,null,20),
(1014,『小龍女』,4,1007,『2002-01-23』,『13000.00』,null,10);
– 工資等級表
create table salarygrade (
grade int primary key, – 級別
losalary int, – 最低工資
hisalary int – 最高工資
);– 新增5個工資等級
insert into salarygrade(grade,losalary,hisalary) values
(1,7000,12000),
(2,12010,14000),
(3,14010,20000),
(4,20010,30000),
(5,30010,99990);
select *from dept;
select *from emp;
select *from job;
select *from salarygrade;
– 需求:
– 1.查詢所有員工資訊。查詢員工編號,員工姓名,工資,職務名稱,職務描述
select
t1.id
, – 員工編號
t1.ename
, – 員工姓名
t1.salary
,-- 工資
t2.jname
, – 職務名稱
t2.description
– 職務描述
from
emp t1, job t2
where
t1.job_id
= t2.id
– 2.查詢員工編號,員工姓名,工資,職務名稱,職務描述,部門名稱,部門位置
select
t1.id
, – 員工編號
t1.ename
, – 員工姓名
t1.salary
,-- 工資
t2.jname
, – 職務名稱
t2.description
, – 職務描述
t3.dname
, – 部門名稱
t3.loc
– 部門位置
from
emp t1, job t2,dept t3
where
t1.job_id
= t2.id
and t1.dept_id
= t3.id
;
– 3.查詢員工姓名,工資,工資等級
select
e.ename
,
e.salary
,
s.*from emp e, salarygrade s
where e.salary
between s.losalary
and s.hisalary
;
– 4.查詢員工姓名,工資,職務名稱,職務描述,部門名稱,部門位置,工資等級
select
e.ename
,
e.salary
,
j.jname
,
j.description
,
d.dname
,
d.loc
,
s.grade
from
emp e,job j,dept d,salarygrade s
where
e.job_id
= j.id
and e.dept_id
= d.id
and e.salary
between s.losalary
and s.hisalary
;
5.查詢出部門編號、部門名稱、部門位置、部門人數
– 分析:1>部門編號、部門名稱、部門位置dept表 部門人數 emp表
– 2>使用分組查詢,按照emp.dept_id完成分組,查詢count(id)
– 3>使用子查詢將第2部的查詢結果和dept表進行關聯查詢.
select
t1.id
,t1.dname
,t1.loc
, t2.total
from
dept t1,
(select
dept_id,count(id) total
from
empgroup by dept_id) t2
where t1.id
= t2.dept_id;
– 6.查詢所有員工的姓名及其直接上級的姓名,沒有領導的員工也需要查詢
分析:1>姓名 emp , 直接上級的姓名emp
emp表的id和mgr是自關聯
2>條件:emp.id=emp.mgr
3>查詢左表的所有資料和交集資料使用左外連線查詢.
select
t1.ename,
t1.mgr,
t2.id
,
t2.ename
from emp t1
left join emp t2
on t1.mgr
= t2.id
;
pl sql多表查詢練習題01
1,多表連線查詢時,若兩個表有同名的列,必須使用表的別名對列名進行引用,否則出錯!2,查詢公司員工的last name,department name,city select last name,department name,city from departments s,employees e,...
pl sql多表查詢練習題02
1.顯示所有員工的姓名,部門號和部門名稱 select last name,department id,department name from employees e,departments d where e.department id d.department id select last n...
多表連線sql語句 練習題
等值連線 查詢所有員工的員工編號,姓名,部門編號,部門名稱,部門位址 select empno,emp.deptno,dname,loc from emp,dept where emp.deptno dept.deptno 寫乙個查詢,顯示所有工作在chicago並且獎金不為空的員工姓名,工作地點,...