有以下SQL语句:SELECT 订单号,签订日期,金额 FROM 订单,职员WHERE 订单.职员号=职员.职员号 AND

题目

有以下SQL语句: SELECT 订单号,签订日期,金额 FROM 订单,职员 WHERE 订单.职员号=职员.职员号 AND 姓名="李二" 与如上语句功能相同的SQL语句是( )。

A.SELECT 订单号,签订日期,金额 FROM 订单 WHERE EXISTS (SELECT*FROM 职员 WHERE 姓名="李二")

B.SELECT 订单号,签订日期,金额 FROM 订单 WHERE EXISTS(SELECT*FROM 职员 WHERE 职员号=订单.职员号AND姓名="李二")

C.SELECT 订单号,签订日期,金额 FRM 订单 WHERE IM (SELECT 职员号 FROM 职员 WHERE 姓名="李二")

D.SELECT 订单号,签订日期,金额 ROM 订单 WHERE IN(SELECT 职员号FROM 职员 WHERE 职员号=订单.职员号 AND 姓名="李二")

如果没有搜索结果或未解决您的问题,请直接 联系老师 获取答案。
相似问题和答案

第1题:

有订单表如下:

订单(订单号(C,4),客户号(C,4),职员号(C,3),签订日期(D.,金额(N,6,2))

查询所有金额大于等于平均金额的订单的订单号,正确的SQL语句是( )。

A.SELECT订单号FROM订单WHERE金额>=(SELECT AVG(金额)FROM订单)

B.SELECT订单号FROM订单WHERE金额=(SELECT AVG(金额)FROM订单)

C.SELECT订单号FROM订单WHERE金额>=ALL(SELECT AVG(金额)FROM订单)

D.SELECT订单号FROM订单WHERE金额=ALL(SELECT AVG(金额)FROM订单)


正确答案:A
本题考查嵌套查询,首先被括号括起来的为内层查询,先进行内层查询,查询出订单表中的平均金额。然后再进行外层查询,筛选出金额大于等于平均金额的订单号。由于内层查询中使用了AVG(求平均数),因此不能使用ALL进行限定,故A选项正确。

第2题:

有如下职员表和订单表:职员(职员号(C,3),姓名(C,6),性别(C,2),职务(C,10))订单(订单号(C,4),客户号(C,4),职员号(C,3),签订日期(D),金额(N,6,2))查询职工〝李丽〞签订的订单消息,正确的SQL.语句是( )。

A.SELECT订单号,客户号,签订日期,金额FROM订单WHERE姓名=〝李丽〞

B.SELECT订单号,客户号,签订日期,金额FROM职员,订单WHERE姓名=〝李丽〞; AND职员.职员号一订单.职员号

C.SELECT订单号,客户号,签订日期,金额FROM职员JOIN订单; WHERE职员.职员号=订单.职员号AND姓名=〝李丽〞

D.SELECT订单号,客户号,签订日期,金额FROM职员,订单ON职员.职员号=订单.职员号AND姓名=〝李丽〞


正确答案:C
SQL的基本格式为SELECT-FROM-WHERE,其中SELECT说明要查询的字段,FROM说明要查询的字段来自哪个表或哪些表,WHERE说明查询条件.本题查询“李丽”签订的订单信息,要查询字段包括订单号、客户号、签订日期和金额,WHERE后应该限定职员和订单表中的姓名为“李丽”,由于订单表中并没有姓名这一字段,因此用职员号字段将两表信息相连,AND表示“且”。故本题C为正确选项。

第3题:

显示没有签订任何订单的职员信息(职员号和姓名),正确的SQL语句是( )。

A.SELECT 职员.职员号,姓名 FROM 职员 JOIN 订单 ON 订单.职员号=职员.职员号 GROUP BY 职员.职员号 HAVING COUNT(*)=0

B.SELECT 职员.职员号,姓名 FROM 职员 LEFT JOIN 订单 ON 订单.职员号=职员.职员号 GROUP BY 职员.职员号 HAVING COUNT(*)=0

C.SELECT 职员号,姓名 FROM 职员 WHERE 职员号 NOT IN(SELECT 职员号 FROM 订单)

D.SELECT 职员.职员号,姓名 FROM 职员 WHERE 职员.职员号<>(SELECT订单.职员号FROM订单)


正确答案:C
解析:显示没有签订任何订单的职员信息等价于显示订单表中不存在的职员信息。只有选项C符合查询条件。

第4题:

有如下SQL语句:

SELECT订单号,签订日期,金额 FROM 订单,职员:

WHERE订单.职员号=职员.职员号AND姓名=”李二”

与如上语句功能相同的SQL语句是( )。


正确答案:B
题目中给出的SELECT语句是查找出姓名为“李二”的职员签订的单号、签订日期和金额。选项B)中,使用EXISTS谓词来检查子查询中是否有结果返回,它的查询过程是:外查询中,在订单表中从第一条记录开始取出当前职员号,再在内查询中,针对该职员号,在职员表中逐条记录判断是否存在符合WHERE条件的记录,如果存在,则在外查询的订单表巾找到该职员号对应的订单号、签订日期和金额;然后依次类推,在订单表中从第二条记录中取出当前职员号,再在内查询中进行判断,直到将订单表中的所有记录都处理完毕。

第5题:

有以下SQL语句: SELECT订单号.签订日期,金额FROM订单,职员 WHERE订单.职员号=职员.职员号AND姓名=”王五” 与如上语句功能相同的SQL语句是( )。

A. SELECT订单号,签订日期,金额FROM订单 WHERE EXISTS(SELECT*FROM职员WHERE姓名=”王五”)

B. SELECT订单号,签订日期,金额FROM订单WHERE EXISTS(SELECT书FROM职员WHERE职员号=订单.职员号AND姓名=”王五”)

C. SELECT订单号,签订日期,金额FROM订单 WHERE IN(SELECT职员号FROM职员WHERE姓名=”李二”)

D. SELECT订单号,签订日期,金额FROM订单WHERE IN(SELECT职员号FROM职员WHERE职员号=订单.职员号AND姓名=”王五”)


正确答案:B
谓词EXISTS用来检验在子查询中是否有结果返回,本题中内层查询引用了外层查询的表,所以也是内外层互相关嵌套查询。故排除选项A、C、D的错误之处是在 WHERE和IN之间缺少“职工号”。

第6题:

显示没有签订任何订单的职员信息(职员号和姓名),正确的SQL语句是

A.SELECT职员.职员号,姓名 FROM 职员 JOIN 订单 ON 订单.职员号=职员.职员号 GROUP BY职员.职员号 HAVING COUNT(*)=0

B.SELECT 职员.职员号,姓名 FROM 职员 LEFT JOIN 订单 ON 订单.职员号=职员.职员号 GROUP BY 职员.职员号 HAVING COUNT(*)=0

C.SELECT 职员号,姓名 FROM 职员 WHERE 职员号 NOT IN(SELECT 职员号 FROM 订单)

D.SELECT 职员.职员号,姓名 FROM 职员 WHERE 职员.职员号<>(SELECT 订单.职员号 FROM 订单)


正确答案:C
解析:显示没有签订任何订单的职员信息等价于显示订单表中不存在的职员信息。四个选项中只有选项c符合查询条件。

第7题:

假设 “ 订单 ” 表中有订单号、职员号、客户号和金额字段,正确的 SQL 语句只能是

A)SELECT 职员号 FROM 订单 GROUP BY 职员号 HAVING COUNT(*)>3 AND AVG_ 金额 >200

B)SELECT 职员号 FROM 订单 GROUP BY 职员号 HAVING COUNT(*)>3 AND AVG( 金额 )>200

C)SELECT 职员号 FROM 订单 GROUP BY 职员号 HAVING COUNT(*)>3 WHERE AVG( 金额 )>200

D)SELECT 职员号 FROM 订单 GROUP BY 职员号 WHERE COUNT(*)>3 AND AVG_ 金额 >200


正确答案:B

第8题:

有以下SQL语句:SELECT 订单号,签订日期,金额 FROM 订单,职员WHERE 订单.职员号=职员.职员号 AND 姓名=“李二”与如上语句功能相同的SQL语句是A) SELECT订单号,签订日期,金额FROM订单WHERE EXISTS(SELECT*FROM职员WHERE姓名=“李二”)B) SELECT订单号,签订日期,金额FROM订单WHEREEXISTS(SELECT*FROM职员WHERE职员号=订单.职员号AND姓名=“李二”:C) SELECT订单号,签订日期,金额FROM订单WHERE IN(SELECT职员号FROM职员WHERE姓名=“李二”)D) SELECT订单号,签订日期,金额FROM订单WHEREIN(SELECT职员号FROM职员WHERE职员号=订单.职员号AND姓名=“李二”)


正确答案:B
题干中的SQL语句约功能是:查询那些姓名为“李二”的职员的订单号,签订日期和金额的信息;四个选项中只有选项B中的查询条件与此等价。WHERE条件后跟EXISTS不是IN,选项C和选项D可排除,用(SELECTFROM... WHERE...)实现选择出“李二”的职员,选项A缺少“订单.职员号=职员.职员号”条件表达式。

第9题:

显示没有签订任何订单的职员信息(职员号和姓名),正确的SQL语句是A) SELECT职员.职员号,姓名FROM职员JOIN订单ON订单.职员号二职员.职员号GROUP BY职员.职员号HAVING COUNT(*)=0B) SELECT职员.职员号,姓名FROM职员LEFT JOIN订单ON订单.职员号二职员.职员号GROUP BY职员.职员号HAVING COUNT(*)=0C)SELECT职员号,姓名FROM职员WHERE职员号NOT IN(SELECT职员号FROM订单)D) SELECT职员.职员号,姓名FROM职员WHERE职员.职员号<>(SELECT订单.职员号FROM订单)


正确答案:C
显示没有签订任何订单的职员信息等价于显示订单表中不存在的职员信息。四个选项中只有选项C符合查询条件。