事例データベース

  • サブクエリ
    は、CREATE TABLE EMP(
    EMPNO INT、
    ENAMEのVARCHAR(50)、
    仕事VARCHAR(50)、
    MGRマネージャINT、
    HIREDATEタイム雇用DATE、
    SALの給与DECIMAL(7,2)、
    COMMボーナスDECIMAL(7,2)、
    DEPTNO部署数のINT
    );

EMPのVALUES(7369、 'SMITH'、 'CLERK'、7902、 '1980年12月17日'、800、NULL、20)。INSERT INTO。
EMP値(7499、 'アレン'、 'SALESMAN'、7698、 '1981年2月20日'、1600,300,30)。INSERT INTO。
EMPのVALUES(7521、 'WARD'、 'SALESMAN'、7698、 '1981年2月22日'、1250,500,30)。INSERT INTO。
EMPのVALUES(7566、 'JONES'、 'MANAGER'、7839、 '1981年4月2日'、2975、NULL、20)。INSERT INTO。
EMPのVALUES(7654、 'MARTIN'、 'SALESMAN'、7698、 '1981年9月28日'、1250,1400,30)。INSERT INTO。
EMPのVALUES(7698、 'BLAKE'、 'MANAGER'、7839、 '1981年5月1日'、2850、NULL、30)。INSERT INTO。
EMP値にINSERT(7782、 'クラーク'、 'MANAGER'、7839、 '1981年6月9日'、2450、NULL、10);
EMPのVALUES(7788、 'SCOTT'、 'ANALYST'、7566、 '1987年4月19日'、3000、NULL、20)。INSERT INTO。
EMP値(7839、 '王'、「大統領、NULL、 '1981年11月17日'、5000、NULL、10)。INSERT INTO。
EMPのVALUES(7844、 'TURNER'、 'SALESMAN'、7698、 '1981年9月8日'、1500,0,30)。INSERT INTO。
EMPのVALUES(7876、 'ADAMS'、 'CLERK'、7788、 '1987年5月23日' 1100、NULL、20)。INSERT INTO。
EMPのVALUES(7900、 'JAMES'、 'CLERK'、7698、 '1981年12月3日'、950、NULL、30)。INSERT INTO。
EMPのVALUES(7902、 'FORD'、 'ANALYST'、7566、 '1981年12月3日'、3000、NULL、20)。INSERT INTO。
EMPのVALUES(7934、 'MILLER'、 'CLERK'、7782、 '1982年1月23日' 1300、NULL、10)。INSERT INTO。

表DEPTを作成する(
DEPTNO INT、
DNAME VARCHAR(14)、
LOC地点VARCHAR(13)
)。

DEPT値(10、 '会計'、 'NEW YORK')。INSERT INTO。
DEPT値にINSERT(20 'RESEARCH'、 'DALLAS')。
DEPT値にINSERT(30 'SALES'、 'CHICAGO')。
DEPT値(40、 'OPERATIONS'、 'BOSTON')。INSERT INTO。

-- 单行子查询(> < >= <= = <>)
	-- 查询出高于10号部门的平均工资的员工信息

-- 多行子查询(in  not in any all)
	-- 查询出比10号部门任何员工薪资高的员工信息

-- 多列子查询(实际使用较少)
	-- 和10号部门同名同工作的员工信息

-- select 后面接子查询	
	-- 获取员工的名字和部门的名字
	
-- from 后面接子查询
    -- 查询emp表中经理信息
	
-- where 后面接子查询	
	-- 薪资高于10号部门平均工资的所有员工信息
	
-- group by 后面接子查询
	-- 有哪些部门的平均工资高于30号部门的平均工资

	
-- 工资>JONES工资
SELECT ename,sal from emp where emp.sal>(SELECT sal from emp where emp.ename="JONES")
-- 查询与SCOTT同一个部门的员工
SELECT ename from emp where emp.deptno=(SELECT e.deptno from emp e where e.ename="scott" )
-- 工资高于30号部门所有人的员工信息
SELECT * from emp where sal>(SELECT SUM(sal) from emp where deptno=30)
-- 查询工作和工资与MARTIN完全相同的员工信息
SELECT * 
from emp e 
where e.job=(SELECT job from emp where ename="MARTIN") and e.sal=(SELECT sal from emp where ename="MARTIN")
-- 有两个以上直接下属的员工信息
SELECT * 
from emp e 
where e.empno=(SELECT mgr 
from emp  
HAVING (Count(emp.mgr))>3
)
-- 查询员工编号为7788的员工名称,员工工资,部门名称,部门地址
SELECT ename,sal,dname,loc 
from emp , dept 
where dept.deptno=emp.deptno and empno=7788

- SQL查询的综合案例

1. 查询出高于本部门平均工资的员工信息
SELECT DISTINCT e.*
from emp e JOIN emp m
where e.deptno=m.deptno and e.sal>(
SELECT AVG(e.sal) from emp e JOIN emp m where e.deptno=m.deptno)


2. 列出达拉斯加工作的人中,比纽约平均工资高的人
SELECT DISTINCT e.ename
from emp e JOIN dept d
where e.deptno=d.deptno and d.loc="DALLAS" 
and e.sal>(SELECT AVG(e.sal) from emp e where e.deptno=(
SELECT deptno from dept where dept.loc="NEW YORK" ))


3. 查询7369员工编号,姓名,经理编号和经理姓名
SELECT e.empno,e.ename,e.mgr,m.ename 
FROM emp e,emp m 
WHERE e.mgr = m.empno and e.empno=7369;


4. 查询出各个部门薪水最高的员工所有信息
select * 
from emp 
where sal in (
select max(sal) 
from emp 
group by deptno)

おすすめ

転載: blog.csdn.net/l15906593675/article/details/94738691
おすすめ