两道简单的oracle题目(r5笔记第91天)

最近一个朋友想让我帮他一个忙,看似是一个很简单的小忙,就是出两道l题,一道可以难一些,可以通过这道题看出一个开发人员的数据库水平,sql或者pl/sql都可以,另外一道题需要是一道sql题,可以通过这个题目看出开发人员的sql水平。 问题很简单,但是要求不简单,而且通过这两个题目着实能够反映得了出题者的水平,所以自己也是斟酌再三,一直没有定下来这两道题。 首先这两道题是面向开发人员的,所以涉及到oracle中体系结构中比较细节的东西也是不太适用的,尽管tom还是一贯希望开发人员能够尽可能多的熟悉数据库体系结构,但是从我目前的了解来说,开发人员还是更多的把数据库当做一个黑盒来使用,可能参与一些大型数据分析工作的人来生活,sql水平要高不少,但是可能更倾向于sql语句调优,这个时候和索引还是有很大的关联,对于出题来说,可能面也有点大,所以斟酌再三,还是出了下面的这道题,是关于pl/sql的,但是和开发联系还是比较紧密的。 选出下面的可能存在性能问题的Pl/sql 块。 1) declare cursor test_cur is select object_id,object_name from t ; begin for i in test_cur loop execute immediate 'insert into t values(:a,:b)' using i.object_id,i.object_name; end loop; commit; end; / 2) declare cursor test_cur is select object_id,object_name from t ; begin for i in test_cur loop execute immediate 'insert into t values('||i.object_id||','||chr(39)||i.object_name||chr(39)||')'; end loop; commit; end; / 3) declare cursor test_cur is select object_id,object_name from t ; begin for i in test_cur loop insert into t values(i.object_id,i.object_name); end loop; commit; end; / 4) begin for i in (select object_id,object_name from t) loop execute immediate 'insert into t values(:a,:b)' using i.object_id,i.object_name; end loop; commit; end; /

这个题目的主要意图就是希望在写pl/sql的时候能够考虑到绑定变量的值,对于sql语句的软解析,硬解析的一些东西 ,这些方式可能在平时的工作都会涉及到,但是很可能自己没有注意到其实有些pl/sql块还是存在着很明显的性能问题。 这道题目的答案是2 第二道题,是能够从sql语句看出对方的水平来,自己也是斟酌再三,发现还是以一道比较简单的题目来考察一下。 对于下面的sql语句,sql语句在解析的时候的顺序是? (1)Select empno,deptno (2)from emp (3)where deptno=1001 (4)group by deptno (5)order by empno, A. 1,2,3,4,5. B. 2,3,4,1,5 C 5,4,3,2,1 D 2,3,4,5,1

通过这个问题可以看出大家对于一个简单的sql语句的理解。可以看出哪些操作在前,哪些在后,通过这个也能间接反映出对于sql的理解,这个题目的答案为B 大家有什么好的建议可以给我留言,也欢迎大家拍砖交流。

原文发布于微信公众号 - 杨建荣的学习笔记(jianrong-notes)

原文发表时间:2015-07-08

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏Play & Scala 技术分享

为什么要创建开放源码的PlayScala社区?

2845
来自专栏Python小屋

几段小代码解释Python命令式编程和函数式编程

所谓命令式编程,是指How to do,要通过指令告诉计算机如何一步一步地完成预定任务;而所谓函数式编程,可理解为What to do,只需要通过简单的指令告诉...

2353
来自专栏韩伟的专栏

面向对象的代码风格(下)

面向对象代码的结构 在结构化编程中,代码的结构以分解流程,实现处理方案为核心,代码的分解原色是以实现步骤为主。理解这种结构的代码,我们需要先理解问题的解决方案,...

3524
来自专栏佳爷的后花媛

Java编程思想之每天两小时(一)

之前也学过Java,但是因为很少用,所以一直没有当回事,现在想想,那时真是太年轻啊。后来朋友推荐这本Java编程思想给我,刚拿到这本书,被这厚厚的一本惊呆了,里...

1102
来自专栏蛋未明的专栏

airbnb/javascript

2085
来自专栏技术博客

设计模式原则(单一、开放封闭、里氏代换、依赖倒转、迪米特法则五大原则)

        如果一个类承担的职责过多,就等于把这些职责耦合在一起,一个职责的变化可能会削弱或者抑制这个类完成其他职责的能力,当变化发生时,设计会遭受到意想不...

1112
来自专栏java架构师

设计模式学习笔记之桥接模式

这个模式在看书时,一直没想到更好的应用场景,由此感慨一下《设计模式之禅》这本书, 通过这本书,的确对各种模式有了个比较清晰的理解,甚至对模式的结构也能很明确。也...

3607
来自专栏一个番茄说

函数式编程漫谈

最近在思考一个问题,函数式编程对于我们的软件开发的意义到底有多大?到底值不值得我们花时间去学习。因此,写下这篇文章来记录自己的思考。文章包含了前后端开发中的一些...

1262
来自专栏区块链应用开发公司

区块链交易系统开发适合用哪种语言?

如今区块链交易系统开发已成为炙手可热的项目,众多行业都在虎视眈眈看着这块蛋糕,势必会上演一场“逐鹿中原”的商业大战。区块链技术也被称为第四次革命性技术,但这场革...

2180
来自专栏恰同学骚年

[转] Agile Software Development 敏捷软件开发

  敏捷开发是一种软件开发方法,基于迭代和增量开发,通过自组织,跨团队,沟通协作完成开发工作。

1082

扫码关注云+社区

领取腾讯云代金券