Visual FoxPro数据库程序设计

单选题有如下职员表和订单表:职员(职员号(C,3),姓名(C,6),性别(C,2),职务(C,10))订单(订单号(C,4),客户号(C,4),职员号(C,3),签订日期(D),金额(N,6,2))查询还没有签订任何订单的职员信息,不正确的SQL语句是(  )。A SELECT * FROM职员WHERE职员号 !=ALL(SELECT职员号FROM订单)B SELECT * FROM职员WHERE职员号 !=(SELECT职员号FROM订单)C SELECT * FROM职员WHERE职员号 NOT I

题目
单选题
有如下职员表和订单表:职员(职员号(C,3),姓名(C,6),性别(C,2),职务(C,10))订单(订单号(C,4),客户号(C,4),职员号(C,3),签订日期(D),金额(N,6,2))查询还没有签订任何订单的职员信息,不正确的SQL语句是(  )。
A

SELECT * FROM职员WHERE职员号 !=ALL(SELECT职员号FROM订单)

B

SELECT * FROM职员WHERE职员号 !=(SELECT职员号FROM订单)

C

SELECT * FROM职员WHERE职员号 NOT IN(SELECT职员号FROM订单)

D

SELECT * FROM职员WHERE NOT EXISTS(SELECT * FROM订单WHERE职员号=职员.职员号)

参考答案和解析
正确答案: B
解析:
“!=”表示“不等于”;NOT IN表示“不在一组值的范围内”;EXISTS或NOT EXISTS是用来检查在子查询中是否有结果返回。本题查询没有签订任何订单的职员信息,所以以上短语均可用于查询。B项错误,语句格式不正确。
如果没有搜索结果,请直接 联系老师 获取答案。
相似问题和答案

第1题:

显示没有签订任何订单的职员信息(职员号和姓名),正确的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符合查询条件。

第2题:

使用如下3个表:职员.DBF:职员号C(3),姓名C(6),性别C(2),组号N(1),职务C(10)客户.DBF:客户号C(4),客户名C(36),地址C(36),所在城市C(36)订单.DBF:订单号C(4),客户号C(4),职员号C(3),签订日期D,金额N(6,2)查询金额最大的那10%订单的信息。正确的SQL语句是______。

A.SELECT*TOP 10 PERCENT FROM 订单

B.SELECT TOP 10% *FROM 订单 ORDER BY 金额

C.SELECT*TOP 10 PERCENT FROM 订单 ORDER BY 金额

D.SELECT TOP 10 PERCENT * FROM 订单 ORDER BY 金额 DESC


正确答案:D
解析:Visual FoxPro的SELECT—SQL命令的一般语法格式如下:
    SELECT[ALL|DISTINCT]目标列表达式>[,目标列表达式>]…
    FROM基本表(或视图>[,基本表(或视图)>]…
    [WHERE条件表达式>]
    [GROUPBY列名1>[HAVING内部函数表达式>]]
    [ORDERBY列名2>[ASCIDESC]]
    [TOP数值表达式>[PERCENT]]
  说明:①ORDER BY子句:指定查询结果中记录按列名2>排序,默认升序。选项ASC表示升序,DESC表示降序。
  ②TOP子句:TOP子句必须与ORDER BY子句同时使用。数值表达式>表示在符合条件的记录中选取的记录数。范围1~32 767,排序后的若干记录只计一个。含PERCENT选项肘,数值表达式>表示百分比,记录数为小数时自动取整,范围0.01~99.99。

第3题:

第(29)~(35)题使用如下三个表:有如下三个表: 职员.DBF:职员号C (3),姓名C (6),性别C (2),组号N (1),职务C(10) 客户.DBF:客户号C (4),客户名C (36),地址C (36),所在城市C (36)订单.DBF:订单号C (4),客户号C (4),职员号C (3),签订日期D,金额N (6.2) (29)查询金额最大的那10%订单的信息。正确的SQL语句是A)SELECT*TOP 10 PERCENT FROM订单B)SELECT TOP 10%*FROM订单ORDER BY金额C)SELECT*TOP 10 PERCENT FROM订单ORDER BY金额D)SELECT TOP 10 PERCENT*FROM订单ORDER BY金额DESC


正确答案:D
查询金额最大的10%的订单,应该是按金额从高向低降序排列,显示前面10%,只有选项D的描述是完整的。

第4题:

查询订单数在3个以上、订单的平均金额200元以上的职员号。正确的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
解析:查询订单的平均金额 200元以上,用平均函数表示为AVG(金额)>200,故可排除选项A和选项D;订单数在三个以上和订单的平均金额200元以上两个条件要同时满足是逻辑“与”关系,故选项B正确。

第5题:

假设 “ 订单 ” 表中有订单号、职员号、客户号和金额字段,正确的 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

第6题:

有以下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缺少“订单.职员号=职员.职员号”条件表达式。

第7题:

设有订单表order(其中包含字段:订单号,客户号,职员号,签订日期,金额),查询2007年所签订单的信息,并按金额降序排序,正确的SQL命令是( )。

A.SELECT * FROM order WHERE YEAR(签订日期)=2007 ORDER BY 金额 DESC

B.SELECT * FROM order WHILE YEAR(签订日期)=2007 ORDER BY 金额 ASC

C.SELECT * FROM order WHERE YEAR(签订日期)=2007 ORDER BY 金额 ASC

D.SELECT * FROM order WHILE YEAR(签订日期)=2007 ORDER BY 金额 DESC


正确答案:A
解析:在SQL语句中用WHERE表示条件,而又需要按金额的降序进行排序所以用“金额DESC”表示。

第8题:

查询订单数在3个以上、订单的平均金额200元以上的职员号。正确的SQL语句是A) SELECT职员号FROM订单GROUP BY职员号HAVING COUNT(*)>3 AND AVG_金额>200B) SELECT职员号FROM订单GROUP BY职员号日AVING COUNT(*)>3 AND AVG_(金额)>200C) SELECT职员号FROM订单GROUP BY职员号HAVING COUNT(*)>3 WHERE AVG_(金额>200D) SELECT职员号FROM订单GROUP BY职员号WHERE COUNT(*)>3 AND_AVG金额>200


正确答案:B
查询订单的平均金额200元以上,用平均函数表示为AVG(金额)>200,故可排除选项A和选项D;订单数在三个以上和订单的平均金额200元以上两个条件要同时满足是逻辑“与”关系,故选项B正确。

第9题:

第{TSE}题使用如下3个数据库表:

职员.dbf:职员号C(3),姓名C(6),性别C(2),组号N(1),职务C(10)

客户.dbf:客户号C(4),客户名C(36),地址C(36),所在城市C(36)

订单.dbf:订单号C(4),客户名C(4),职员号C(3),签订日期D,金额N(6.2)

{TS}查询金额最大的10%订单的信息,正确的SQL语句是( )。


正确答案:D

第10题:

设有订单表order(其中包含字段:订单号,客户号,职员号,签订日期,金额),查询 2007年所签订单的信息,并按金额降序排序,正确的SQL命令是( )。

A.SELECT*FROM order WHERE YEAR(签订日期)=2007 0RDER BY金额DESC

B.SELECT*FROM order WHILE YEAR(签订日期)=2007 0RDER BY金额ASC

C.SELECT*FROM order WHERE YEAR(签订日期)=2007 0RDER BY金额ASC

D.SELECT*FROM order WHILE YEAR(签订日期)=2007 0RDER BY金额DESC


正确答案:A
A。【解析】在SQL语句中用WHERE表示条件,按金额的降序进行排序用DESC。

更多相关问题