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

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

工资 = 薪金 + 佣金

题目:

  1、列出至少有一个员工的所有部门。

  2、列出薪金比“SMITH”多的所有员工。(大于最大薪水SMITH员工)

  3、列出所有员工的姓名及其直接上级的姓名。

  4、列出受雇日期早于其直接上级的所有员工。

  5、列出部门名称和这些部门的员工信息,包括那些没有员工的部门。

  6、列出所有job为“CLERK”(办事员)的姓名及其部门名称。

  7、列出最低薪金大于1500的各种工作。

  8、列出在部门“SALES”(销售部)工作的员工的姓名,假定不知道销售部的部门编号。

  9、列出薪金高于公司平均薪金的所有员工。

  10、列出与“SCOTT”从事相同工作的所有员工。

  11、列出薪金等于部门30中员工的薪金的所有员工的姓名和薪金。

  12、列出薪金高于在部门30工作的所有员工的薪金的员工姓名和薪金。

  13、列出在每个部门工作的员工数量、平均工资和平均服务期限。

  14、列出所有员工的姓名、部门名称和工资。

  15、列出从事同一种工作但属于不同部门的员工的一种组合。

  16、列出所有部门的详细信息和部门人数。

  17、列出各种工作的最低工资。

  18、列出各个部门的MANAGER(经理)的最低薪金(job为MANAGER)。

  19、列出所有员工的年工资,按年薪从低到高排序。

解答:

第一步:建表:

create table dept(

       deptno number(10) primary key,

       dname varchar2(30),

       loc varchar2(30)

)

commit;

drop table emp;

drop table dept;

create table emp(

       empno number(10) primary key,

       ename varchar2(30),

       job varchar2(30),

       mgr varchar2(30),

       hiredate number(10),

       sal number(10),

       comm number(10),

       deptno number(10),

       foreign key(deptno) references dept(deptno)

)

第二步:向各表中插入数据:

insert into dept values(1, '技术部' ,'南泥湾');

insert into dept values(2, 'SALES' ,'深圳市');

insert into dept values(3, '事业部' ,'北京市');

insert into dept values(4, '服务部' ,'延安');

insert into dept values(5, '生产部' ,'南京市');

insert into dept values(6, '宣传部' ,'上海市');

insert into dept values(7, '打杂部' ,'广州市');

insert into dept values(8, '司令部' ,'重庆市');

insert into dept values(9, '卫生部' ,'长沙市');

insert into dept values(10, '文化部' ,'武冈市');

insert into dept values(11, '娱乐部' ,'纽约');

insert into dept values(12, '管理部' ,'伦敦');

insert into dept values(13, '行政部' ,'天津市');

select * from dept

insert into emp values(1, '关羽羽', 'CLERK' ,'刘备备', 20011109, 2000, 1000, 3);

insert into emp values(2, 'SMITH', 'CLERK' ,'刘备备', 20120101, 2000, 800, 6);

insert into emp values(3, '刘备备', 'MANAGER' ,'宋祖英', 20080808, 9000, 4000, 3);

insert into emp values(4, 'TOM', 'ENGINEER' ,'Steve', 20050612, 3000, 1000, 1);

insert into emp values(5, 'Steve', 'MANAGER' ,'宋祖英', 20110323, 80000, 9000, 1);

insert into emp values(6, '张飞飞', 'CLERK' ,'刘备备', 20101010, 2000, 1000, 3);

insert into emp values(7, 'SCOTT', 'CLERK' ,'刘备备', 20071204, 2000, 1000, 3);

insert into emp values(8, '宋祖英', 'Boss' ,'无', 20060603, 2000, 1000, 8);

insert into emp values(9, '曹仁人', 'SALESMAN' ,'曹操操', 20120130, 2000, 1000, 2);

insert into emp values(10, '曹操操', 'MANAGER' ,'宋祖英',20090815, 2000, 1000, 2);

insert into emp values(11, '酱油哥', 'HAPI' ,'XXX',20090215, 3, 1, 2);

第三步:操作

1、列出至少有一个员工的所有部门。

select deptno,dname,loc from dept

where deptno in (select deptno from emp);

2、列出薪金比“SMITH”多的所有员工。(大于最大薪水SMITH员工)

select empno,ename,sal from emp

where emp.sal>(select sal from emp emp1 where emp1.ename = 'SMITH')

3、列出所有员工的姓名及其直接上级的姓名。

select a.ename,b.ename from emp a,emp b

where a.mgr=b.ename;

4、列出受雇日期早于其直接上级的所有员工。

select a.empno, a.ename from emp a, emp b

where a.mgr=b.ename and a.hiredate<b.hiredate;

5、列出部门名称和这些部门的员工信息,包括那些没有员工的部门。

select dept.dname,emp.* from dept left join emp on dept.deptno = emp.deptno;

6、列出所有job为“CLERK”(办事员)的姓名及其部门名称。

select emp.ename,emp.job,dept.dname from emp,dept

where emp.job = 'CLERK' and emp.deptno = dept.deptno;

7、列出最低薪金大于1500的各种工作。

select job from emp

group by job

having min(sal)>1500;

8、列出在部门“SALES”(销售部)工作的员工的姓名,假定不知道销售部的部门编号。

select emp.ename from emp 

where emp.deptno = 

      (select deptno from dept 

       where dept.dname = 'SALES');

9、列出薪金高于公司平均薪金的所有员工。

select * from emp

where emp.sal > (select avg(sal) from emp)

10、列出与“SCOTT”从事相同工作的所有员工。

select * from emp

where emp.job = 

(select job from emp e 

 where e.ename = 'SCOTT');

 

11、列出薪金等于部门3中员工的薪金的所有员工的姓名和薪金。

select ename,sal from emp

where sal in (select sal from emp where deptno=3);

12、列出薪金高于在部门3工作的所有员工的薪金的员工姓名和薪金。

select ename,sal from emp

where sal > (select max(sal) from emp where deptno=3);

13、列出在每个部门工作的员工数量、平均工资和平均服务期限。

--********由于平均服务期限无法考证求出,故只列出在每个部门工作的员工数量、平均工资。********--

select deptno,count(empno),avg(sal) from emp group by deptno

14、列出所有员工的姓名、部门名称和工资。

select emp.ename as 姓名, dept.dname as 部门, emp.sal+emp.comm as 工资 from emp,dept

where dept.deptno = emp.deptno;

15、列出从事同一种工作但属于不同部门的员工的一种组合。

select a.ename, b.ename, a.job, b.job, a.deptno, b.deptno from emp a,emp b

where a.job=b.job and a.deptno$amp;

16、列出所有部门的详细信息和部门人数。

select dept.*,(select count(*) from emp where dept.deptno = emp.deptno) as pop from dept;

17、列出各种工作的最低工资。

select job,min((nvl(comm,0)+sal)) from emp group by job

18、列出各个部门的MANAGER(经理)的最低薪金(job为MANAGER)。

select emp.deptno, min(sal) from emp,dept 

where job = 'MANAGER'

group by emp.deptno

19、列出所有员工的年工资,按年薪从低到高排序。

select ename,(nvl(comm,0)+sal)*12 年薪 from emp

oracle员工表和部门表基本操作的更多相关文章

  1. 4.windows和Linux下创建oracleusername表空间,表,插入数据,用户管理表等操作

    进入超级管理员,运行下面命令 Window下创建数据库.表空间,用户,插入数据等操作 -- 01 创建表空间 -- 注意表空间的路径 依据实际安装环境进行调整 CREATE TABLESPACE ts ...

  2. MySQL 约束、表连接、表关联、索引

    一.外键: 1.什么是外键 2.外键语法 3.外键的条件 4.添加外键 5.删除外键 1.什么是外键: 主键:是唯一标识一条记录,不能有重复的,不允许为空,用来保证数据完整性. 外键:是另一表的唯一性 ...

  3. python 全栈开发,Day62(外键的变种(三种关系),数据的增删改,单表查询,多表查询)

    一.外键的变种(三种关系) 本节重点: 如何找出两张表之间的关系 表的三种关系 一.介绍 因为有foreign key的约束,使得两张表形成了三种了关系: 多对一 多对多 一对一 二.重点理解如果找出 ...

  4. mysq更新(六) 单表查询 多表查询

      本节重点: 单表查询 语法: 一.单表查询的语法 SELECT 字段1,字段2... FROM 表名 WHERE 条件 GROUP BY field HAVING 筛选 ORDER BY fiel ...

  5. Mysql优化原则_小表驱动大表IN和EXISTS的合理利用

    //假设一个for循环 ; $i < ; $i++) { ; $i < ; $j++) { } } ; $i < ; $i++) { ; $i < ; $j++) { } } ...

  6. Hive建表和内外部表的使用

    原文链接: https://www.toutiao.com/i6766784274965201415 一.普通建表方式 create table stu_info( id int, name stri ...

  7. Oracle PL/SQL块 多表查询(emp员工表、dept部门表、salgrade工资等级表)

    范例: 查询每个员工的编号,姓名,职位,工资,工资等级,部门名称 ●确定要使用的数据表 |- emp表:员工的编号.姓名.职位.工资 |- salgrade表:工资等级 |- dept表:部门名称 ● ...

  8. 员工部门表综合查询SQL

    --数据库的表设计如下: --部门:部门编号,部门名称,地址: --员工:员工编号,员工名字,职务,管理编号,入职日期,薪资,奖金,部门编号: --创建部门表: CREATE TABLE dept( ...

  9. java数据库 JDBC操作MySQL数据库常用API 部门表和员工表 创建表 添加数据 查询数据

    package com.swift.department; import java.sql.Connection; import java.sql.PreparedStatement; import ...

随机推荐

  1. 1.17 Python基础知识 - 迭代器和生成器初识

    可循环迭代的对象称为可迭代对象,迭代器和生成器函数是可迭代对象. 列表解析表达式:可以简单高效处理一个可迭代对象,并生成结果列表 示例代码: [ i ** 2 for i in range(10) ] ...

  2. 提高IIS的FTP安全性 管理员的九阴真经

    提高IIS的FTP安全性 管理员的九阴真经 <九阴真经>是很多武林高手蒙昧以求的武林秘籍,在系统管理员这个武林中也有很多类似<九阴真经>一样的秘籍.在这里就向大家介绍一下有关提 ...

  3. Maven学习笔记5

    Web项目的部署: web部署 配置步骤 生成项目方式不是quickstart,而是webapp. 默认目录结构,需要修改配置. 重新配置project facets和java compiler.并重 ...

  4. 记Bootstrap Table两种渲染方式

    这里主要区别两种Bootstrap Table的数据渲染方式,一.属性渲染方式,二.JS渲染方式 工作直接接手前人的,之前都直接在table标签上渲染属性,后面因为项目需要,同一页面的表格,需要申请不 ...

  5. ASP.NET路径解惑

    对于ASP.NET的路径问题,一直都是云里雾里,没有去详细的理解,今天正好可以梳理一下它们之间的关系和使用方法.而若想明白路径的表示方式的使用方法和区别以及注意事项可以通过下面的几个概念来进一步加深: ...

  6. ANSI转UTF-8中文无乱码解决方案

    近期做的项目需要使用Doxygen生成文档,由于前期代码不是本人完成,他使用的是ANSI格式的文件,后来我用Notepad++写其他文件时,默认保存为UTF-8 无BOM编码格式,因此整个项目文件中既 ...

  7. php课程 11-37 类和对象的关系是什么

    php课程 11-37 类和对象的关系是什么 一.总结 一句话总结:类生成对象,对象是类的实例化,一定是先有类,后有对象,一定是先有标准,再有个体. 1.oop的三大优势是什么? 重用性,灵活性.扩展 ...

  8. Altium Designer中死铜的问题

  9. JS实现跑马灯效果(鼠标滑入可暂停,离开继续跑)

    <!DOCTYPE html> <html> <head lang="en"> <meta charset="UTF-8&quo ...

  10. loadrunner--分析图合并

    一.分析图合并原理 选择view->merge graphs,弹出如图1所示对话框 图1(设置合并图) 1.选择要合并的图.选择一个要与当前活动图合并的图,注意这里只能选择X轴度量单位相同的图. ...