mysql練習題(含答案)

表結構

DROP DATABASE IF EXISTS test1;

CREATE DATABASE test1;

USE test1;

##部門表

#DROP IF EXISTS TABLE DEPT;

CREATE TABLE DEPT(

DEPTNO int PRIMARY KEY,##部門編號

DNAME VARCHAR(14) , ##部門名稱

LOC VARCHAR(13) ##部門地址

) ;

INSERT INTO DEPT VALUES (10,'ACCOUNTING','NEW YORK');

INSERT INTO DEPT VALUES (20,'RESEARCH','DALLAS');

INSERT INTO DEPT VALUES (30,'SALES','CHICAGO');

INSERT INTO DEPT VALUES (40,'OPERATIONS','BOSTON');

##員工表

#DROP IF EXISTS TABLE EMP;

CREATE TABLE EMP(

EMPNO int PRIMARY KEY, #員工編號

ENAME VARCHAR(10), #員工姓名

JOB VARCHAR(9), #員工工作

MGR int, #員工直屬領導編號

HIREDATE DATE, #入職時間

SAL double, #工資

COMM double, #獎金

DEPTNO int #對應dept表的外鍵

);

## 添加 部門 和 員工 之間的主外鍵關系

ALTER TABLE EMP ADD CONSTRAINT FOREIGN KEY EMP(DEPTNO) REFERENCES DEPT (DEPTNO);

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 EMP VALUES(7521,'WARD','SALESMAN',7698,'1981-02-22',1250,500,30);

INSERT INTO EMP VALUES(7566,'JONES','MANAGER',7839,'1981-04-02',2975,NULL,20);

INSERT INTO EMP VALUES(7654,'MARTIN','SALESMAN',7698,'1981-09-28',1250,1400,30);

INSERT INTO EMP VALUES(7698,'BLAKE','MANAGER',7839,'1981-05-01',2850,NULL,30);

INSERT INTO EMP VALUES(7782,'CLARK','MANAGER',7839,'1981-06-09',2450,NULL,10);

INSERT INTO EMP VALUES(7788,'SCOTT','ANALYST',7566,'1987-07-03',3000,NULL,20);

INSERT INTO EMP VALUES(7839,'KING','PRESIDENT',NULL,'1981-11-17',5000,NULL,10);

INSERT INTO EMP VALUES(7844,'TURNER','SALESMAN',7698,'1981-09-08',1500,0,30);

INSERT INTO EMP VALUES(7876,'ADAMS','CLERK',7788,'1987-07-13',1100,NULL,20);

INSERT INTO EMP VALUES(7900,'JAMES','CLERK',7698,'1981-12-03',950,NULL,30);

INSERT INTO EMP VALUES(7902,'FORD','ANALYST',7566,'1981-12-03',3000,NULL,20);

INSERT INTO EMP VALUES(7934,'MILLER','CLERK',7782,'1981-01-23',1300,NULL,10);

#工資等級表

#DROP IF EXISTS TABLE SALGRADE;

CREATE TABLE SALGRADE(

GRADE int, #等級

LOSAL double, #最低工資

HISAL double ); #最高工資

INSERT INTO SALGRADE VALUES (1,700,1200);

INSERT INTO SALGRADE VALUES (2,1201,1400);

INSERT INTO SALGRADE VALUES (3,1401,2000);

INSERT INTO SALGRADE VALUES (4,2001,3000);

INSERT INTO SALGRADE VALUES (5,3001,9999);

單表查詢題目

1. 查找部門30中員工的詳細信息。

2.找出從事clerk工作的員工的編號、姓名、部門號。

3. 檢索出獎金多于基本工資的員工信息。

4.檢索出獎金多于基本工資60%的員工信息。

5.找出10部門的經理、20部門的職員的員工信息。

6.找出10部門的經理、20部門的職員或者既不是經理也不是職員但是工資高于2000元的員工信息。

7.找出獲得獎金的員工的工作。

8.找出獎金少于100或者沒有獲得獎金的員工的信息。

9.找出姓名以A、B、S開始的員工信息。

10.找到名字長度為6個字符的員工信息。

11.名字中不包含R字符的員工信息。

12.返回員工的詳細信息并按姓名排序。

13.返回員工的信息并按工作降序工資升序排列。

14.計算員工的日薪(按30天)。

15. 找出姓名中包含A的員工信息。

多表查詢題目

返回擁有員工的部門名、部門號。

2.工資水平多于smith的員工信息。

3.返回員工和所屬經理的姓名。

or

(沒有經理是否顯示)

4.返回雇員的雇傭日期早于其經理雇傭日期的員工及其經理姓名

5. 返回員工姓名及其所在的部門名稱。

6. 返回從事clerk工作的員工姓名和所在部門名稱。

7. 返回部門號及其本部門的最低工資。

8. 返回銷售部(sales)所有員工的姓名。

9.返回工資水平多于平均工資的員工。

10. 返回與SCOTT從事相同工作的員工。

如果不包含自己

11.返回與30部門員工工資水平相同的員工姓名與工資。

12.返回工資高于30部門所有員工工資水平的員工信息。

13.返回部門號、部門名、部門所在位置及其每個部門的員工總數。

14. 返回員工的姓名、所在部門名及其工資。

15.返回員工的詳細信息。(包括部門名)

16.返回員工工作及其從事此工作的最低工資。

17.計算出員工的年薪,并且以年薪排序。

18.返回工資處于第四級別的員工的姓名。

19.返回工資為二等級的職員名字、部門所在地、和二等級的最低工資和最高工資

20.工資等級多于smith的員工信息。

單表查詢答案

#1、查找部門30中員工的詳細信息。

select * from emp where deptno = 30;

#2、找出從事clerk工作的員工的編號、姓名、部門號。

select empno,ename,deptno from emp where job = 'clerk';

#3、檢索出獎金多于基本工資的員工信息。

select * from emp where comm > sal;

#4、檢索出獎金多于基本工資60%的員工信息。

select * from emp where comm > sal * 0.6;

#5、找出10部門的經理、20部門的職員 的員工信息。

select * from emp where deptno = 10 and job='MANAGER' or deptno = 20 and job = 'CLERK';

#6、找出10部門的經理、20部門的職員 或者既不是經理也不是職員但是工資高于2000元的員工信息。

select * from emp

where deptno = 10 and job='MANAGER'

or deptno = 20 and job = 'CLERK'

or job!='MANAGER' and job != 'CLERK' and sal > 2000 ;

## job not in ('MANAGER','CLERK')

#7、找出獲得獎金的員工的工作。

select * from emp where comm > 0;

#8、找出獎金少于100或者沒有獲得獎金的員工的信息。

select * from emp where comm < 100 or comm is null;

#9、找出姓名以A、B、S開始的員工信息。

select * from emp where ename like 'A%' or ename like 'B%' or ename like 'S%';

#10、找到名字長度為6個字符的員工信息。

select * from emp where length(ename) = 6;

#select * from emp where ename like '______';

#11、名字中不包含R字符的員工信息。

select * from emp where ename not like '%R%';

#12、返回員工的詳細信息并按姓名排序。

select * from emp order by ename asc;

#13、返回員工的信息并按工作降序工資升序排列。

select * from emp order by job desc , sal asc;

#14、計算員工的日薪(按30天)。

select ename,sal/30 as '日薪' from emp;

select ename,truncate(sal/30,2) '日薪' from emp;

#15、找出姓名中包含A的員工信息。

select * from emp where ename like '%A%';

多表查詢答案

#1、返回擁有員工的部門名、部門號。

select distinct d.dname, d.deptno from dept d,emp e where d.deptno = e.deptno;

#2、工資水平多于smith的員工信息。

select *from emp where sal > (select sal from emp where ename = 'smith');

#3、返回員工和所屬經理的姓名。

select e.ename,m.ename from emp e

left outer join emp m on e.mgr = m.empno;

select e.ename ,(select m.ename from emp m where m.empno = e.mgr) ename from emp e;

select e.ename , m.ename from emp e , emp m where e.mgr = m.empno;

#4、返回雇員的雇傭日期早于其經理雇傭日期的員工及其經理姓名。

select e.ename,m.ename from emp e

inner join emp m on e.mgr = m.empno

where e.hiredate < m.hiredate;

select e.ename,m.ename from emp e,emp m

where e.mgr=m.empno

and e.hiredate < m.hiredate;

#5、返回員工姓名及其所在的部門名稱。

select e.ename,d.dname from emp e , dept d where e.deptno = d.deptno;

#6、返回從事clerk工作的員工姓名和所在部門名稱。

select e.ename,d.dname

from emp e , dept d

where e.deptno = d.deptno and e.job = 'CLERK';

#7、返回部門號及其本部門的最低工資。

select deptno ,min(sal) sal

from emp

group by deptno

#8、返回銷售部(sales)所有員工的姓名。

select e.ename from emp e,dept d

where e.deptno = d.deptno and d.dname = 'sales';

select ename from emp where deptno=(select deptno from dept where dname='sales');

#9、返回工資水平多于平均工資的員工。

select * from emp e

where e.sal > (select avg(sal) from emp);

#10、返回與SCOTT從事相同工作的員工。

select * from emp

where job = (select job from emp where ename = 'scott');

select e1.* from emp e1 , (select empno,job from emp where ename = 'scott') e2

where e1.job = e2.job and e1.empno != e2.empno;

#11、返回與30部門員工工資水平相同的員工姓名與工資。

select ename,sal from emp

where sal in (select sal from emp where deptno = 30);

#12、返回工資高于30部門所有員工工資水平的員工信息。

select * from emp

where sal > all(select sal from emp where deptno = 30);

select * from emp

where sal > (select max(sal) from emp where deptno = 30);

#13、返回部門號、部門名、部門所在位置及其每個部門的員工總數。

select dept.deptno,dept.dname,dept.loc,count(emp.deptno) number from dept,emp

where dept.deptno = emp.deptno

group by emp.deptno;

#14、返回員工的姓名、所在部門名及其工資。

select ename,dname,sal from emp ,dept

where emp.deptno = dept.deptno;

#15、返回員工的詳細信息。(包括部門名)

select e.* , d.dname from emp e, dept d

where e.deptno = d.deptno;

#16、返回員工工作及其從事此工作的最低工資。

select job , min(sal) sal from emp

group by job

#17、計算出員工的年薪,并且以年薪排序。

select ename, sal * 12 as ySalary from emp order by ySalary;

#18、返回工資處于第四級別的員工的姓名。

select ename,sal from emp e ,salgrade s

where e.sal >= s.losal and e.sal <= s.hisal

and s.grade = 4;

select emp.ename,emp.sal from

emp ,(select losal,hisal from salgrade where grade=4) g

where emp.sal between g.losal and g.hisal;

#19、返回工資為二等級的職員名字、部門所在地、和二等級的最低工資和最高工資

select ename ,dname ,sal ,losal,hisal from emp,dept,salgrade

where emp.deptno = dept.deptno and grade = 2

and sal >= losal and sal < hisal;

#20.工資等級多于smith的員工信息。

select grade from salgrade s ,emp e

where s.losal < e.sal and s.hisal > e.sal and e.ename = 'smith';

select e.* from emp e, salgrade s

where s.hisal < e.sal and s.grade = 1;

select e.* from emp e, salgrade s

where s.hisal < e.sal and s.grade = (select grade from salgrade s ,emp e

where s.losal < e.sal and s.hisal > e.sal and e.ename = 'smith');

?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 228,119評論 6 531
  • 序言:濱河連續發生了三起死亡事件,死亡現場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機,發現死者居然都...
    沈念sama閱讀 98,382評論 3 415
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事。” “怎么了?”我有些...
    開封第一講書人閱讀 176,038評論 0 373
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 62,853評論 1 309
  • 正文 為了忘掉前任,我火速辦了婚禮,結果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當我...
    茶點故事閱讀 71,616評論 6 408
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發上,一...
    開封第一講書人閱讀 55,112評論 1 323
  • 那天,我揣著相機與錄音,去河邊找鬼。 笑死,一個胖子當著我的面吹牛,可吹牛的內容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 43,192評論 3 441
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 42,355評論 0 288
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當地人在樹林里發現了一具尸體,經...
    沈念sama閱讀 48,869評論 1 334
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 40,727評論 3 354
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發現自己被綠了。 大學時的朋友給我發了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 42,928評論 1 369
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 38,467評論 5 358
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質發生泄漏。R本人自食惡果不足惜,卻給世界環境...
    茶點故事閱讀 44,165評論 3 347
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 34,570評論 0 26
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 35,813評論 1 282
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 51,585評論 3 390
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 47,892評論 2 372

推薦閱讀更多精彩內容