一. 理论部分: 1. 问答题 ⑴ 为什么要给表指定主键? ⑵ 为什么要给表指定外键? ⑶ 为什么要对某些字段的取值进行限制? ⑷ 为什么要表中的某一列或几列建立索引?请给emp表的ename列创建索引,写出相应的sql语句。 ⑸ 当对表的列进行了什么约束时,Oracle会为它自动创建索引? ⑹ 为什么要给某张表或者某几张表建立视图?创建一个视图,要求只显示工资小于1500的员工的信息;然后给最低工资少于1000的员工工资加300; ⑺ 视图的DML操作会同步到基表吗?是不是对所有的视图都可以进行DML操作? ⑻ 为什么要创建序列?当向表中插入数据时,对于主键的值可以调用某个序列来自动生成,此时是调用序列的那个属性? ⑼ Oracle准确的说是一个什么?写出英文名称。 ⑽ 目前市场上畅销的关系数据库有哪些,分别是哪个公司的? ⑾ 在Orale中,哪些是数据库对象? ⑿ Sql语句是如何分类的? ⒀ 使用sys身份登录sqlplus的操作语句是怎样的? ⒁ 使用scott身份登录的语句又是怎样的? ⒂ 现在e盘下有一个test.sql文件(里面有很多对数据库的操作),请问怎样在控制台运行这个sql文件? ⒃ Oracle中的权限有哪两种? ⒄ Oracle数据库的常用数据类型有哪些?(列出主要的四种) 二. 操作题:
希望大家编写sql语句时先在草稿纸上打个草稿,不要不分析就盲目写
1. 创建一个用户tom,密码是tom,并授予会话的权限。 2. 列出薪金比\"SMITH\"多的所有雇员。
3. 列出部门名称和这些部门的雇员,同时列出那些没有雇员的部门。(想想:这是一个什么联接,哪个表是主表?) 4. 列出所有雇员的姓名及其直接上级的姓名。
5. 列出所有“CLERK”(办事员)的姓名及其部门名称。
6. 列出各种工作类别的最低薪金,显示最低薪金大于1500的记录。
7. 列出从事“SALES”(销售)工作的雇员的姓名,假定不知道销售部的部门编号
8. 列出薪金高于公司平均水平的所有雇员。 9. 列出与“SCOTT”从事相同工作的所有雇员。 10. 列出某些雇员的姓名和薪金,条件是他们的薪金等于部门30中任何一个雇员的薪金。
11. 列出按年薪排序的所有雇员的年薪。
12. 列出所有雇员的雇员名称、部门名称和薪金。 13. 列出各种类别工作的最低工资。
14. 列出入职日期早于其直接上级的所有雇员。 15. 列出至少有一个雇员的所有部门。
16. 列出各个部门的MANAGER(经理)的最低薪金。
17. 显示非销售人员工作名称以及从事同一工作雇员的月工资的总和,并且要满足从事同一工作的雇员的月工资合计大于$5000,输出结果按月工资的合计升序排列。(想想这道题要用到哪些操作符?) 18. 列出最低薪金大于1500的各种工作及此从事此工作的全部雇员人数。
19. 列出薪金高于公司平均薪金的所有员工,所在部门,上级领导,公司的工资等级。
20. 列出所有部门的详细信息和部门人数。
21. 列出薪金高于在部门30工作的所有员工的薪金的员工姓名和薪金、部门名称。 22. 项目实例 表结构:
(1)用户表tb_user(user_id,name,delpt_id,emt), (2)部门表tb_dept(dept_id,dept_desc),
(3)功夫表tb_gongfu(user_id,gf_id,main_gf_flag) (4)功夫明细表tb_gf(gf_id,gf_desc) 表内容:
user_id name dept_id emt<资产> 1001 令狐冲 1 100 1002 岳不群 1 1000 1003 师太 2 800 1004 真人 4 700 1005 松山道长 6 900
1007 太乙 3 200 1008 品议 5 200 1009 悟空 5 2000 dept_id dept_desc 1 华山派 2 恒山派 3 嵩山派 4 武当派 5 少林派 6 衡山派
User_id gf_id main_gf_flag(此处指主功夫) 1001 1 1 1001 2 0 1001 3 0 1002 2 1 1003 3 1 1004 4 1 1005 5 0 1006 5 1 1007 2 0 1008 3 0 1009 5 1 1009 2 0 gf_id gf_desc 1 华山剑法 2 武当剑法 3 吸星大法 4 辟邪大法 5 太极
(1) 写出这四张表建表的DDL语句;(要求有注释) (2) 向表中插入以上数据;
(3)查询部门名称以及各部门的人员数量,按人员数量降序排列; (4)查询资产排前3的用户的姓名,资产,以及部门名称,按资产升序排列;
(6)查询每个部门的总资产;
(7)查询会两种功夫或两种功夫以上的人员的名字,部门,以及会的主要功夫名称;
因篇幅问题不能全部显示,请点此查看更多更全内容