— 部門表
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);
– 需求1.查詢所有員工資訊。查詢員工編號,員工姓名,工資,職務名稱,職務描述
/* emp表查前 job表查後面兩個
*/ select
t1.id
, – 員工編號
t1.ename
, – 員工姓名
t1.salary
, – 工資
t2.jname
, – 職務名稱
t2.description
– 職務描述
from
emp t1,
job t2
where
t1.job_id
=t2.id
;
– 需求2.查詢員工編號,員工姓名,工資, 職務名稱,職務描述, 部門名稱,部門位置
/* emp_id emp_ename emp_bonus job_jname job_descripition dept_dname dept_loc
*/ 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.查詢員工姓名,工資, 工資等級
– emp_ename emp_bonus salarygrade中判斷
select
t1.ename
,
t1.salary
,
t2.grade
from
emp t1, salarygrade t2
where
t1.salary
between t2.losalary
and t2.hisalary
;
– 需求4.查詢員工姓名,工資,職務名稱,職務描述,部門名稱,部門位置,工資等級
– ename salary jname description dname loc salarydrade
select
t1.ename
,
t1.salary
,
t2.jname
,
t2.description
,
t3.dname
,
t3.loc
,
t4.grade
from
emp t1, job t2, dept t3, salarygrade t4
where t1.job_id
=t2.id
– 用了and連線就不用 ,
and t1.dept_id
=t3.id
and t1.salary
between t4.losalary
and t4.hisalary
;
– 需求5.查詢出部門編號、部門名稱、部門位置、部門人數
– dept iddept dname dept loc 使用子迴圈巢狀
select
t1.id, t1.
dname, t1.
loc, t2.total
from
dept t1,
(select dept_id ,count(id) total
from emp
group by dept_id) t2
where
t1.id= t2.dept_id ;
-- 需求6.查詢所有員工的姓名及其直接上級的姓名,沒有領導的員工也需要查詢
select
t1.ename, t1.
mgr,t2.
id,t2.
ename
from
emp t1 left join emp t2
on t1.mgr=t2.
id`;– 左連線 left join …on ….
Oracle的查詢 多表查詢中的一些概念
笛卡爾積 select from emp e,dept d 等值連線 select from emp e,dept d where e.deptno d.deptno 內連線 select from emp e inner join dept d on e.deptno d.deptno 查詢出所有...
綜合Vagrant的一些坑
1 mac上的virtualbox突然提示effctive uid is not root 直接在命令列下sudo執行virtualbox是可以開啟的,但是vagrant仍然無法執行,說明還是沒有許可權 解決方法是在命令列下輸入 for bin in virtualbox virtualboxvm ...
一些for迴圈案例
1 請在控制台輸出滿足如下條件的五位數 個位等於萬位 十位等於千位 個位 十位 千位 萬位 百位 2 請統計1 1000之間同時滿足如下條件的資料有多少個 對3整除餘2 對5整除餘3 對7整除餘2 3 一張紙的厚度大約是0.08mm,對折多少次之後能達到珠穆朗瑪峰的高度 8848.13公尺 4 計算...