Oracle笔试题

发布 2024-04-17 03:35:11 阅读 6242

基础题目:

1. 比较truncate和delete 命令

1、在功能上,truncate是清空一个表的内容,它相当于delete from table_name。

2、 delete是dml操作,truncate是ddl操作;因此,用delete删除整个表的数据时,会产生大量的roolback, 占用很多的rollback segments(产生用于恢复的日志), 而truncate不会。

3、在内存中,用delete删除数据,表空间中其被删除数据的表占用的空间还在,便于以后的使用,另外它是 “假相”的删除,相当于windows中用delete删除数据是把数据放到**站中,还可以恢复,当然如果这个时候重新启动系统(os或者rdbms),它也就不能恢复了!(如果立即做尾日志备份并且保证之前的日志链都ok的话,还是有可能恢复的)而用truncate清除数据,内存中表空间中其被删除数据的表占用的空间会被立即释放,相当于windows中用shift+delete删除数据,不能够恢复!(有日志也能恢复^o^ 只是不如回闪那么爽了!

)4、truncate 调整high water mark 而delete不;truncate之后,table的hwm退回到 initial和next的位置(默认)delete 则不可以。

5、truncate 只能对table,delete 可以是table,view,synonym。

6、truncate table 的对象必须是本模式下的,或者有drop any table的权限而 delete 则是对象必须是本模式下的,或被授予delete on 或delete any table的权限。

7、在外层中,truncate或者delete后, 其占用的空间都将释放。

8、truncate和delete只删除数据,而drop则删除整个表(结构和数据)。

中,需要在查询语句中把空值(null)输出为0,如何处理?

select nvl(null, 0) from dual;

中char和varchar2数据类型有什么区别?有数据”test”分别存放到char(10)和varchar2(10)类型的字段中,其存储长度及类型有何区别?

char是定长字符类型,而varchar是变长字符类型。 有数据”test”分别存放到char(10)和varchar2(10)类型的字段中,其存储长度及类型? 用char(10)进行存储时,存储被补齐10个空格,其长度为10个字节,而varchar2的存储长度为4个字节。

4.现在有个表:a(id ,name,regdate) -regdate(格式为2008/09/22)

b(id,groupid)

c(id,name2)

写出下面的sql语句。

1).统计a表中每个月注册用户数。

select to_char(regdate,'yyyymm') month,count(*)total from a group by to_char(regdate,'yyyymm');

2).统计a表中有姓名相同的用户数。

select distinct name,count(name) from a group by name;

select name,count(*)from a where (select count(*)from a group by name)>1 order by name;

3).如果表a中有姓名相同的用户,把相同的查出,写入表c中。

insert into c select distinct name from a group by name;

4).a中id有多个相同的数据,a中姓名相同的id只保留注册时间最大的数据。

5.存在表t(a,b,c,d),要根据字段c排序后取第21—30条记录显示,请给出sql

select * from (select c.*,rownum as rn from (select * from t order by c desc)c ) where rn between 21 and 30;

难度大些的题目:

6.有表一的查询结果如下,该表为学生成绩表(知识点:关联更新)

select id,grade from student_grade

idgrade

表二为补考成绩表

select id,grade from student_makeup

idgrade

现在有一个dba通过如下语句把补考成绩更新到成绩表中,并提交:

update student_grade s set =

select from student_makeup t

where

commit;

请问之后查询:

select grade from student_grade where id = 3;

结果为:(

a: 0 b: 70 c: null d: 以上都不对

7.根据以下的在不同会话与时间点的操作,判断结果是多少,

其中时间t1

session1session2

t1 select count(*)from t;

显示结果(1000)条

t2 delete from t where rownum <=100;

t3begin

delete from t where rownum <=100;

commit;

end; t4 truncate table t;

t5 select count(*)from t;

这里显示的结果是多少 .(

a: 1000 b: 900 c: 800 d: 0

8.数据库查询行列转换(sql server篇)

原始数据如下:

name date value

a 2006年 106

a 2007年 107

a 2008年 108

b 2006年 206

b 2007年 207

b 2008年 208

c 2006年 306

c 2007年 307

c 2008年 308

1). 转换为:行为name,列为date,转换后的结果。

name 2006年 2007年 2008年。

a 106 107 108

b 206 207 208

c 306 307 308

2). 转换为:行为date,列为name

转换后的结果。

date a b c

2006年 106 206 306

2007年 107 207 307

2008年 108 208 308

Oracle笔试题

一 oracle实例与数据库有什么区别 容易 oracle实例 进程 进程所使用的内存 sga 实例是一个临时性的东西,你也可以认为它代表了数据库某一时刻的状态!数据库 重做文件 控制文件 数据文件 临时文件。数据库是永久的,是一个文件的集合。oracle实例和数据库之间的关系。1.临时性和永久性。...

Oracle测试试题

时间 120分钟总分 100分 一 选择题 2分 20 题40分 1 下面哪一个不是数据库屋物理存储结构中的对象。a.数据文件b.联机重做日志文件 c.控制文件d.表空间。2 在oracle服务器启动时,下面哪种文件不是必须的 a 数据文件 b 控制文件c 日志文件 d 归档日志文件。3 你要在or...

SQL笔试题笔试题

家庭住址,联系 create table stu 学号int 姓名varchar 8 年龄int,性别varchar 4 家庭地址varchar 50 联系 int 历varchar 6 3 修改学生表的结构,删除一列信息,家庭住址alter table stu drop column家庭地址4 向...