[每日一题] OCP1z0-047 :2013-08-07 SELECT---PRODUCT_INFORMATION...................27

转载请注明出处:http://blog.csdn.net/guoyjoe/article/details/9821681

[每日一题] OCP1z0-047 :2013-08-07 SELECT---PRODUCT_INFORMATION...................27_第1张图片


答案B


英语单词备注:

warranty:['wɔrənti] 保证;担保;授权;(正当)理由

purchased ['pə:tʃəst] 已经购买的

fulfill[ful'fil]  满足

 

根据题意是需要查所有产品信息中的产品名称、类别的id号、以及保修期到期时间(SYSDATE+WARRANTY_PERIOD),没有保修期的产品显示在行记录的上面,有保修期的产品按保修期的时间从小到大排序显示在行记录的下面。

   下面根据测试来解释ABCD的答案。

一、登录oe用户,查看有多少表。

idle> conn oe/oe
Connected.
oe@MYDB> SELECT TABLE_NAME FROM TABS;

TABLE_NAME
------------------------------
PROMOTIONS
PRODUCT_INFORMATION
PRODUCT_DESCRIPTIONS
ORDER_ITEMS
ORDERS
INVENTORIES

6 rows selected.


二、查PRODUCT_INFORMATION的表结构

oe@MYDB> desc PRODUCT_INFORMATION
 Name                                                  Null?    Type
 ----------------------------------------------------- -------- ------------------------------------
 PRODUCT_ID                                            NOT NULL NUMBER(6)
 PRODUCT_NAME                                                   VARCHAR2(50)
 PRODUCT_DESCRIPTION                                            VARCHAR2(2000)
 CATEGORY_ID                                                    NUMBER(2)
 WEIGHT_CLASS                                                   NUMBER(1)
 WARRANTY_PERIOD                                                INTERVAL YEAR(2) TO MONTH
 SUPPLIER_ID                                                    NUMBER(6)
 PRODUCT_STATUS                                                 VARCHAR2(20)
 LIST_PRICE                                                     NUMBER(8,2)
 MIN_PRICE                                                      NUMBER(8,2)
 CATALOG_URL                                                    VARCHAR2(50)

三、题目解释:

1、答案A不正确:

   排序的时间不对SYSDATEWARRANTY_PERIOD(即当前的时间减去保修期到期时间),应该写成SYSDATE+WARRANTY_PERIOD(即保修期到期时间)

 

2、答案B正确

 

1、 答案C不正确:

排序的时间不对SYSDATE(即当前时间),应该写成SYSDATE+WARRANTY_PERIOD(即保修期到期时间)

 

2、 答案D不正确:

 没有排序,并且加了where限制条件,题意是要查所有的产品。

 

测试操作如下:


oe@MYDB> SELECT product_name,category_id,SYSDATE+warranty_period AS "Warranty expire date" FROM
  2  product_information ORDER BY SYSDATE+warranty_period;

PRODUCT_NAME                                       CATEGORY_ID Warranty exp
-------------------------------------------------- ----------- ------------
Screws <S.32.P>                                             19 07-AUG-13
Screws <S.32.S>                                             19 07-AUG-13
Screws <Z.16.S>                                             19 07-AUG-13
Screws <Z.24.S>                                             19 07-AUG-13
Screws <Z.28.P>                                             19 07-AUG-13
Base ISO CP - BL                                            29 07-AUG-13
Client ISO CP - S                                           29 07-AUG-13
省略中间结果。。。。。。。。。。。。。。。。。。。。。。
Latex Gloves                                                39 07-AUG-23
Desk - S/V                                                  31 07-AUG-28
Desk - W/48/R                                               31 07-AUG-33
Desk - W/48                                                 31 07-AUG-33
Desk - OS/O/F                                               31 07-AUG-38

288 rows selected.

补充:order by(默认排序是ASC从小到大),如果从大到小是DESC.对于null的类据怎么排序,null的数据排序要么排在最前面,要么排在最后面。

升序,null排在最后面


gyj@MYDB> select  id,name from t1 order by name;

        ID NAME
---------- ----------------------------------------------------------------------------------------------------
         1 AAAAA
         2 CCCCB
         3 CCCCC
         4 DDDDD
         5 EEEEE
         6 FFFFF
         9 FFFFF
         7 GGGGGG
         8 HHHHH
        10 RRRRR
        11
        12

降序,null排在最前面


gyj@MYDB> select  id,name from t1 order by name desc;

        ID NAME
---------- ----------------------------------------------------------------------------------------------------
        12
        11
        10 RRRRR
         8 HHHHH
         7 GGGGGG
         9 FFFFF
         6 FFFFF
         5 EEEEE
         4 DDDDD
         3 CCCCC
         2 CCCCB
         1 AAAAA

如果升序,想让null排在最前面那要使用nulls first

gyj@MYDB> select  id,name from t1 order by name nulls first;

        ID NAME
---------- ----------------------------------------------------------------------------------------------------
        11
        12
         1 AAAAA
         2 CCCCB
         3 CCCCC
         4 DDDDD
         5 EEEEE
         9 FFFFF
         6 FFFFF
         7 GGGGGG
         8 HHHHH
        10 RRRRR

如果降序,想让null排在最后面那要使用nulls last

gyj@MYDB> select  id,name from t1 order by name desc nulls last;

        ID NAME
---------- ----------------------------------------------------------------------------------------------------
        10 RRRRR
         8 HHHHH
         7 GGGGGG
         9 FFFFF
         6 FFFFF
         5 EEEEE
         4 DDDDD
         3 CCCCC
         2 CCCCB
         1 AAAAA
        11
        12


QQ:252803295

学习交流QQ群:
DSI&Core Search  Ⅰ 群:127149411(技术:已满)
DSI&Core Search  Ⅱ 群:177089463(技术:未满)
DSI&Core Search  Ⅲ 群:284596437(技术:未满)
DSI&Core Search  Ⅳ 群:192136702(技术:未满)
DSI&Core Search  Ⅴ 群:285030382(闲聊:未满)



MAIL:[email protected]

BLOG: http://blog.csdn.net/guoyjoe

WEIBO:http://weibo.com/guoyJoe0218

ITPUB: http://www.itpub.net/space-uid-28460966.html

OCM:   http://education.oracle.com/education/otn/YGuo.HTM





你可能感兴趣的:([每日一题] OCP1z0-047 :2013-08-07 SELECT---PRODUCT_INFORMATION...................27)