oracle员工表和部门表基本操作
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员工表和部门表基本操作的更多相关文章
- 4.windows和Linux下创建oracleusername表空间,表,插入数据,用户管理表等操作
进入超级管理员,运行下面命令 Window下创建数据库.表空间,用户,插入数据等操作 -- 01 创建表空间 -- 注意表空间的路径 依据实际安装环境进行调整 CREATE TABLESPACE ts ...
- MySQL 约束、表连接、表关联、索引
一.外键: 1.什么是外键 2.外键语法 3.外键的条件 4.添加外键 5.删除外键 1.什么是外键: 主键:是唯一标识一条记录,不能有重复的,不允许为空,用来保证数据完整性. 外键:是另一表的唯一性 ...
- python 全栈开发,Day62(外键的变种(三种关系),数据的增删改,单表查询,多表查询)
一.外键的变种(三种关系) 本节重点: 如何找出两张表之间的关系 表的三种关系 一.介绍 因为有foreign key的约束,使得两张表形成了三种了关系: 多对一 多对多 一对一 二.重点理解如果找出 ...
- mysq更新(六) 单表查询 多表查询
本节重点: 单表查询 语法: 一.单表查询的语法 SELECT 字段1,字段2... FROM 表名 WHERE 条件 GROUP BY field HAVING 筛选 ORDER BY fiel ...
- Mysql优化原则_小表驱动大表IN和EXISTS的合理利用
//假设一个for循环 ; $i < ; $i++) { ; $i < ; $j++) { } } ; $i < ; $i++) { ; $i < ; $j++) { } } ...
- Hive建表和内外部表的使用
原文链接: https://www.toutiao.com/i6766784274965201415 一.普通建表方式 create table stu_info( id int, name stri ...
- Oracle PL/SQL块 多表查询(emp员工表、dept部门表、salgrade工资等级表)
范例: 查询每个员工的编号,姓名,职位,工资,工资等级,部门名称 ●确定要使用的数据表 |- emp表:员工的编号.姓名.职位.工资 |- salgrade表:工资等级 |- dept表:部门名称 ● ...
- 员工部门表综合查询SQL
--数据库的表设计如下: --部门:部门编号,部门名称,地址: --员工:员工编号,员工名字,职务,管理编号,入职日期,薪资,奖金,部门编号: --创建部门表: CREATE TABLE dept( ...
- java数据库 JDBC操作MySQL数据库常用API 部门表和员工表 创建表 添加数据 查询数据
package com.swift.department; import java.sql.Connection; import java.sql.PreparedStatement; import ...
随机推荐
- ubuntu-12.04工作区内容变换所属工作区
最近一直纠结于ubuntu12.04窗口更改所属工作区问题,今天在网上看到了方法.记录下来 主要就是利用快捷键. 1.打开你想移动的窗口 2.使用快捷键Shift + Ctrl + Alt + Dow ...
- js---BOM 的理解方法
windows 方法 window.close(); //关闭窗口 window.alert("message"); //弹出一个具有OK按钮的系统消息框,显示指定的文本 ...
- Angularjs: 封装layDate指令
[摘要]由于业务需要,将bootstrap-datetimepicker改成了layDate. layDate是一个较成熟且便于操作的jQuery日期插件,支持同一个视图内范围选择.封装成一个指令在多 ...
- BZOJ4044: [Cerc2014] Virus synthesis(回文树+DP)
Description Viruses are usually bad for your health. How about fighting them with... other viruses? ...
- pytest_多用例执行(1)
一.首先创建测试套件 # -*- coding:utf-8 -*-from __future__ import print_functionimport pytestimport allure cla ...
- ActiveMQ学习总结(6)——ActiveMQ集成Spring和Log4j实现异步日志
我的团队和我正在创建一个由一组RESTful JSON服务组成的服务平台,该平台中的每个服务在平台中的作用就是分别提供一些独特的功能和/或数据.由于平台中产生的日志四散各处,所以我们想,要是能将这些日 ...
- 51 nod 1189 阶乘分数
题目链接:http://www.51nod.com/onlineJudge/questionCode.html#!problemId=1189 题目思路: 1/n! = 1/x +1/y ==> ...
- cocos2d-x认识之旅
cocos2d-x 学习历程 1. 了解cocos2d-x.官网 : www.cocos2d-x.org 2. 搭建cocos2d-x. 使用版本号cocos2d-x 3.0 搭建好开发环境教程:ht ...
- stackFromBottom-listview 内容从底部开始填充
今天遇到了一个问题,就是listview虽然占满了整个屏幕,但是,当它的内容只有几条的时候,它会从底部开始显示,上面留有空白.后来进入xml发现,listview有个属性stackFromBottom ...
- 1.1 Introduction中 Producers官网剖析(博主推荐)
不多说,直接上干货! 一切来源于官网 http://kafka.apache.org/documentation/ Producers 生产者(Producers) Producers publish ...