oracle sql笔试题
一、 数据库 ORACLE
虽然这些题目都可以G到,但还是要考察一下您现在的常态水平,:)
T表:(字段:ID,NAME,ADDRESS,PHONE,LOGDATE)
E表:(字段:NAME,ADDRESS,PHONE)
1. 将表T中的字段LOGDATE中为2001-02-11的数据更新为2003-01-01,请写出相应的SQL语句。(该字段类型为日期类型)
2. 请写出将表T中NAME存在重复的记录都列出来的SQL语句(按NAME排序)
3. 请写出题目2中,只保留重复记录的第一条,删除其余记录的SQL语句(即使该表不存在重复记录)
4. 请写出将E表中的ADDRESS、PHONE更新到T表中的SQL语句(按NAME相同进行关联)
5. 请写出将T表中第3~5行数据列出来的SQL语句
1 update t
set logdate = to_date('2003-01-01','YYYY-MON-DD')
from logdate = to_date('2001-02-11','YYYY-MON-DD');
2 select *
from ( select name from t group by name order by desc)
3 delete from t
where t.rowid not in ( select max(rowid) from t group by name);
如果是检索所有不重复的行的话那么用
select * from t
where t.rowid not in ( select max(rowid) from t group by ID,NAME,ADDRESS,PHONE,LOGDATE)
4 update t
set t.address = ( select e.address from e,t where t.name = e.name),
t.phone = ( select e.phone from e,t where t.name = e.name);
5.select * from t where rownum <= 5
minus
select * from t where rownum < 3;
or
select * from ( select rownum as rn,t.* from t ) s
where s.rn between 3 and 5;
相关文档:
1、查看表空间的名称及大小
select t.tablespace_name, round(sum(bytes/(1024*1024)),0) ts_size
from dba_tablespaces t, dba_data_files d
......
今天总结下oracle的任务队列管理器(job queue ),以后也方便查询.
我们要做定时任务时,有两种办法
一种是: 操作系统的定时,win的定时任务,unix的crontab
一种是: 数据库级的定时,她的效率更高,
再有大量的表级操作时,建议用数据库本身的job queue,这样方便,效率高;如果用系统级定时,
会增加很多编程工作,成本增加 ......
自己觉得对Oracle还掌握得不错,不过昨天隔壁实验室的同学问了我一个问题让我郁闷了一把。她在一个数据库里把一个用户A的在表空间AA上的表
用exp导出到exp.dmp文件中,再把它导入到另一台机器上的数据库里,这时她用的是用户B,默认表空间是BB,但是用imp导入时我们发现表是导入
到了B用户下,但是还是存在了AA表空间里面 ......
SQL> DESC TEST 测试表: Name Type Nullable Default Comments
---- ------------ ......
※ 数据定义语言(DDL),例如:CREATE、DROP、ALTER等语句。
※ 数据操作语言(DML),例如:INSERT(插入)、UPDATE(修改)、DELETE(删除)语句。
※ 数据查询语言(DQL),例如:SELECT语句。
※ 数据控制语言(DCL),例如:GRANT、REVOKE、COMMIT、ROLLBACK等语句。
1、说明:创建数据库
C ......