8Oracle emp表 案例

更新时间:2023-09-20 22:36:01 阅读量: 自然科学 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

第一章

1. 创建名字为hy_tablespace的表空间,默认大小为10M;

2. 创建一个用户,用户名以自己名字命名,并指定命名空间为hy_tablespace;

3. 给用户授予connect和resource角色; 4. 创建一张员工表(Emp),字段定义如下

empno NUMBER(4), 员工编号 ename VARCHAR2(10), 员工姓名 job VARCHAR2(9), 岗位

mgr NUMBER(4), 上级领导编号 hiredate DATE,

生日

sal NUMBER(7,2), 工资 comm NUMBER(7,2), 奖金 deptno NUMBER(2) 部门编号 5. 将员工编号设置成主键; 6. 创建一个部门表,字段如下

deptno NUMBER(2) , 部门编号 dname VARCHAR2(14), 部门名称 loc VARCHAR2(13) 部门位置 7. 将部门编号设置为主键;

8. 将Emp表中的ename设置为非空。

9. 将dept表中的dname设置为非空。

10. 将Emp表中的deptno字段设置默认值,默认值为10。 11. 将Emp表中的deptno字段添加外键约束,关联到dept表中的deptno字段。

12. 创建一个序列,名为seq_hy,起始值为1,步长为1,没有最大值限制。

13. 怎样理解数据库和数据库实例的区别? 14. 怎样理解权限和角色的区别?

15. char和varchar2数据类型有什么区别?

第二章

修改表结构

1. 将Emp表中job字段长度改为15; 2. 将Emp字段中的mgr字段名字改为ldn; 3. 向Emp表中添加一个字段性别(sex char(3)); 4. 删除Emp表中的员工性别字段; 5. 删除Emp表;

数据控制语言

重新构建Emp表

1. 给Emp表授予resource权限; 2. 给Emp表授予connect权限;

3. 收回Emp表的resource权限和connect权限;

数据操作语言

1. 查询员工的所有信息; 2. 查询部门表的所有信息; 3. 查询员工的姓名和工资; 4. 查询员工的姓名和部门编号; 5. 查询部门的名称和所在位置; 6. 查询公司的所有岗位,要求不重复。 7. 向部门表中插入四条数据

部门编号 部门名称 部门位置 10 ACCOUNTING NEW YORK 20 RESEARCH DALLAS 30 SALES CHICAGO 40 OPERATIONS BOSTON 8. 向员工表中插入三条数据:

编号 姓名 岗位 上级编号 生日 工资 奖金 部门号 7369, 'SMITH', 'CLERK', 7902, 17-12-1980 800, null, 20 7499, ALLEN ,SALESMAN , 7698, 20-02-1981 1600, 300, 30 7521,'WARD', 'SALESMAN', 7698, 22-02-1981, , 1250, 500, 30 9. 向员工表中插入两条数据,如下: 员工编号 员工姓名 员工工资

7566 'JONES' 2975 7654 'MARTIN' 1250 10. 将SMITH的工资改为1000;

11. 将ALLEN的岗位改为CLERK,并且将工资改为1400; 12. 将工资低于2000的员工工资提高200元; 13. 将没有奖金的员工的奖金设置为100元 14. 将没有奖金的员工工资提高100元; 15. 删除工资少于800元的员工; 16. 删除1988/4/12入职的员工

17. 删除工资在2000到3000元之间的员工。 18. 查询所有员工能拿的总钱数; 19. ALLEN的本月工资扣除200元; 20. 查询所有员工的姓名和年工资; 21. 查询20号部门的所有员工信息; 22. 查询奖金高于工资的员工信息

23. 查询工作岗位为CLERK的员工的姓名和生日 24. 如何显示工资高于3000的员工?

25. 如何查找在1982年1月1日之前入职的员工? 26. 如何显示工资在2000到2500的员工?

27. 如何显示编号为7369或者 189或者7499的员工信息? 28. 如何查询出工资是800或者1250或者是3000或者是1100或者是10的员工的姓名和工资?

29. 如何显示没有上级的员工的信息? 30. 如何显示没有奖金的员工信息?

31. 查询上级领导编号不在7698, 7839的员工信息? 32. 查询工资高于500或者是岗位为MANAGER的雇员,同时还要满足他们的姓名首写字母为J的员工信息? 33. 查询员工的姓名和工资,并当做一列返回? 34. 查询员工的姓名和年工资,并且当做一列返回?

事务控制语言

35. 设置一个保存点point1,修改SMITH的工资为5000元,回滚到,提交事务,看SMITH的工资是否变化?为什么? 36. 设置一个保存点point1,修改SMITH的工资为5000,再设置一个保存点point2,修改ALLEN的岗位为SALESMAN,回滚到point2,提交事务,查看SMITH的工资是否改变,为什么?查看ALLEN的岗位是否改变,为什么?

第三章

1. 如何显示所有员工中的最高工资和最低工资? 2. 如何显示所有员工中最高和最低的年工资员工信息? 3. 如何显示所有员工的平均工资和工资之和? 4. 如何显示工资最高的员工的名字和工作岗位? 5. 如何显示工资高于平均工资得到员工的信息?

6. 如何显示每个部门的平均工资?

7. 如何显示每个部门的每种岗位的平均工资?

8. 如何显示平均工资低于2000的部门号和它的平均工资?

9. 如何查询与SMITH同一个部门的所有员工?

10. 如何查询与SMITH同一个部门的所有员工,在显示的时候要把SMITH的信息排除在外

11. 如何查询出和10号部门工作相同的雇员的名字、岗位、工资和部门号?

12. 如何显示工资比30号部门所有员工工资高的员工的姓名、工资和部门号

13. 如何显示工资比30号部门任意一个员工工资高的员工的姓名、工资和部门号?

14. 如何查询ALLEN的部门和岗位完全相同的所有雇员? 15. 如何显示高于自己部门平均工资的员工信息?

16. 如何显示高于自己部门平均工资的员工信息并显示部门平均工资?

17. 查询每个部门工资最高的人的详细信息?

18. 显示每个部门的信息(编号、名称和人员数量)? 19. 如何查询第四条到第六条员工的信息?

第四章

1. 要求显示雇员的名字、工资及所在部门的名称

2. 如何显示部门编号为10的部门名、员工名和工资 3. 显示各个员工的姓名、工资及其工资级别?

4. 显示雇员名、雇员工资及所在部门的名字,并按照部门名称进行排序。

5. 显示员工的信息和部门名称

6. 显示所有员工的姓名和部门名称,如果员工没有部门,也要显示员工的名字。

7. 显示员工的名字和部门名称,要显示所有部门,即使部门里没有员工。

8. 显示所有员工的名字和部门的名字。 9. 要显示ALLEN的上级领导的姓名 10. 要显示所有员工上级领导的姓名 11. 显示员工的姓名和上级领导的姓名

12. 列出部门名称和这些部门的员工信息,同时列出那些没有员工的部门。(要求使用4中写法)

13. 列出所有的员工及其上级的姓名(字表外连接)

14. 列出入职日期(雇佣日期)早于其直接上级的所有雇员(自表连接)

15. 列出部门名称和这些部门的雇员,同时列出那些没有雇员的部门(外连接)

16. 列出所有'CLERK'的姓名及其部门名称(内连接)

17. 列出每个部门的信息(外连接)以及该部门中(分组)雇员

的数量(外连接并分组)

18. 列出所有雇员的姓名、部门名称和薪金(外连接)

19. 列出分配有雇员数量(聚合函数)的所有部门(按部门分组并进行外连接)的详细信息,即使分配有零个雇员 20. 列出至少有一个员工的所有部门 21. 列出薪金比“SMITH”多的所有员工 22. 列出所有员工的姓名及其直接上级的姓名

第五章 PL/SQL

1. 编写一个存储过程pro1,该过程可以向Emp表中添加一条记录。 2. 怎样调用执行pro1,向Emp表中插入一条数据?

3. 编写一个能够删除数据的存储过程,根据传入id判断删除哪条数据。

4. 编写一个简单的块,输出‘我是一名优秀的员工!’。

5. 编写一个块,通过从控制台输入员工编号,在控制台打出员工的姓名。

6. 如果在上面的块执行过程中,输入的员工编号不存在,请对异常进行处理。输出一句话‘对不起,你输入的员工编号不存在!’。 7. 编写一个存储过程,可以输入员工的名字和新的工资,实现对员工工资的修改。

8. 编写一个函数,可以接受用户名,并返回用户的年薪。 9. 怎样在控制台调用上面创建的函数,得到'ALLEN'的年工资。

10. 请编写一个包,该包有一个过程和一个函数,过程实现可以根据用户名去修改用户的薪水,函数实现传入用户名得到年工资。 11. 请写一个存储过程,根据员工编号查询出员工姓名和个人所得税(税率为0.03)。

12. 请使用pl/sql编写一个过程,可以输入部门号,并显示该部门所有员工的姓名和工资。

13. 编写一个过程,可以输入部门编号,将某个部门中员工奖金小于200的员工奖金增加100,并显示该部门员工的姓名、工资和奖金。 14. 编写一个过程,可输入用户名和添加用户的个数n,循环添加n个用户到users表中,用户编号从1开始到n。 15. 编写一个存储过程,实现分页显示信息。

16. 创建一个视图,视图中字段和Emp表中的empno,ename,sal完全一致。

17. 创建一个视图,视图中字段和Emp表中的empno,ename,sal和dept表中的deptname完全一致。

18. 在Emp表中添加一条数据时,提示“添加了一条数据”。 19. 在Emp表中修改数据的时候,提示“有人修改了数据”。 20. 编写触发器,禁止员工在星期天删除Emp表中的数据。 21. 编写触发器,在修改员工的工资时,显示员工修改前和修改后的值。

22. 编写触发器,如何保证修改员工工资时修改后的工资不低于修改前的值。

23. 编写一个触发器,保证当用户在删除一张表的时候,将表中的数据备份到另一张表中去。

24. 编写一个触发器,控制员工的新工资不能低于原来的工资,同时也不能高出原来工资的20%。

25. 编写一个登陆、退出触发器,新建一张表,可以用来存储用户名称,时间和ip地址。

本文来源:https://www.bwwdw.com/article/fu7h.html

Top