emp 员工表(empno 员工号/ename 员工姓名/job 工作/mgr 上级编号/hiredate 受雇日期/sal 薪金/comm 佣金/deptno 部门编号)

dept 部门表(deptno 部门编号/dname 部门名称/loc 地点)

----------------------------------------------------------emp表-------------------------------------------------------------


  1. DROP TABLE IF EXISTS `emp`;
  2. CREATE TABLE `emp` (
  3. `EMPNO` int(4) NOT NULL,
  4. `ENAME` varchar(10) DEFAULT NULL,
  5. `JOB` varchar(9) DEFAULT NULL,
  6. `MGR` int(4) DEFAULT NULL,
  7. `HIREDATE` date DEFAULT NULL,
  8. `SAL` int(7) DEFAULT NULL,
  9. `COMM` int(7) DEFAULT NULL,
  10. `DEPTNO` int(2) DEFAULT NULL,
  11. PRIMARY KEY (`EMPNO`),
  12. KEY `FK_DEPTNO` (`DEPTNO`),
  13. CONSTRAINT `FK_DEPTNO` FOREIGN KEY (`DEPTNO`) REFERENCES `dept` (`DEPTNO`)
  14. ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
  15. -- ----------------------------
  16. -- Records of emp
  17. -- ----------------------------
  18. INSERT INTO `emp` VALUES ('7369', 'SMITH', 'CLERK', '7902', '1980-12-17', '800', null, '20');
  19. INSERT INTO `emp` VALUES ('7499', 'ALLEN', 'SALESMAN', '7698', '1981-02-20', '1600', '300', '30');
  20. INSERT INTO `emp` VALUES ('7521', 'WARD', 'SALESMAN', '7698', '1981-02-22', '1250', '500', '30');
  21. INSERT INTO `emp` VALUES ('7566', 'JONES', 'MANAGER', '7839', '1981-04-02', '2975', null, '20');
  22. INSERT INTO `emp` VALUES ('7654', 'MARTIN', 'SALESMAN', '7698', '1981-09-28', '1250', '1400', '30');
  23. INSERT INTO `emp` VALUES ('7698', 'BLAKE', 'MANAGER', '7839', '1981-05-01', '2850', null, '30');
  24. INSERT INTO `emp` VALUES ('7782', 'CLARK', 'MANAGER', '7839', '1981-06-09', '2450', null, '10');
  25. INSERT INTO `emp` VALUES ('7788', 'SCOTT', 'ANALYST', '7566', '1987-04-19', '3000', null, '20');
  26. INSERT INTO `emp` VALUES ('7839', 'KING', 'PRESIDENT', null, '1981-11-17', '5000', null, '10');
  27. INSERT INTO `emp` VALUES ('7844', 'TURNER', 'SALESMAN', '7698', '1981-09-08', '1500', '0', '30');
  28. INSERT INTO `emp` VALUES ('7876', 'ADAMS', 'CLERK', '7788', '1987-05-23', '1100', null, '20');
  29. INSERT INTO `emp` VALUES ('7900', 'JAMES', 'CLERK', '7698', '1981-12-03', '950', null, '30');
  30. INSERT INTO `emp` VALUES ('7902', 'FORD', 'ANALYST', '7566', '1981-12-03', '3000', null, '20');
  31. INSERT INTO `emp` VALUES ('7934', 'MILLER', 'CLERK', '7782', '1982-01-23', '1300', null, '10');

--------------------------------------------------------dept表-------------------------------------------------


  1. DROP TABLE IF EXISTS `dept`;
  2. CREATE TABLE `dept` (
  3. `DEPTNO` int(2) NOT NULL,
  4. `DNAME` varchar(14) DEFAULT NULL,
  5. `LOC` varchar(13) DEFAULT NULL,
  6. PRIMARY KEY (`DEPTNO`)
  7. ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
  8. -- ----------------------------
  9. -- Records of dept
  10. -- ----------------------------
  11. INSERT INTO `dept` VALUES ('10', 'ACCOUNTING', 'NEW YORK');
  12. INSERT INTO `dept` VALUES ('20', 'RESEARCH', 'DALLAS');
  13. INSERT INTO `dept` VALUES ('30', 'SALES', 'CHICAGO');
  14. INSERT INTO `dept` VALUES ('40', 'OPERATIONS', 'BOSTON');

--------------------------------------------salgrade----------------------------------------


  1. DROP TABLE IF EXISTS `salgrade`;
  2. CREATE TABLE `salgrade` (
  3. `grade` int(11) NOT NULL DEFAULT '0',
  4. `losal` int(11) DEFAULT NULL,
  5. `hisal` int(11) DEFAULT NULL,
  6. PRIMARY KEY (`grade`)
  7. ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
  8. -- ----------------------------
  9. -- Records of salgrade
  10. -- ----------------------------
  11. INSERT INTO `salgrade` VALUES ('1', '700', '1200');
  12. INSERT INTO `salgrade` VALUES ('2', '1201', '1400');
  13. INSERT INTO `salgrade` VALUES ('3', '1401', '2000');
  14. INSERT INTO `salgrade` VALUES ('4', '2001', '3000');
  15. INSERT INTO `salgrade` VALUES ('5', '3001', '9999');

---------------------------------------------------------------练习-----------------------------------------------------------


  1. SELECT * from emp
  2. /*1-数据分组的重要函数: max、min、avg、sum、count*/
  3. SELECT ename,sal FROM emp WHERE sal= (SELECT max(sal) from emp )
  4. /*2-查询出工资高于平均工资的员工信息*/
  5. SELECT ename,job,sal from emp WHERE SAL>(SELECT avg(sal) from emp)
  6. /*查询出每个部门的平均工资和最高工资;*/
  7. SELECT avg(sal),max(sal),deptno from emp group by deptno
  8. /*查询出每个部门的每种岗位的平均工资和最低工资;*/
  9. SELECT avg(sal),min(sal),DEPTNO,job from emp group by deptno,job
  10. /*查询出平均工资低于2000的部门号和它的平均工资.*/
  11. SELECT avg(sal),deptno FROM emp GROUP BY DEPTNO having avg(sal)<2000
  12. SELECT avg(sal),deptno FROM emp GROUP BY DEPTNO having avg(sal)>2000 ORDER BY avg(sal)
  13. /*查询出每个员工的姓名、工资及其工资的级别*/
  14. SELECT e.ename,e.sal,s.grade from emp e,salgrade s WHERE e.sal BETWEEN s.losal AND s.hisal
  15. /*查询出某个员工的上级领导的姓名*/
  16. SELECT e1.ename,e2.ename from emp e1,emp e2 where e1.mgr=e2.empno
  17. /*询出工资比部门编号30的所有员工的工资高的员工的姓名、工资和部门编号*/
  18. SELECT ename,sal,deptno from emp where sal>all (SELECT sal from emp WHERE deptno=30)
  19. /*查询出与SMITH的部门和岗位完全相同的所有雇员*/
  20. SELECT * FROM emp WHERE (job,deptno)=(SELECT job ,deptno FROM emp WHERE ename='SMITH')
  21. /*查询出高于自己部门平均工资的员工的信息*/
  22. SELECT e1.ename,e1.sal FROM emp e1,(SELECT deptno,avg(sal) mysal FROM emp GROUP BY deptno) e2 WHERE e1.deptno=e2.deptno AND e1.sal>e2.mysal
  23. /*谁挣的钱的最多*/
  24. select ename, sal from emp where sal = (select max(sal) from emp);
  25. /*求部门人中那些人的薪水最高*/
  26. /*SELECT ename,DEPTNO,max(sal) from emp GROUP BY deptno;*/
  27. select ename, sal,emp.deptno
  28. from emp
  29. join (select max(sal) max_sal, deptno from emp group by deptno) t
  30. on (emp.sal =t.max_sal and emp.deptno =t.deptno)
  31. SELECT * FROM salgrade
  32. /*部门平均薪水的等级*/
  33. SELECT t.deptno,s.grade FROM salgrade s,
  34. (SELECT deptno,AVG(sal) avg from emp GROUP BY deptno) t
  35. WHERE t.avg between s.losal and s.hisal;
  36. select deptno,avg_sal,grade from
  37. (select deptno,avg(sal) avg_sal from emp group by deptno) t
  38. join salgrade s on (t.avg_sal between s.losal and s.hisal);
  39. /*那些人是经理人*/
  40. select ename from emp where empno in (select distinct mgr from emp);
  41. select distinct d.ename from emp e ,emp d where e.mgr=d.empno
  42. /*不用组函数求最高薪水*/
  43. select distinct sal
  44. from emp
  45. where sal not in
  46. (select distinct e1.sal from emp e1 join emp e2 on (e1.sal < e2.sal))
  47. /*平均薪水最高的部门编号*/
  48. SELECT deptno ,max(avg) FROM
  49. (SELECT avg(sal) avg,deptno FROM emp GROUP BY deptno)t
  50. /*平均薪水最高的部门名称*/
  51. SELECT * from dept
  52. SELECT d.deptno,d.dname,max(avg) FROM
  53. (SELECT avg(sal) avg,deptno FROM emp GROUP BY deptno) t,dept d
  54. WHERE t.deptno=d.deptno
  55. /*平均薪水的等级最低的部门名称*/
  56. SELECT t.dname,t.deptno,min(s.grade) grade,t.avg_sal FROM
  57. (SELECT avg(sal) avg_sal,e.deptno,d.dname FROM emp e,dept d WHERE e.deptno= d.deptno GROUP BY e.deptno)t
  58. join salgrade s on(t.avg_sal between s.losal and s.hisal);
  59. select dname, t1.deptno,grade,avg_sal from
  60. (
  61. select deptno, grade, avg_sal from
  62. (select deptno, avg(sal) avg_sal from emp group by deptno)t
  63. join salgrade s on(t.avg_sal between s.losal and s.hisal)
  64. )t1
  65. join dept on (t1.deptno=dept.deptno)
  66. where t1.grade=
  67. ( select min(grade) from(
  68. select deptno, grade, avg_sal from
  69. (select deptno, avg(sal) avg_sal from emp group by deptno)t
  70. join salgrade s on(t.avg_sal between s.losal and s.hisal)
  71. )m
  72. );
  73. /*比普通员工的最高薪水还要高的经理人*/
  74. select ename
  75. from emp
  76. where empno in (select distinct mgr from emp where mgr is not null) and sal >
  77. (select max(sal) from emp where empno not in (select distinct mgr from emp where mgr is not null))

oracle 基础表 mysql版的更多相关文章

  1. Oracle基础 表分区

    Oracle基础 表分区 一.表分区 (一)表分区的分类 1.范围分区(range) 2.散列分区(hash) 3.列表分区(list) 4.复合分区:范围-哈希(range-hash).范围-列表( ...

  2. Oracle基础表空间建立,以及练习

    Oracle的表空间创建,可以采用网页的https://127.0.0.1:1158/em来进入oracle的页面进行创建表空间. 利用plsqldev.exe程序在表空间里添加数据: 首先要在use ...

  3. oracle 基础表的选择

    基础表(Driving Table)是指被最先访问的表(通常以全表扫描的方式被访问). 根据优化器的不同, SQL语句中基础表的选择是不一样的. 如果你使用的是CBO (COST BASED OPTI ...

  4. (3)Oracle基础--表

    · 认识表 Oracle中的表都是存储在表空间中,具有以下特点:  <1> 数据的基本存储单元  <2> 二维结构 行:又称为‘记录’ 列:又称为‘字段或域’  <3&g ...

  5. (2)Oracle基础--表空间

    · 表空间概述 <1> 理解表空间 ① 表空间与数据库的关系: 表空间是数据库的逻辑存储空间,可以理解为在数据库中开辟的一块空间,用于存放数据库的对象. 一个数据库可以由多个表空间构成.O ...

  6. Oracle基础—表分区

    一:表分区的应用场景 用于管理包含大量数据的表. 二:表分区的优点 1.提高数据的可以性 2.减少管理负担 3.改善语句的性能 三:分区的方式:(区间分区.散列分区.列表分区.组合分区) 1.区间分区 ...

  7. Oracle 基础表查询

    --查询所有用户表的数据 SELECT * FROM ALL_TABLES WHERE OWNER='USER_NAME' --如果是用该用户登录使用以下语句: SELECT * FROM USER_ ...

  8. Oracle基础了解

    数据库: 关系型数据库 select * from 表名 非关系型数据库(做不到复杂查询) 以对象的形式进行存储 {"aaa":"ccc"}---键值对 ora ...

  9. Oracle 基础1

    oracle基础 表空间: Oracle数据库对数据的管理是基于表空间的概念来的, 各种数据的以及存储数据的优化, 实际上也是通过优化表空间来实现的 表空间分类: 永久表空间 用来存放表的数据, 视图 ...

随机推荐

  1. RelativeLayout-属性大全

    // 相对于给定ID控件 <!--将该控件的底部置于给定ID的控件之上--> android:layout_above <!--将该控件的底部置于给定ID的控件之下--> an ...

  2. int android.support.v7.widget.RecyclerView$ViewHolder.mItemViewType' on a null.....

    Android.support.v7.widget.RecyclerView$ViewHolder.mItemViewType' on a null..空指针问题,费劲心思才找到报空指针的原因: 代码 ...

  3. MFC中对话框的各种消息触发时间

    小结:WM_CREATE是所有窗口都能响应的消息,表明本窗口已经创建完毕.可以安全的使用这个窗口了,例如在它上面画控件等等.这个状态肯定是在调用ShowWindows()显示窗口之前.WM_WM_IN ...

  4. COGS 163 [USACO Mat07] 牛语

    COGS 163 [USACO Mat07] 牛语 输入文件:latin.in   输出文件:latin.out   简单对比 时间限制:1 s   内存限制:128 MB 奶牛们听说猪发明了一种秘密 ...

  5. 洛谷 P1000 超级玛丽游戏

    P1000 超级玛丽游戏 题目背景 本题是洛谷的试机题目,可以帮助了解洛谷的使用. 建议完成本题目后继续尝试P1001.P1008. 题目描述 超级玛丽是一个非常经典的游戏.请你用字符画的形式输出超级 ...

  6. android插件式开发资料整理

    1.DL : Apk动态载入框架 2.android中的动态载入机制

  7. hdu-3642--Get The Treasury-线段树求面积并

    求空间中叠加3次及3次以上的体积. 由于|z|<=500.所以直接把z轴剥离出来1000层. 然后对于每一层进行线段树求面积并. #include<stdio.h> #include ...

  8. win10系统64位安装git后右键运行git bash here生成一个mintty.exe.stackdump文件后闪退解决方案

    在其他win10电脑上复制了一个null.sys文件,替换C:\Windows\System32\drivers\null.sys,搞定.

  9. C# 映射

    public class Myclass1 { private int m_Count = 100; public string love{get;set;} public int Count { g ...

  10. python3 pygame 坦克自动移动

    让坦克自动跑起来 这里需要一个坦克的图. 放到与脚本同一目录. 好,我们就让这个坦克自动跑. 下面上代码: # !/usr/bin/env python # -*- coding:utf-8 -*- ...