mysql練習(含答案)

點擊上方"Java學習之樂"關注我們

· 正 · 文 · 來 · 啦 ·

表結構

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中員工的詳細信息。

mysql練習(含答案)

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

mysql練習(含答案)

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

mysql練習(含答案)

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

mysql練習(含答案)

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

mysql練習(含答案)

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

mysql練習(含答案)

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

mysql練習(含答案)

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

mysql練習(含答案)

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

mysql練習(含答案)

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

mysql練習(含答案)

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

mysql練習(含答案)

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

mysql練習(含答案)

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

mysql練習(含答案)

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

mysql練習(含答案)

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

mysql練習(含答案)

多表查詢題目

  1. 返回擁有員工的部門名、部門號。
mysql練習(含答案)

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

mysql練習(含答案)

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

mysql練習(含答案)

or

mysql練習(含答案)

(沒有經理是否顯示)

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

mysql練習(含答案)

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

mysql練習(含答案)

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

mysql練習(含答案)

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

mysql練習(含答案)

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

mysql練習(含答案)

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

mysql練習(含答案)

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

mysql練習(含答案)

如果不包含自己

mysql練習(含答案)

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

mysql練習(含答案)

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

mysql練習(含答案)

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

mysql練習(含答案)

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

mysql練習(含答案)

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

mysql練習(含答案)

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

mysql練習(含答案)

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

mysql練習(含答案)

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

mysql練習(含答案)

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

mysql練習(含答案)

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

mysql練習(含答案)

單表查詢答案

#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');

看完本文有收穫?請轉發分享給更多人

關注[Java學習之樂 ]全棧開發工程師

瞭解更多知識關注【Java學習之樂】


分享到:


相關文章: