Oracle数据库面试题
1.取出表中第31到40行的记录
mysql方案:select * from t order by id limit 30,10
oracle方案:
select t2.*
from (select rownum r,t1.* from yourtable t1 where rownum<=40) t2
where t2.r>30
2.truncate和delete有什么区别
TRUNCATE TABLE在功能上与不带WHERE子句的DELETE语句相同,二者均删除表中的全部行。但TRUNCATE
TABLE比DELETE 速度快,且使用的系统和事务日志资源少。DELETE 语句每次删除一行,并在事务日志中为所删除的每一行记录一项。
TRUNCATE TABLE通过释放存储表数据所用的数据页来删除数据,并且只在事务日志中记录页的释放。
TRUNCATE, DELETE, DROP放在一起比较:
TRUNCATE TABLE:删除内容、释放空间但不删除定义。
DELETE TABLE:删除内容不删除定义,不释放空间。
DROP TABLE:删除内容和定义,释放空间。
3. oracle的rowid和rownum有什么区别
rowid是唯一标识一条记录物理位置的一个id。
rownum是oracle系统为查询返回的行顺序分配的编号,返回的第一行分配的是1,第二行是2,依此类推,这个伪字段可以用于限制查询返回的总行数,且rownum不能以任何表的名称作为前缀。
4.Oracle函数(Function)与存储过程(Procedure)的区别
function
的返回值永远只有一个,而procedure的返回值却可以不只一个。function所有的参数都是input信号,而procedure的参数却可以
是input、output,甚至inout。function的返回值置于参数声明之外,而procedure的返回值是放在参数声明之内的。
5.删除一张表重复记录(ID 是自增唯一,重复记录:其他字段都是一样)
delete from aa where id not in (select min(id) from aa group by name,age);
6.一个表中的 id 有多个记录,把所有这个 id 的记录查出来,并显示共有多少条记录数。
select id, count(*) from tb group by id having count(*)>1
7.SQL优化
(1)尽量少用 IN 操作符
基本上所有的 IN 操作符都可以用 EXISTS 代替,在选择 IN 或 EXIST 操作时,要根据主子表数据量大小来具体考虑。
(2)尽量不用“<>”或者“!=”操作符
不等于操作符是永远不会用到索引的,因此对它的处理只会产生全表扫描。比如:a<>0改为a>0 or a<0
(3)尽量不用通配符“%”或者“_”作为查询字符串的第一个字符
当 通配符“%”或者“_”作为查询字符串的第一个字符时,索引不会被使用。比如用 T 表中 Column1 LIKE ‟%5400%‟
这个条件会产生全表扫描,如果改成 Column1 ‟X5400%‟ OR Column1 LIKE ‟B5400%‟ 则会利用 Column1
的索引进行两个范围的查询,性能肯定大大提 高。
(4)Where子句中避免在索引列上使用计算
substr(no,1,4)= ‘5400’,优化处理:no like ‘5400%’
trunc(hiredate)=trunc(sysdate),优化处理:hiredate >=trunc(sysdate) and hiredate <trunc(sysdate+1)
(5)用“>=”替代“>”
大 于或小于操作符一般情况下是不用调整的,因为它有索引就会采用索引查找,但有的情况下可以对它进行优化,如一个表有 100
万记录,一个数值型字段A,30万记录的A=0,30万记录的A=1,39万记录的A=2,1万记录的A=3。那么执行 A>2 与
A>=3 的效果就有很大的区别了,因为 A>2 时 ORACLE 会先找出为 2 的记录索引再进行比较,而 A>=3 时
ORACLE 则直接找到=3的记录索引
(6)使用表的别名,并将之作为每列的前缀
当在sql语句中连接多个表时,使用表的别名,并将之作为每列的前缀。这样可以减少解析时间。
(7)用UNION ALL代替UNION
UNION 是最常用的集操作,使多个记录集联结成为单个集,对返回的数据行有唯一性要求,所以oracle就需要进行SORT
UNIQUE操作(与使用distinct时操作类似),如果结果集又比较大,则操作会比较慢;UNION
ALL操作不排除重复记录行,所以会快很多,如果数据本身重复行存在可能性较小时,用union all会比用union效率高很多!
8.事务的acid特性
原子性、一致性、独立性、持久性
Oracle数据库面试题的更多相关文章
- Oracle数据库面试题【转载】
1. Oracle跟SQL Server 2005的区别? 宏观上: 1). 最大的区别在于平台,oracle可以运行在不同的平台上,sql server只能运行在windows平台上,由于windo ...
- Oracle数据库面试题(转)
1. Oracle跟SQL Server 2005的区别? 宏观上: 1). 最大的区别在于平台,oracle可以运行在不同的平台上,sql server只能运行在windows平台上,由于windo ...
- SQL数据库面试题
SQL数据库面试题 1.SQL SREVER中,向一个表中插入了新数据,如何快捷的得到自增量字段的当前值 这种情况其实我们经常用到,比如我们新建了一个用户,建立完用户后我们希望马上得到这个新用户的ID ...
- 经典SQL数据库面试题以及答案—Oracle版本-SQL全部在plsql开发编写-欢迎提问
Student(Sno,Sname,Sage,Ssex) 学生表 S1:学号:Sname:学生姓名:Sage:学生年龄:Ssex:学生性别 Course(Cno,Cname,T1) 课程表 C1,课程 ...
- SQL SERVER 数据库面试题
1.用一条SQL语句 查询出每门课都大于80分的学生姓名 name kecheng fenshu 张三 语文 81张三 数学 75李四 语文 ...
- Oracel 数据库面试题
1.取出表中第31到40行的记录mysql方案: , oracle方案: select t2.* ) t2 2.truncate和delete有什么区别TRUNCATE TABLE在功能上与不带WHE ...
- 数据库面试题之PL/SQL面试题
create table employee( id ) not null, -- 员工工号 salary ,) not null, -- 薪水 name ) not null -- 姓名 ); 第一题 ...
- 数据库面试题.net
1.ADO.net中常用的对象 connection, command, sqladapter, dataset, dataview. 2.net中读写数据库要用到哪些类 DataSet数据存储 Da ...
- MySQL 数据库面试题
原文出处:https://juejin.im/post/5a9ca0d6518825555c1d1acd 作者:Java3y 本文在原文基础上进行修改,而且没有特定针对MySQL. 一.存储过程(以及 ...
随机推荐
- 采用shell脚本统计代码的行数
刚毕业那会儿有一次去台湾公司面试,我问多行代码怎么写.我从来没有想过这个问题,粗略计算,.惊叹:大概几十万行不行. 最近整理资料,看着eclipse左边全面上市,我觉得这个东西.代码共同拥有的行倒底总 ...
- 很酷的CSS3仿Facebook登录表单
原文:很酷的CSS3仿Facebook登录表单 今天看到一款很不错的CSS3登录表单,外观是仿Facebook的登录表单,还挺不错的,另外也支持简单的表单输入框验证.下图是表单的效果图: 我们也可以在 ...
- C语言功能 --C
功能名称: cabs 动力 能够: 计算绝对复数值 使用 法国: double cabs(struct complex z); 程序示例: #include <stdio.h> #incl ...
- HDU 2082-找单词(母函数)
找单词 Time Limit: 1000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total Submis ...
- windows server 2008见安装IIS方法(解决)
windows server 2008见安装IIS方法(解决) 刚开始有点蒙,后来才知道原来如此.! . 右键点击[我的电脑]--[管理]--[字符]--[加入角色]--仅落后win7像.啊! 版权声 ...
- C# 带用户密码访问网络共享
原文:C# 带用户密码访问网络共享 调用WNetUseConnection API 函数详细参数参考:https://msdn.microsoft.com/en-us/library/windows/ ...
- Android 阅读Manifest在文件Application 在与其他节点meta-data定义自己的数据
介绍 Android提供meta-date使用键值在实现自己的自定义配置的形式. 通常用作信道标识.它可以用在<application>,<activity>,<acti ...
- 为代码减负之<一>触发器(SQL)
对触发器一词早有耳闻(最早是在耿大妈的数据库视频中),当初看完视频后,对理解不深刻的东西如:触发器,存储过程,事务,日志等等没有具体的去查阅,也没有具体的去尝试,应用.所以才导致了今天的博客(把曾经丢 ...
- Visual Studio-Sequence Diagram
UML Design Via Visual Studio-Sequence Diagram 本文主要介绍在Visual Studio中设计时序图,内容如下: 何时使用时序图 时序图元素介绍 条件.循环 ...
- 从头开始学JavaScript (二)——变量及其作用域
原文:从头开始学JavaScript (二)--变量及其作用域 一.变量 ECMAscript变量是松散型变量,所谓松散型变量,就是变量名称可以保存任何类型的数据,每个变量仅仅是一个用于保存值的占位符 ...