Oracle测试题

--1、oracle如何得知需要创建的控制文件的信息?  
--答:从初始化参数文件中读取
--创建数据库时,系统会根据初始化参数文件中CONTROL_FILES的设置创建控制文件。


--2、一个数据库至少几个控制文件?
--答:一个


--3、数据字典和视图在哪个系统表空间?
--答:system


--4、回滚段的作用?
--答:事务回滚、数据库恢复、数据的读一致性、闪回查询


--5、最近使用过的SQL语句存在哪个区?
--答:共享池


--6、实例启动,数据库处于nomount、mount还是open?
--答:nomount


--7、数据库启动时,如果datafile或者logfile不能用,数据库能打开吗?
--答:不能


--8、数据库启动,需要经历哪三个过程,顺序能颠倒吗?
--答:不能颠倒,nomount;mount;open。


--9、添加、删除数据表约束的语法?
--答:alter table 表 add constraint 约束名 约束;
--        alter table 表 drop constraint 约束名;


--10、connect、dba、resource是权限还是角色?
--答:角色


--11、表1有2行,表2有3行,它们的笛卡尔积有几行?
--答:2X3=6


--12、distinct的作用是什么?
--答:去除重复记录


--13、plsql的注释有哪几种?
--答:单行注释:--;多行注释:/**/。


--14、异常处理中,捕获所有异常的关键字是什么?
--答:OTHERS


--15、where后面能直接出现聚合函数吗?
--答:不能(HAVING)


--16、plsql中跳出循环的关键字是?
--答:EXIT


--17、哪些语句能给表加上锁?
--答:select * from 表 for update;


--18、plsql匿名块有哪三部分组成?
--答:declare:声明部分、begin:执行部分、exception:异常处理部分。


--19、数据泵导入导出工具是?传统的导入导出工具分别是?
--答:数据泵:expdp和impdp;传统导入导出工具:export和import。


--20、使用游标的四个步骤?
--答:1、定义游标;2、打开游标;3、检索游标;4、关闭游标。


--21、oracle中常用的转换函数有哪几个?
--答:to_char、to_number、to_date。


--22、事务提交和回滚分别用什么指令?
--答:commit;rollback;


--23、写出求 1-10 的和的plsql代码
/*
declare
  v_s number := 0;
  v_n number := 0;
begin
  for v_n in 1 .. 10 loop
    v_s := v_s + v_n;
  end loop;
  dbms_output.put_line(v_s);
end;
*/


--24、用plsql for循环嵌套,打印*组成的直角三角形
/*
begin
  for i in 1 .. 10 loop
    for j in 1 .. i loop
      dbms_output.put('*');
    end loop;
    dbms_output.put_line('');
  end loop;
end;
*/


--25、用户和模式的区别?
--答:1、用户和模式相对应,一个模式只能被一个数据库用户所拥有,且名称相同。
--2、同一模式中数据库对象名称必须唯一,不同模式中数据库对象可以重名。
--3、默认情况用户引用的对象是与自己同名模式中的对象,如要引用其他模式的对象,
--需要在对象名之前指明对象所属的模式。


--26、表中都有哪些常用的约束?
--答:主键、外键、非空、唯一、check、default


--27、异常是什么,有哪几类?
--答:运行时发生的错误。
--异常分为预定义异常、非预定义异常和用户定义异常3种


--28、游标是什么?有什么作用?有哪几类游标?
--答:指向内存缓冲区的句柄或指针。
--可以逐行检索数据,根据不同条件对数据进行处理。
--游标是指向PLSQL块执行查询语句(SELECT)和数据操纵语句(DML)时,
--分配的包含处理过程的必要信息的内存缓冲区的句柄或指针。用于处理多行数据。
--分为显式游标、隐式游标2种


--29、
--1、一个简单的教学管理系统关系模式如下:
--教师(教师号,姓名,性别,出生日期,系,职称,课程号)
drop table tst29_tch;
create table tst29_tch (
  tch_no varchar2(10),
  tch_name varchar2(100),
  tch_sex varchar2(5),
  tch_birthday date,
  tch_dept varchar2(100),
  tch_level varchar2(100),
  cur_no varchar2(10)
);
--课程(课程号,课程名,学分)
drop table tst29_cur;
create table tst29_cur (
  cur_no varchar2(10),
  cur_name varchar2(100),
  cur_score number
);
--学生(学号,姓名,性别,年龄,班级,系)
create table tst29_stu (
  stu_no varchar2(10),
  stu_name varchar2(100),
  stu_sex varchar2(5),
  stu_age number,
  stu_class varchar2(100),
  stu_dept varchar2(100)
);
--请画出与之对应的E-R图 。




--2.根据上题中的关系模式,完成以下语句(表名和列名去自定义):
-- 把新进的学生张三,其学号为x110,年龄20,分配到2班。 
insert into tst29_stu
  (stu_no, stu_name, stu_sex, stu_age, stu_class)
values
  ('110', '张3', '无', 13, '2');
-- 查询可以代java课的所有老师。 
select *
  from tst29_tch t
  left join tst29_cur c on t.cur_no = c.cur_no
 where c.cur_name = 'java';
-- 删除年龄不满16岁的学生信息。
select * from tst29_stu;
delete from tst29_stu where stu_age < 16;
select * from tst29_stu;
-- 把软件1班的张三调到软件2班。 
update tst29_stu set stu_class = '1' where stu_name = '张三' and stu_class = '2';
-- 查询各门课程的最高成绩。 
select max(cur_score) from tst29_cur;
-- 创建一个存储过程p_getAvgAge,用于计算并打印软件系的学生的平均年龄。 
create or replace procedure p_getavgage is
  v_avgage number;
begin
  select avg(stu_age) into v_avgage from tst29_stu;
  dbms_output.put_line(v_avgage);
end;


begin
  p_getavgage();
end;

你可能感兴趣的:(Oracle)