基础题目:
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 向...