MySql多表查询练习(2)

版权声明: https://blog.csdn.net/pbrlovejava/article/details/82534812

目录

一、建表语句

 二、题目

1、返回拥有 员工 的 部门名 、部门号

2、工资水平多于smith的员工信息

 3、返回员工和所属上司的姓名

4、返回雇员的雇佣日期早于其上司雇佣日期的员工及其上司姓名


每日一道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

猜你喜欢

转载自blog.csdn.net/pbrlovejava/article/details/82534812
今日推荐