oracle常见面试题及答案
- 格式:doc
- 大小:120.50 KB
- 文档页数:17
需求: 写一个邮件系统, 采用oracle+jsp+servlet来完成.
1.创建一个表空间。
2.创建一个用户,将用户赋到表空间上.
3.给用户赋权限.
4.以新建用户登录,创建一个程序包.
5.在表空间上建表,两个表
用户表
Id int
Uname varchar
Upass varchar
邮件表
eId int
Title varchar
Contents varchar
Uid int 外键
附件表
Id int
Filepath varchar
Eid int 外键
6.作增,删,改,查的操作,全部封装到存储过程中
7.写一个java程序来调用.
1.解释FUNCTION,PROCEDURE和PACKAGE区别
答:function 和procedure是PL/SQL代码的集合,通常为了完成一个任务。procedure 不需要返回任何值, 而function将返回一个值. 在另一方面,Package是为了完成一个商业功能的一组function和procedure的集合。
2.取某个序列的当前值的PL/SQL语句怎么写?
答:SELECT 序列名.CURRVAL FROM DUAL;
Create sequence 名字 start with x increment by y maxvalue z nocycle
3.说明ORACLE数据库实例与ORACLE用户的关系?
答:实例可以包含多个用户,一个用户只能在一个实例下
4.创建用户时,需要赋予新用户什么权限才能使它连上数据库?
答:grant CONNECT [on 表名] to 用户名
5.比较truncate和delete命令?
答:两者都可以用来删除表中所有的记录。区别在于:truncate是DDL(data defining language数据定义语言),它移动HWK,不需要rollback segment(处理事务回滚操作)而Delete是DML(data manufacturing language数据操作语言)操作,需要rollback segment(处理事务回滚操作)且花费较长时间
6.给出数据的相关约束类型?
答:主键约束,外键约束,非空约束,唯一约束,检查约束。
7.说明索引的类型与作用?
答:索引类型上分为聚集索引,非聚集索引. 其作用是加快查询速度。
8.获取某个字符字段的最后3个字符的函数是什么?
答:select substr (字段,(length(字段)-3)) from 表
9.取当前系统时间点日期(不包括年月)的SQL写法是怎样的?
答:Select substr (to_char(sysdate,’YYYYMMDDh24hh:MM:SS’),5) from dual;
to_char(sysdate,’YYYYMMDDh24hh:MM:SS’)
10.返回大于等于N的最小整数值?
答:select ceil(1.5) from dual;
floor(1.5)
11.将根据字符查询转换后结果,规则为:’A’转换为’男’,’B’转换为’女’,其他字符转换为’未知’,请用一个SQL语句写出。
答:select decode(字符,’A’,’男’,’B’,’女’,’未知’) from dual;
12.如何搜索出前N条记录?
答:select * from 表 where Rownum <= N;
13.如何搜索出第N~M条记录?
答:select * from 表 where Rownum <= 100 Minus select * from 表 where Rownum <= 90;
Select * from ( Select rownum rn, t.* from (Select * from 表名) t where rownum<=大值 ) where rn>=小值
14.有一个数据表(TEST),字段如下:
ID number
PARENT_ID number
NAME Varchar(20)
请使用PL/SQL来按父子层次关系查询出该表的所有数据
答:Select * from test a, test b Where a.parent_id = b.id;
15.怎样用SQL语句实现查找一列中的第N大值?
答:select * from (select * from 表 order by 列名 Desc) where Rownum <= N Minus select * from (select * from 表 order by 列名 Desc) where Rownum <= N-1;
select * from 表order by 列名Desc
1 2 3 4 5 6 7 8 9
9 8 7
8 9
请按要求写出下列题目的答案:
∙Empno—-雇员编号
∙Ename—-雇员名
∙Job—-工作类型
∙Mgr—-雇员的经理
∙Hiredate—-雇用日期
∙Sal—-每月工资
∙Comm—-销售奖金
∙Deptno—-部门编号
∙Dname—-部门名
∙Loc—-地址
17.下面哪两个查询可以用来确定员工Blake所在部门的名称? B C E
a. SELECT dname FROM dept WHERE ename =(…BLAKE‟);
b. SELECT d. dname FROM dept d NATURAL JOIN emp e
WHERE e.ename =…BLAKE‟;(主健和外键的名称和类型必须完全相等)
c. SELECT dname FROM dept d,emp e
WHERE e.ename =(…BLAKE‟)
AND d.deptno = e.deptno;
d. SELECT dname FROM dept JOIN emp USING (dname)
WHERE ename =…BLAKE‟;
e. SELECT dname FROM dept JOIN emp
ON dept.deptno = emp.deptno
WHERE ename =…BLAKE‟;
18. 如果Sal包含各个员工的月薪,那么下面哪一个查询将显示EMP表中的各个员工的年薪? ( d )
a. SELECT sal * 12 …Annual Salary‟FROM emp;
b. SELECT salary * 12 …annual FROM emp;