楼主: newkid

SQL 小测验每周一题

[复制链接]
论坛徽章:
6
ITPUB9周年纪念徽章
日期:2010-10-08 09:28:512011新春纪念徽章
日期:2011-01-04 10:35:482011新春纪念徽章
日期:2011-02-18 11:43:332013年新春福章
日期:2013-02-25 14:51:24美羊羊
日期:2015-03-04 14:52:282015年新春福章
日期:2015-03-06 11:58:18
121#
发表于 2011-12-1 17:50 | 只看该作者
abdf答完再看贴

使用道具 举报

回复
论坛徽章:
6
ITPUB9周年纪念徽章
日期:2010-10-08 09:28:512011新春纪念徽章
日期:2011-01-04 10:35:482011新春纪念徽章
日期:2011-02-18 11:43:332013年新春福章
日期:2013-02-25 14:51:24美羊羊
日期:2015-03-04 14:52:282015年新春福章
日期:2015-03-06 11:58:18
122#
发表于 2011-12-1 18:40 | 只看该作者

使用道具 举报

回复
论坛徽章:
519
奥运会纪念徽章:垒球
日期:2008-09-15 01:28:12生肖徽章2007版:鸡
日期:2008-11-17 23:40:58生肖徽章2007版:马
日期:2008-11-18 05:09:48数据库板块每日发贴之星
日期:2008-11-29 01:01:02数据库板块每日发贴之星
日期:2008-12-05 01:01:03生肖徽章2007版:虎
日期:2008-12-10 07:47:462009新春纪念徽章
日期:2009-01-04 14:52:28数据库板块每日发贴之星
日期:2009-02-08 01:01:03生肖徽章2007版:蛇
日期:2009-03-09 22:18:532009日食纪念
日期:2009-07-22 09:30:00
123#
 楼主| 发表于 2011-12-1 23:32 | 只看该作者
2011-11-19 答案ABD
A:XPath语句作为实际参数被传给EXTRACT方法,用来从"PERSON"节点获取"name"属性。
XMLSEQUENCE函数和TABLE函数联用,把"name"属性转换成VARCHAR2值并分行展示。
B: 使用XMLTABLE函数取代了XMLSEQUENCE函数和TABLE函数,为ORACLE开发者提供了“关系”的方法来查询XML数据。
多数情况下针对XML数据的不需要复杂的查询条件,这是一种简单的好方法。
C:XMLQUERY函数使用XQuery语言来查询XML数据并以XMLTYPE类型返回结果。在此答案中,XQuery结果被转换为包含有合并的人名的VARCHAR2,而不是分开的两行。
D:XMLSEQUENCE函数同样能接受FLOWR (For, Let, Order By, Where, 和 Return)格式的Xquery字符串参数。
FLOWR在这里有点大材小用,但是在某些复杂的情况下它是获得XML数据的唯一方法。
=================================================
2011-11-26 索引的使用

作者:Steven Feuerstein
难度:低

plch_employees表被如下的语句创建:
CREATE TABLE plch_employees
(
    employee_id     INTEGER
,  last_name       VARCHAR2 (100)
,  first_name      VARCHAR2 (100)
,  hire_date       DATE
,  salary          NUMBER
)

它有一千万行数据。雇佣日期平均分布在1980到2010年之间。
这张表目前没有索引,用户对性能不满意。下面的这个索引会让哪些查询改善性能?

CREATE INDEX i_plch_employees
   ON plch_employees (hire_date)
   
   
(A)
SELECT last_name
  FROM plch_employees
WHERE hire_date BETWEEN TO_DATE ('01-01-2010', 'MM-DD-YYYY')
                     AND TO_DATE ('12-31-2010', 'MM-DD-YYYY')

(B)
SELECT last_name
  FROM plch_employees
WHERE TO_CHAR (hire_date, 'YYYY') = '2010'

(C)
SELECT last_name
  FROM plch_employees
WHERE hire_date < SYSDATE

(D)
SELECT last_name
  FROM plch_employees
WHERE hire_date + 365 BETWEEN TO_DATE ('01-01-2011', 'MM-DD-YYYY')
                           AND TO_DATE ('12-31-2011', 'MM-DD-YYYY')

使用道具 举报

回复
论坛徽章:
1088
金色在线徽章
日期:2007-04-25 04:02:08金色在线徽章
日期:2007-06-29 04:02:43金色在线徽章
日期:2007-03-11 04:02:02在线时间
日期:2007-04-11 04:01:02在线时间
日期:2007-04-12 04:01:02在线时间
日期:2007-03-07 04:01:022008版在线时间
日期:2010-05-01 00:01:152008版在线时间
日期:2011-05-01 00:01:342008版在线时间
日期:2008-06-03 11:59:43ITPUB年度最佳技术原创精华奖
日期:2013-03-22 13:18:30
124#
发表于 2011-12-1 23:35 | 只看该作者
只有A了

使用道具 举报

回复
论坛徽章:
291
生肖徽章:牛
日期:2014-04-22 15:42:25生肖徽章:猴
日期:2014-04-22 15:42:25马上有钱
日期:2014-02-19 11:55:14马上有房
日期:2014-02-19 11:55:14马上有车
日期:2014-02-19 11:55:14马上有车
日期:2014-02-18 16:41:112014年新春福章
日期:2014-02-18 16:41:11一汽
日期:2013-12-25 13:36:30马自达
日期:2013-12-23 17:20:23林肯
日期:2013-12-19 10:43:45
125#
发表于 2011-12-2 08:59 | 只看该作者
2011年度最变态的迷宫难题
http://www.itpub.net/thread-1517141-1-1.html

不知能否用sql来实现?
如果行,可以作为《SQL 小测验每周一题》。

使用道具 举报

回复
论坛徽章:
27
ITPUB官方微博粉丝徽章
日期:2011-08-17 10:35:36托尼托尼·乔巴
日期:2017-10-25 16:45:57秀才
日期:2017-04-05 13:18:06秀才
日期:2017-03-02 10:35:322016猴年福章
日期:2016-02-23 09:58:342016猴年福章
日期:2016-02-18 09:31:302015年新春福章
日期:2015-03-06 11:57:312014年新春福章
日期:2014-02-18 16:42:022013年新春福章
日期:2013-02-25 14:51:24ITPUB 11周年纪念徽章
日期:2012-10-09 18:07:31
126#
发表于 2011-12-2 09:44 | 只看该作者
A
C有可能

使用道具 举报

回复
论坛徽章:
1088
金色在线徽章
日期:2007-04-25 04:02:08金色在线徽章
日期:2007-06-29 04:02:43金色在线徽章
日期:2007-03-11 04:02:02在线时间
日期:2007-04-11 04:01:02在线时间
日期:2007-04-12 04:01:02在线时间
日期:2007-03-07 04:01:022008版在线时间
日期:2010-05-01 00:01:152008版在线时间
日期:2011-05-01 00:01:342008版在线时间
日期:2008-06-03 11:59:43ITPUB年度最佳技术原创精华奖
日期:2013-03-22 13:18:30
127#
发表于 2011-12-2 09:50 | 只看该作者
gyhgood 发表于 2011-12-2 09:44
A
C有可能

1000行全要还走索引??关键他查找的是last_name,肯定走索引不OK

使用道具 举报

回复
论坛徽章:
27
ITPUB官方微博粉丝徽章
日期:2011-08-17 10:35:36托尼托尼·乔巴
日期:2017-10-25 16:45:57秀才
日期:2017-04-05 13:18:06秀才
日期:2017-03-02 10:35:322016猴年福章
日期:2016-02-23 09:58:342016猴年福章
日期:2016-02-18 09:31:302015年新春福章
日期:2015-03-06 11:57:312014年新春福章
日期:2014-02-18 16:42:022013年新春福章
日期:2013-02-25 14:51:24ITPUB 11周年纪念徽章
日期:2012-10-09 18:07:31
128#
发表于 2011-12-2 10:23 | 只看该作者
dingjun123 发表于 2011-12-2 09:50
1000行全要还走索引??关键他查找的是last_name,肯定走索引不OK

试验了一下确实不行,我以为如果<sysdate的数据只有几条的话会走索引呢

使用道具 举报

回复
论坛徽章:
519
奥运会纪念徽章:垒球
日期:2008-09-15 01:28:12生肖徽章2007版:鸡
日期:2008-11-17 23:40:58生肖徽章2007版:马
日期:2008-11-18 05:09:48数据库板块每日发贴之星
日期:2008-11-29 01:01:02数据库板块每日发贴之星
日期:2008-12-05 01:01:03生肖徽章2007版:虎
日期:2008-12-10 07:47:462009新春纪念徽章
日期:2009-01-04 14:52:28数据库板块每日发贴之星
日期:2009-02-08 01:01:03生肖徽章2007版:蛇
日期:2009-03-09 22:18:532009日食纪念
日期:2009-07-22 09:30:00
129#
 楼主| 发表于 2011-12-3 00:04 | 只看该作者
八戒 发表于 2011-12-2 08:59
2011年度最变态的迷宫难题
http://www.itpub.net/thread-1517141-1-1.html

这个题目看不到什么可以提早判断的技巧,所以就是一个广度搜索,用递归的WITH子查询有可能做但它的缺陷是当某个分支得到了答案时,无法使得整个递归停下来,除非硬性加上一个层数的限制。

使用道具 举报

回复
论坛徽章:
519
奥运会纪念徽章:垒球
日期:2008-09-15 01:28:12生肖徽章2007版:鸡
日期:2008-11-17 23:40:58生肖徽章2007版:马
日期:2008-11-18 05:09:48数据库板块每日发贴之星
日期:2008-11-29 01:01:02数据库板块每日发贴之星
日期:2008-12-05 01:01:03生肖徽章2007版:虎
日期:2008-12-10 07:47:462009新春纪念徽章
日期:2009-01-04 14:52:28数据库板块每日发贴之星
日期:2009-02-08 01:01:03生肖徽章2007版:蛇
日期:2009-03-09 22:18:532009日食纪念
日期:2009-07-22 09:30:00
130#
 楼主| 发表于 2011-12-3 00:12 | 只看该作者
看了答案28层,我这台机是跑不出来了。

使用道具 举报

回复

您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

TOP技术积分榜 社区积分榜 徽章 团队 统计 知识索引树 积分竞拍 文本模式 帮助
  ITPUB首页 | ITPUB论坛 | 数据库技术 | 企业信息化 | 开发技术 | 微软技术 | 软件工程与项目管理 | IBM技术园地 | 行业纵向讨论 | IT招聘 | IT文档
  ChinaUnix | ChinaUnix博客 | ChinaUnix论坛
CopyRight 1999-2011 itpub.net All Right Reserved. 北京盛拓优讯信息技术有限公司版权所有 联系我们 未成年人举报专区 
京ICP备16024965号-8  北京市公安局海淀分局网监中心备案编号:11010802021510 广播电视节目制作经营许可证:编号(京)字第1149号
  
快速回复 返回顶部 返回列表