楼主: newkid

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
41#
发表于 2011-11-7 13:28 | 只看该作者
选C的都中招了呵呵~
前面有道题 就有这个写法  USING (department_id)
不加括号是错误的

使用道具 举报

回复
论坛徽章:
1
2012新春纪念徽章
日期:2012-01-04 11:56:19
42#
发表于 2011-11-7 21:04 | 只看该作者
abdf

使用道具 举报

回复
论坛徽章:
1
2012新春纪念徽章
日期:2012-01-04 11:56:19
43#
发表于 2011-11-7 21:44 | 只看该作者
果然考的很细,又有11g的新知识点

使用道具 举报

回复
论坛徽章:
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
44#
 楼主| 发表于 2011-11-7 22:43 | 只看该作者

2011-7-16 答案 CF.
A:仅仅是求最大最小,不是第一和最后。
B:FIRST_VALUE, LAST_VALUE不能用在聚合函数。
C:正确
D:用了正确的分析函数语法,但是此处要求的是聚合函数。在聚合基础上使用分析函数,所有引用列都必须在GROUP BY列表中出现。
E:MIN, MAX在此试图作为分析函数来使用,但未满足上述要求。
F:正确,虽然方法有点曲折。如果你的数据库不支持KEEP可以考虑这种方法。
=======================================
2011-7-23: 外连接
作者:Kim Berg Hansen
难度:中

我创建了这张表并填入数据:
CREATE TABLE plch_employees
(
   employee_id   INTEGER
, last_name     VARCHAR2 (20)
)
/

BEGIN
   INSERT INTO plch_employees
        VALUES (100, 'Jobs');

   INSERT INTO plch_employees
        VALUES (200, 'Ellison');

   INSERT INTO plch_employees
        VALUES (300, 'Gates');

   COMMIT;
END;
/

CREATE TABLE plch_bonus
(
   employee_id   INTEGER
, bonus         NUMBER
)
/

BEGIN
   INSERT INTO plch_bonus
        VALUES (100, 100000);

   INSERT INTO plch_bonus
        VALUES (200, 200000);

   COMMIT;
END;
/


我老板想要一个员工奖金清单。即使没有奖金的员工也要列出来。哪些选项能够产生满足要求的输出:
  
LAST_NAME                 BONUS
-------------------- ----------
Jobs                     100000
Ellison                  200000
Gates

(A)
SELECT e.last_name
     , b.bonus
FROM plch_employees e
   , plch_bonus b
WHERE b.employee_id = e.employee_id
ORDER BY e.employee_id;

(B)
SELECT e.last_name
     , ( SELECT b.bonus
         FROM plch_bonus b
         WHERE b.employee_id = e.employee_id
       ) bonus
FROM plch_employees e
ORDER BY e.employee_id;

(C)
SELECT e.last_name
     , b.bonus
FROM plch_employees e
   , plch_bonus b
WHERE b.employee_id(+) = e.employee_id
  AND b.bonus(+) > 0
ORDER BY e.employee_id;

(D)
SELECT e.last_name
     , b.bonus
FROM plch_employees e
LEFT OUTER JOIN plch_bonus b
   ON b.employee_id = e.employee_id
ORDER BY e.employee_id;

(E)
SELECT e.last_name
     , b.bonus
FROM plch_employees e
EXISTS JOIN plch_bonus b
   ON b.employee_id = e.employee_id
ORDER BY e.employee_id;

(F)
SELECT e.last_name
     , b.bonus
FROM plch_employees e
   , plch_bonus b
WHERE b.employee_id(+) = e.employee_id
  AND b.bonus > 0
ORDER BY e.employee_id;

(G)
SELECT e.last_name
     , b.bonus
FROM plch_employees e
   , plch_bonus b
WHERE b.employee_id(+) = e.employee_id
ORDER BY e.employee_id;

(H)
SELECT e.last_name
     , b.bonus
FROM plch_employees e
RIGHT OUTER JOIN plch_bonus b
   ON b.employee_id = e.employee_id
ORDER BY e.employee_id;

(I)
SELECT e.last_name
     , b.bonus
FROM plch_employees e
CROSS JOIN plch_bonus b
WHERE b.employee_id = e.employee_id
ORDER BY e.employee_id;

使用道具 举报

回复
论坛徽章:
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
45#
发表于 2011-11-8 01:06 | 只看该作者
简单的外连接使用,注意:标量子查询有时候可以代替外连接
4个答案

使用道具 举报

回复
论坛徽章:
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
46#
发表于 2011-11-8 10:40 | 只看该作者
BDGH

答完测试一下去

使用道具 举报

回复
论坛徽章:
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
47#
发表于 2011-11-8 10:43 | 只看该作者
犯低级错误了居然选了H

使用道具 举报

回复
论坛徽章:
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
48#
 楼主| 发表于 2011-11-8 23:43 | 只看该作者
7-23 答案BCDG

A:内连接
B:用标量子查询实现了外连接效果
C:传统的ORACLE外连接写法,尽管b.bonus(+) > 0有些多余
D:ANSI外连接写法
E:EXISTS JOIN错误语法
F:b.bonus > 0破坏了外连接
G:传统的ORACLE外连接写法
H:左右搞反了
I:笛卡尔积(CROSS JOIN)加上过滤,相当于内连接
====================================
2011-7-30 嵌套表上的DML操作
作者:Steven Feuerstein
难度:高

我定义了如下的嵌套表类型和关系表:
CREATE OR REPLACE TYPE plch_parents_t IS TABLE OF VARCHAR2 (100);
/

CREATE OR REPLACE TYPE plch_children_t IS TABLE OF VARCHAR2 (100);
/

CREATE TABLE plch_family
(
   surname          VARCHAR2 (1000)
, parent_names     plch_parents_t
, children_names   plch_children_t
)
NESTED TABLE children_names
   STORE AS children_nt
NESTED TABLE parent_names
   STORE AS parents_nt                           
/

然后我为这张表填入一行数据,在这行数据我存入了我的大儿子Chris的名字:
INSERT INTO plch_family (surname, parent_names, children_names)
     VALUES (
               'Silva-Feuerstein'
             , plch_parents_t ('Steven', 'Veva')
             , plch_children_t ('Chris'))
/
1986年10月1日,我们的第二个儿子Eli出生了。恭喜!现在我要把他的名字加入到Silva-Feuerstein一家的孩子清单。哪些选项能够把数据成功地插入到这个单行的表的children_names中?

(A)
INSERT INTO TABLE (SELECT children_names
                     FROM plch_family
                    WHERE surname = 'Silva-Feuerstein')
     VALUES ('Eli')
/
(B)
INSERT INTO plch_family (children_names)
   VALUES ('Eli')
/

(C)
INSERT INTO plch_family.children_names
   VALUES ( 'Eli' )
/

(D)
INSERT INTO (SELECT children_names
          FROM plch_family
         WHERE surname = 'Silva-Feuerstein')
   VALUES ('Eli')
/

使用道具 举报

回复
论坛徽章:
25
奥运会纪念徽章:射击
日期:2013-01-28 09:12:182014年新春福章
日期:2014-02-18 16:41:11马上有车
日期:2014-02-18 16:41:11马上有车
日期:2014-03-20 16:13:24马上有房
日期:2014-03-20 16:14:11马上有钱
日期:2014-03-20 16:14:11马上有对象
日期:2014-03-20 16:14:11马上加薪
日期:2014-03-20 16:14:11喜羊羊
日期:2015-04-09 18:46:34秀才
日期:2016-03-24 09:20:52
49#
发表于 2011-11-9 10:39 | 只看该作者
本帖最后由 jimn1982 于 2011-11-9 10:40 编辑

跑了一遍,除了E外结果集都一样嘛
C项提示少括号

使用道具 举报

回复
论坛徽章:
0
50#
发表于 2011-11-9 14:48 | 只看该作者
A,C,D?

使用道具 举报

回复

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

本版积分规则 发表回复

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