练习 8-4 编写可靠的且用户友好的查询 在本练习中,我们要开发一个多行子查询,它将提示用户输入。我们可以使用SQL*Plus或SQL Developer进行开发。在连接到HR Schema后,所有的查询都必须能成功执行。其中我们假定数据库表中已经有了一些记录集。
1、以用户HR登录到你的数据库。 2、设计一个查询,提示用户输入部门名称,然后列出该部门的所有员工名: select last_name from employees where department_id = (select department……
我们一直都在努力坚持原创.......请不要一声不吭,就悄悄拿走。
我原创,你原创,我们的内容世界才会更加精彩!
【所有原创内容版权均属TechTarget,欢迎大家转发分享。但未经授权,严禁任何媒体(平面媒体、网络媒体、自媒体等)以及微信公众号复制、转载、摘编或以其他方式进行使用。】
微信公众号
TechTarget
官方微博
TechTarget中国
练习 8-4 编写可靠的且用户友好的查询
在本练习中,我们要开发一个多行子查询,它将提示用户输入。我们可以使用SQL*Plus或SQL Developer进行开发。在连接到HR Schema后,所有的查询都必须能成功执行。其中我们假定数据库表中已经有了一些记录集。
1、以用户HR登录到你的数据库。
2、设计一个查询,提示用户输入部门名称,然后列出该部门的所有员工名:
select last_name from employees where department_id = (select department_id from departments where department_name = '&Department_name'); |
3、运行步骤2中的查询3次,在提示符中分别输入下面的值:
第一次,Executive;
第二次,executive;
第三次,Executiv。
4、从步骤3的运行结果我们可以看到:第一次执行成功,因为我们输入了一个准确匹配的值,但其它的都失败了。下面我们修改一下查询,使它更加用户友好,这样它可以处理大小写或拼写不同的问题:
select last_name from employees where department_id = (select department_id from departments where upper(department_name) like upper('%&Department_name%')); |
5、运行步骤4中的查询3次,其中仍然使用步骤3中的相同数值。这次,所有的查询都能成功执行。
6、再次运行步骤4的查询,但这次输入值“Pu”。这次查询会失败,并返回一个错误“ORA-01427:single-row subquery returns more than one row”,这是因为我们为了用户友好所做的修改会接收用户的随意输入,从而无法保证它是单行子查询。这里的“Pu”就匹配到了两个部门。
7、我们继续修改该查询,使它能够处理ORA-01427错误,并调整输出结果以使结果更加清晰:
select last_name,department_name from employees join departments on employees.department_id = departments.department_id where departments.department_id in (select department_id from departments where upper(department_name) like upper('%&Department_name%')); |
8、下面是最后一步执行的结果:最终的查询代码已经很接近既准确又用户友好的理想结果了:
INSIDE THE EXAM 考点 |
使用子查询 子查询有3种形式:单行、多行和关联的。单行子查询的一个特殊形式是标量子查询,它只返回一个值。这是一种单行单字段子查询。第一次的SQL OCP考试只要求标量子查询和单字段多行子查询,关联子查询和多字段子查询在这里不太可能考到,但会测试你对他们的一般理解。 在WHERE子句中使用子查询时,你必须知道紧跟单行子查询和多行子查询的操作符用法。 |
翻译
TechTarget中国特约技术编辑,某高校计算机科学专业教师和网络实验室负责人,曾任职某网络国际厂商,关注数据中心、开发运维、数据库及软件开发技术。有多本关于思科数据中心和虚拟化技术的译著,如《思科绿色数据中心建设与管理》和《基于IP的能源管理》等。
相关推荐
-
甲骨文自治数据库亮相 带来云计算新希望
早前甲骨文还不在云计算公司之列,而现在该公司正在迅速弥补其失去的时间。甲骨文的云计算核心是甲骨文自治数据库(O […]
-
2017年12月数据库流行度排行榜 定格岁末排名瞬间
数据库知识网站DB-engines最近更新的2017年12月份数据库流行度排名情况是否能提供更多的看点呢?TechTarget数据库网站将与您分享12月份的榜单排名情况,让我们拭目以待。
-
2017年11月数据库流行度排行榜 半数以上数据库积分减少
数据库知识网站DB-engines更新了2016年11月份的数据库流行度排行榜。TechTarget数据库网站将与您一同关注11月份的榜单排名情况。
-
控制合约 不再畏惧Oracle
许多公司都与Oracle有无限制授权协议,他们害怕离开这个协议,所以就证明他们在使用Oracle的软件,即使因为需求单独购买部分授权许可也可能总体是省钱的。