MySql多表查詢練習(2)
阿新 • • 發佈:2018-12-22
目錄
每日一道sql題,回顧知識,保持感覺
一、建表語句
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’); CREATE TABLE emp( empno INT PRIMARY KEY, ename VARCHAR(10), job VARCHAR(9), mgr INT, hiredate DATE, sal DOUBLE, comm DOUBLE, deptno INT REFERENCES dept); 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); 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、返回擁有 員工 的 部門名 、部門號
SELECT
e.ename,d.dname,d.deptno
FROM
emp e
LEFT OUTER JOIN
dept d
ON
e.deptno = d.deptno
2、工資水平多於smith的員工資訊
SELECT
e1.*
FROM
emp e1
WHERE
e1.sal >
(SELECT e2.sal
FROM
emp e2
WHERE
LOWER(e2.ename) ='smith');
3、返回員工和所屬上司的姓名
SELECT e1.ename 僱員,e2.ename 上司 FROM emp e1 LEFT OUTER JOIN emp e2 ON e1.mgr = e2.empno
4、返回僱員的僱傭日期早於其上司僱傭日期的員工及其上司姓名
SELECT e1.ename 僱員,e2.ename 上司
FROM
emp e1
INNER JOIN
emp e2
ON
e1.mgr = e2.empno
AND
e1.hiredate < e2.hiredate