Oracle基础测试题一.理论部分:
1.问答题
1为什么要给表指定主键?
2为什么要给表指定外键?
3为什么要对某些字段的取值进行?
4为什么要表中的某一列或几列建立索引?请给emp表的ename列创建索引,写出相应的sql语句。
5当对表的列进行了什么约束时,Oracle会为它自动创建索引?
6为什么要给某张表或者某几张表建立视图?创建一个视图,要求只显示工资小于1500的员工的信息;然后给最低工资少于1000的员工工资加300;
7视图的DML操作会同步到基表吗?是不是对所有的视图都可以进行DML操作?
8为什么要创建序列?当向表中插入数据时,对于主键的值可以调用某个序列来自动生成,此时是调用序列的那个属性?
9Oracle准确的说是一个什么?写出英文名称。
10目前市场上畅销的关系数据库有哪些,分别是哪个公司的?
11在Orale中,哪些是数据库对象?
12Sql语句是如何分类的?
13使用sys身份登录sqlplus的操作语句是怎样的?
14使用scott身份登录的语句又是怎样的?
15现在e盘下有一个test.sql文件(里面有很多对数据库的操作),请问怎样在控制台运行这个sql文件?
16Oracle中的权限有哪两种?
17Oracle数据库的常用数据类型有哪些?(列出主要的四种)
二.操作题:
希望大家编写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)查询会两种功夫或两种功夫以上的人员的名字,部门,以及会的主要功夫名称;