多选题 以下是产品(PRODUCT)表和供应商(SUPPLIER)表的结构:
PRODUCT
-----------
PRODUCT_ID NUMBER
PRODUCT_NAME VARCHAR2(25)
SUPPLIER_ID NUMBER
CATEGORY_ID NUMBER
QTY_PER_UNIT NUMBER
UNIT_PRICE NUMBER(7, 2)
QTY_IN_STOCK NUMBER
QTY_ON_ORDER NUMBER
REORDER_LEVEL NUMBER
SUPPLIER
------------
SUPPLIER_ID NUMBER
SUPPLIER_NAME VARCHAR2(25)
ADDRESS VARCHAR2(30)
CITY VARCHAR2(25)
REGION VARCHAR2(10)
POSTAL_CODE VARCHAR2(11)
要求创建一个查询,这个查询将以字母顺序返回产品的清单,其中包括了每个产品的供应商。要求只有在产品表中有供应商的那些产品才可以包括在清单(报告)中。请问使用以下的哪两个查询能完成此项查询?
【正确答案】 C、E
【答案解析】[解析] 这一题测试的范围比较广,该题是测试对SQL:1999语法的连接的熟悉程度。因为题目要求为只有在产品表中有供应商的那些产品才可以包括在清单中,所以可以确认所需要的连接肯定不是外连接,所以选项A可以排除,因为左连接是外连接,而实际上所需的连接是相等连接。
根据有关使用ON子句的连接的介绍,可知相等连接条件放在ON子句中,选项B也可以排除,因为ON (supplier_id)有语法错误。
从PRODUCT和SUPPLIER表的定义可以看出:在这两个表中都包含了supplier_id而且它们的数据类型也相同,根据有关SQL:1999语法的自然连接的介绍,可以断定选项C是正确的。
根据有关使用USING子句的连接的介绍,可知USING子句引用的列在SQL语句中的任何地方都不能冠以表名或别名,选项D也可以排除,因为USING(p.supplie_id)有语法错误。
同样根据有关使用USING子句的连接的介绍,可以断定选项E是另外一个正确的答案。其实,只要排除了选项A、B和D之后,根据题目的要求就可以确定选项C和E是答案了。