搜档网
当前位置:搜档网 › vf SQL语句题

vf SQL语句题

vf SQL语句题
vf SQL语句题

28 在SQL SELECT语句中为了将查询结果存储到临时表应该使用短语()。

A) TO CURSOR B) INTO CURSOR C) INTO DBF D) TO DBF 参考答案:B

【解析】在SQL查询语句的尾部添加INTO CURSOR <临时表名>可以将查询的结果放入指定的临时表中。此操作通常是将一个复杂的查询分解,临时表通常不是最终结果,可以接下来对临时表操作得到最终结果。生成的临时表是当前被打开的并且是只读的,关闭该文件时将自动删除。所以B)为正确选项。

29 SQL语句中删除视图的命令是()。

A) DROP TABLE B) DROP VIEW C) ERASE TABLE D) ERASE VIEW

参考答案:B

【解析】视图由于是从表派生而来的,所以不存在修改结构的问题,但是视图可以删除,其命令格式为:DROP VIEW <视图名>。因此B)选项正确。

30 设有订单表order(订单号,客户号,职员号,签订日期,金额),查询2011年所签订单的信息,并按金额降序排序,正确的SQL命令是()。

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

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

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

D) SELECT * FROM order WHILE YEAR(签订日期)=2011 ORDER BY 金额DESC参考答案:A

【解析】本题考查的SQL排序查询。根据SQL查询语句的基本结构,可以很容易发现选项B)和选项D)中,用来指定查询条件的WHERE关键字错误,首先排除这两个选项,然后,根据题目要求,需要按金额降序排序查询结果,在排序语句中,ASC短语表示升序排序,是默认的排序方式,可省略;而DESC短语表示降序排序,不可以缺少,选项A)和C)中,A)采用的是降序排序,与题目要求相符,正确答案为A)。

31 设有订单表order(订单号,客户号,职员号,签订日期,金额),删除2012年1月1日以前签订的订单记录,正确的SQL命令是()。

A) DELETE TABLE order WHERE 签订日期<{^2012-1-1}

B) DELETE TABLE order WHILE 签订日期>{^2012-1-1}

C) DELETE FROM order WHERE 签订日期<{^2012-1-1}

D) DELETE FROM order WHILE 签订日期>{^2012-1-1}参考答案:C

【解析】本题考查的是SQL操作语句的删除功能。删除记录命令的标准格式为:DELETE FROM <数据表名> WHERE <逻辑表达式>。其中FROM指定从哪个表中删除记录,WHERE 指定被删除的记录所满足的条件,如果不使用WHERE子句,则删除表中的全部记录。本题选项A)和B)都属于语法错误,没有DELETE TABLE这样的用法,而选项D)的WHERE关键字使用错误,正确答案为C)。

32 为"运动员"表增加一个"得分"字段的正确的SQL命令是()。

A) CHANGE TABLE 运动员ADD 得分I B) ALTER DATA运动员ADD得分I

C) ALTER TABLE运动员ADD得分I D) CHANGE TABLE运动员INSERT得分I参考答案:C

【解析】修改表结构可使用ALTER TABLE命令,为表增加字段的命令格式为:

ALTER TABLE <表名>

ADD[COLUMN]<字段类型>[<长度>[,<小数位数>])][NULL|NOT NULL]

[CHECK <逻辑表达式1>[ERROR <字符型文本提示信息>]][DEFAULT <默认值表达式>]

[ADD PRIMARY KEY <索引表达式2> TAG <索引名1>]

[ADD UNIQUE <索引表达式3> TAG <索引名2>]

套用ALTER TABLE的命令格式,选项C)正确。

33 计算每名运动员的"得分"的正确SQL命令是()。

A)

B)

C)

D) 参考答案:D

【解析】本题考查SQL数据更新语句。该语句的基本命令格式为:UPDATE 数据表名SET 字段名=更新表达式值WHERE 条件表达式。当不使用WHERE子句时,则更新全部记录。套用UPDATE的命令格式,本题的正确答案为D)。

34 检索"投中3分球"小于等于5个的运动员中"得分"最高的运动员的"得分",正确SQL 命令是()。

A) SELECT MAX(得分)得分FROM 运动员WHERE 投中3分球<=5

B) SELECT MAX(得分)得分FROM 运动员WHEN 投中3分球<=5

C) SELECT得分=MAX(得分)FROM 运动员WHERE 投中3分球<=5

D) SELECT得分=MAX(得分)FROM 运动员WHEN 投中3分球<=5 参考答案:A

【解析】本题考查的简单计算查询。求最大值的函数是MAX(),使用计算函数后,会改变原来的用于计算的字段名,如果要指定新的字段名,可以在该计算函数后通过AS短语指定新的字段名,也可以省略AS短语直接输入新字段名做为输出显示的字段名称。本题选项C)和D)中,使用计算函数的表达方式错误;而选项B)中,条件短语的关键字出错,应该是WHERE,而不是WHEN,正确答案是A)。

35 在SQL SELECT查询中,为了使查询结果排序必须使用短语()。

A) ASC B) DESC C) GROUP BY D) ORDER BY参考答案:D

【解析】ORDER BY 是对最终的查询结果进行排序,用ORDER BY短语可将查询结果按升序(ASC)或降序(DESC)排列。GROUP BY短语用于对查询结果进行分组。

36 查询单价在600元以上的主机板和硬盘的正确SQL命令是()。

A) SELECT * FROM 产品WHERE 单价>600 AND (名称=’主机板’ AND 名称=’硬盘’)

B) SELECT * FROM 产品WHERE 单价>600 AND (名称=’主机板’ OR 名称=’硬盘’)

C) SELECT * FROM 产品FOR 单价>600 AND (名称=’主机板’ AND 名称=’硬盘’)

D) SELECT * FROM 产品FOR 单价>600 AND (名称=’主机板’ OR 名称=’硬盘’)参考答案:B

【解析】SQL的基本格式为SELECT-FROM-WHERE,其中SELECT说明要查询的字段,FROM说明要查询的字段来自哪个表或哪些表,WHERE说明查询条件。查询主机板和硬盘信息应使用"or"连接。

37 查询客户名称中有"网络"二字的客户信息的正确SQL命令是()。

A) SELECT * FROM 客户FOR 名称LIKE "%网络%"

B) SELECT * FROM 客户FOR 名称="%网络%"

C) SELECT * FROM 客户WHERE 名称="%网络%"

D) SELECT * FROM 客户WHERE 名称LIKE "%网络%" 参考答案:D

【解析】LIKE为字符串匹配运算符,可与通配符"%"和"_"一起使用。"%"表示与任意多个字符匹配;"_"表示与任意一个字符匹配。查询客户名称中有"网络"二字的客户信息可用LIKE "%网络%"表示,正确的选项为D)。

68设有学生表S(学号,姓名,性别,年龄),查询所有年龄小于等于18岁的女同学、并按年龄进行降序排序生成新的表WS,正确的SQL命令是()。

A) SELECT * FROM S WHERE性别='女' AND 年龄<=18 ORDER BY 4 DESC INTO TABLE WS

B) SELECT * FROM S WHERE性别='女' AND 年龄<=18 ORDER BY 年龄INTO TABLE WS

C) SELECT * FROM S WHERE性别='女' AND 年龄<=18 ORDER BY '年龄' DESC INTO TABLE WS

D) SELECT * FROM S WHERE性别='女' OR 年龄<=18 ORDER BY '年龄' ASC INTO TABLE WS

参考答案:A

【解析】按年龄的降序排列,所以要用短语DESC,排序的字段有两种表示方式,分别是按列号和字段名排序,因为字段名是变量,故不能加引号。

69 设有学生选课表SC(学号,课程号,成绩),用SQL命令检索同时选修了课程号为"C1"和"C5"课程的学生的学号的正确命令是()。

A) SELECT 学号FROM SC WHERE 课程号='C1' AND 课程号='C5'

B) SELECT 学号FROM SC WHERE 课程号='C1' AND 课程号=(SELECT课程号

FROM SC WHERE课程号='C5')

C) SELECT 学号FROM SC WHERE 课程号='C1' AND 学号=(SELECT 学号FROM SC WHERE课程号='C5')

D) SELECT 学号FROM SC WHERE 课程号='C1' AND 学号IN (SELECT 学号FROM SC WHERE课程号='C5')

参考答案:D

【解析】这个查询不能用简单的查询实现,所以要用到嵌套查询,在嵌套查询中内外层的嵌套用IN而不用"=",D)选项正确。

70设有学生表S(学号,姓名,性别,年龄)、课程表C(课程号,课程名,学分)和学生选课表SC(学号,课程号,成绩),检索学号、姓名和学生所选课程的课程名和成绩,正确的SQL 命令是()。

A) SELECT 学号,姓名,课程名,成绩FROM S,SC,C WHERE S.学号=SC.学号AND SC.学号=C.学号

B) SELECT 学号,姓名,课程名,成绩FROM (S JOIN SC ON S.学号=SC.学号)JOIN C ON SC.课程号=C.课程号

C) SELECT S.学号,姓名,课程名,成绩FROM S JOIN SC JOIN C ON S.学号=SC.学号ON SC.课程号=C.课程号

D) SELECT S.学号,姓名,课程名,成绩FROM S JOIN SC JOIN C ON SC.课程号=C.课程号ON S.学号=SC.学号

参考答案:D

【解析】SQL是顺序执行命令语句,在多表联接查询时,各条件短语的执行顺序会影响到最终的查询结果。检索学号、姓名和学生所选课程的课程名和成绩,应为SELECT S.学号,姓名,课程名,成绩。A)、B)选项错误,而C)选项格式错误,选项D)正确。

71查询所有1982年3月20日以后(含)出生、性别为男的学生,正确的SQL语句是()。

A) SELECT * FROM 学生WHERE 出生日期>={^1982-03-20} AND 性别="男"

B) SELECT * FROM 学生WHERE 出生日期<={^1982-03-20} AND 性别="男"

C) SELECT * FROM 学生WHERE 出生日期>={^1982-03-20} OR 性别="男"

D) SELECT * FROM 学生WHERE 出生日期<={^1982-03-20} OR 性别="男"

参考答案:A

【解析】SQL的基本形式由SELECT-FROM-WHERE查询块组成。其中SELECT说明要查询的字段,FROM说明要查询的字段来自哪个表或哪些表,WHERE说明查询条件。要求时间为1982年3月20日以后,对应的SQL语句应为WHERE 出生日期>={^1982-03-20},and表示"且",本题A)选项正确。

72 设有学生(学号,姓名,性别,出生日期)和选课(学号,课程号,成绩)两个关系,计算刘明同学选修的所有课程的平均成绩,正确的SQL语句是()。

A) SELECT A VG(成绩)FROM 选课WHERE 姓名="刘明"

B) SELECT A VG(成绩)FROM 学生,选课WHERE 姓名="刘明"

C) SELECT A VG(成绩)FROM 学生,选课WHERE 学生.姓名="刘明"

D) SELECT A VG(成绩)FROM 学生,选课WHERE 学生.学号=选课.学号AND 姓名="刘明"

参考答案:D

【解析】SQL的核心是查询,它的基本形式由SELECT-FROM-WHERE查询块组成。其中SELECT说明要查询的字段,FROM说明要查询的字段来自哪个表或哪些表,可以对单个表或多个表进行查询,WHERE说明查询条件,即选择元组的条件。要计算刘明同学选修的所有课程的平均成绩,应设置where条件为WHERE 学生.学号=选课.学号AND 姓名="刘明",即D)选项正确。

73 设有学生(学号,姓名,性别,出生日期)和选课(学号,课程号,成绩)两个关系,并假定学号的第3、4位为专业代码。要计算各专业学生选修课程号为"101"课程的平均成绩,正确的SQL语句是()。

A) SELECT 专业AS SUBS(学号,3,2),平均分AS A VG (成绩)FROM 选课WHERE 课程号="101" GROUP BY 专业

B) SELECT SUBS(学号,3,2)AS 专业,A VG(成绩)AS 平均分FROM 选课WHERE 课程号="101" GROUP BY 1

C) SELECT SUBS(学号,3,2)AS 专业,A VG(成绩)AS 平均分FROM 选课WHERE 课程号="101" ORDER BY 专业

D) SELECT专业AS SUBS(学号,3,2),平均分AS A VG (成绩)FROM 选课WHERE 课程号="101" ORDER BY 1

参考答案:B

【解析】SUBSTR(<字符表达式>,<起始位置>[,<长度>])为取子串函数,从指定表达式值的指定起始位置取指定长度的子串作为函数值。要计算各专业学生选修课程号为"101"课程的平均成绩,应按学号分组,即GROUP BY 1。因此B)为正确选项。

74设有学生(学号,姓名,性别,出生日期)和选课(学号,课程号,成绩)两个关系,查询选修课程号为"101"课程得分最高的同学,正确的SQL语句是()。

A) SELECT 学生.学号,姓名FROM 学生,选课WHERE 学生.学号=选课.学号AND 课程号="101" AND 成绩>=ALL(SELECT 成绩FROM 选课)

B) SELECT 学生.学号,姓名FROM 学生,选课WHERE 学生.学号=选课.学号AND 成绩>=ALL (SELECT 成绩FROM 选课WHERE 课程号="101")

C) SELECT 学生.学号,姓名FROM 学生,选课WHERE 学生.学号=选课.学号AND 成绩>=ANY(SELECT 成绩FROM 选课WHERE 课程号="101")

D) SELECT 学生.学号,姓名FROM 学生,选课WHERE 学生.学号=选课.学号AND 课程号="101" AND 成绩>=ALL (SELECT 成绩FROM 选课WHERE 课程号="101")参考答案:D

【解析】查询的基本形式由SELECT-FROM-WHERE查询块组成。其中SELECT说明要查询的字段,FROM说明要查询的字段来自哪个表或哪些表,WHERE说明查询条件,即选择元组的条件。内层"SELECT 成绩FROM 选课WHERE 课程号="101""语句查询出了选修课程号为101的成绩,外层格式正确的为D)选项。

75 设有选课(学号,课程号,成绩)关系,插入一条记录到"选课"表中,学号、课程号和成绩分别是"02080111"、"103"和80,正确的SQL语句是()。

A) INSERT INTO 选课V ALUES("02080111","103",80)

B) INSERT V ALUES("02080111","103",80)TO 选课(学号,课程号,成绩)

C) INSERT V ALUES("02080111","103",80)INTO 选课(学号,课程号,成绩)

D) INSERT INTO 选课(学号,课程号,成绩)FROM V ALUES("02080111","103",80)

参考答案:A

【解析】插入数据的格式为INSERT INTO <表名> [(字段名1[,字段名2,……])] V ALUES(字段值1[,字段值2,……])。当插入的不是完整的记录时,可以通过字段名1,字段名2……来指定字段;V ALUES(字段值1[,字段值2,……])给出具体的记录值。B)、C)、D)选项的格式错误。

76将学号为"02080110"、课程号为"102"的选课记录的成绩改为92,正确的SQL语句是()。

A) UPDATE 选课SET 成绩WITH 92 WHERE 学号="02080110" AND 课程号="102"

B) UPDATE 选课SET 成绩=92 WHERE 学号="02080110" AND 课程号="102"

C) UPDATE FROM 选课SET 成绩WITH 92 WHERE 学号="02080110" AND 课程号="102"

D) UPDATE FROM 选课SET 成绩=92 WHERE 学号="02080110" AND 课程号="102"

参考答案:B

【解析】更新数据的命令格式为:UPDATE 表名SET 字段名1=表达式1 [,字段名2=表达式2……] [WHERE 条件]。一般使用WHERE子句指定更新的条件,并且一次可以更新多个字段;如果不使用WHERE子句,则更新全部记录。本题将学号为"02080110"、课程号为"102"的选课记录的成绩改为92,正确的命令格式为选项B)。

77 在SQL的ALTER TABLE语句中,为了增加一个新的字段应该使用短语()。

A) CREATE B) APPEND C) COLUMN D) ADD 参考答案:D

【解析】向表中添加新的字段和新的索引,其命令格式为:

ALTER TABLE <表名>

ADD[COLUMN]<字段类型>[<长度>[,<小数位数>])][NULL|NOT NULL]

[CHECK <逻辑表达式1>[ERROR <字符型文本提示信息>]][DEFAULT <默认值表达式>]

[ADD PRIMARY KEY <索引表达式2> TAG <索引名1>]

[ADD UNIQUE <索引表达式3> TAG <索引名2>]

增加一个新的字段应该使用ADD短语,即D)选项正确。

108 以下不属于SQL数据操作命令的是()。

A) MODIFY B) INSERT C) UPDA TE D) DELETE参考答案:A

【解析】SQL可以完成数据库操作要求的所有功能,包括数据查询、数据操作、数据定

义和数据控制,是一种全能的数据库语言。其中,数据操作功能所对应的命令为INSERT、UPDATE、DELETE。

109 SQL的SELECT语句中,"HA VING <条件表达式>"用来筛选满足条件的()。

A) 列B) 行C) 关系D) 分组参考答案:D

【解析】在SQL的SELECT语句中HA VING短语要结合GROUP BY 使用,用来进一步限定满足分组条件的元组,因此D)选项正确。

110 设有关系SC(SNO,CNO,GRADE) ,其中SNO、CNO分别表示学号和课程号(两者均为字符型) ,GRADE表示成绩(数值型) 。若要把学号为"S101"的同学,选修课程号为"C11",成绩为98分的记录插入到表SC中,正确的SQL语句是()。

A) INSERT INTO SC(SNO,CNO,GRADE)V ALUES ('S101','C11','98')

B) INSERT INTO SC(SNO,CNO,GRADE)V ALUES (S101,C11,98)

C) INSERT ('S101','C11','98' )INTO SC

D) INSERT INTO SC V ALUES ('S101','C11',98) 参考答案:D

【解析】插入命令:INSERT INTO <表名> [(<属性列1>,<属性列2>...)] V ALUES (eExpression1[,eExpression2,...]),若插入的是完整的记录时,可以省略<属性列1>,<属性列2>...;另外,SNO、CNO为字符型,故其属性值需要加引号,数值型数据不需要加引号。111以下有关SELECT短语的叙述中错误的是()。

A) SELECT短语中可以使用别名B) SELECT短语中只能包含表中的列及其构成的表达式

C) SELECT短语规定了结果集中列的顺序

D) 如果FROM短语引用的两个表有同名的列,则SELECT短语引用它们时必须使用表名前缀加以限定

参考答案:B

【解析】SELECT短语中除了包含表中的列及其构成的表达式外,还可以包括常量等其他元素,在SELECT短语中可以使用别名,并规定了结果集中的列顺序,如果FROM短语中引用的两个表有同名的列,则SELECT短语引用它们时必须使用表名前缀加以限定。

112 与"SELECT * FROM 学生INTO DBF A"等价的语句是()。

A) SELECT * FROM 学生INTO A B) SELECT * FROM 学生INTO TABLE A C) SELECT * FROM 学生TO TABLE A D) SELECT * FROM 学生TO DBF A 参考答案:B

【解析】在SQL查询语句的尾部添加INTO DBF|TABLE <表名>可以将查询的结果放入新生成的指定表中。INTO TABLE A等价于INTO DBF A,因此B)为正确选项。

113查询在"北京"和"上海"出生的学生信息的SQL语句是()。

A) SELECT * FROM 学生WHERE 出生地=’北京’ AND ‘上海’

B) SELECT * FROM 学生WHERE 出生地=’北京’ OR ‘上海’

C) SELECT * FROM 学生WHERE 出生地=’北京’ AND 出生地=’上海’

D) SELECT * FROM 学生WHERE 出生地=’北京’ OR 出生地=’上海’参考答案:D

【解析】SQL的核心是查询,它的基本形式由SELECT-FROM-WHERE查询块组成。其中SELECT说明要查询的字段,FROM说明要查询的字段来自哪个表或哪些表,可以对单个表或多个表进行查询,WHERE说明查询条件,即选择元组的条件。And表示"且",or表示"或",本题要求查询在"北京"和"上海"出生的学生信息,应设置条件为出生地='北京' OR 出生地='上海',即D)选项正确。

114 在SQL语句中,与表达式"年龄BETWEEN 12 AND 46"功能相同的表达式是()。

A) 年龄>=12 OR <=46 B) 年龄>=12 AND <=46

C) 年龄>=12 OR 年龄<=46 D) 年龄>=12 AND 年龄<=46 参考答案:D

【解析】BETWEEN…AND…表示在"…和…之间",其中包含等于,即大于等于AND 前面的数,小于等于AND后面的数。题干表达式的含义为在12和46之间的数字,而and表示"且",or表示"或",只有D)选项与此功能相同。

115 在SELECT语句中,以下有关HA VING短语的正确叙述是()。

A) HA VING短语必须与GROUP BY短语同时使用B) 使用HA VING短语的同时不能使用WHERE短语

C) HA VING短语可以在任意的一个位置出现D) HA VING短语与WHERE短语功能相

同参考答案:A

【解析】HA VING子句总是跟在GROUP BY子句之后,而不可以单独使用,HA VING子句和WHERE子句并不矛盾,在查询中是先用WHERE子句限定元组,然后进行分组,最后再用HA VING子句限定分组。因此A)选项说法正确。

116在SQL的SELECT查询的结果中,消除重复记录的方法是()。

A) 通过指定主索引实现B) 通过指定唯一索引实现C) 使用DISTINCT短语实现D) 使用WHERE短语实现

参考答案:C

【解析】SQL的核心是查询。SQL的查询命令也称作SELECT命令,它的基本形式由SELECT-FROM-WHERE查询块组成。其中SELECT说明要查询的字段,如果查询的字段需去掉重复值,则要用到DISTINCT短语;FROM说明要查询的字段来自哪个表或哪些表,可以对单个表或多个表进行查询,WHERE说明查询条件,即选择元组的条件。因此C)为正确选项。

117在Visual FoxPro中,如果要将学生表S(学号,姓名,性别,年龄)中"年龄"属性删除,正确的SQL命令是()。

A) ALTER TABLE S DROP COLUMN 年龄B) DELETE 年龄FROM S

C) ALTER TABLE S DELETE COLUMN 年龄D) ALTER TABLE S DELETE 年龄

参考答案:A

【解析】修改表结构可使用ALTER TABLE命令,删除表中的字段、索引及有效性规则、错误提示信息及默认值,其命令格式为:

ALTER TABLE <表名>

[DROP [COLUMN] <字段名>]

[DROP PRIMARY KEY TAG <索引名1>]

[DROP UNIQUE TAG <索引名2>]

[DROP CHECK]

其中,[DROP [COLUMN] <字段名>] 删除指定的字段;[DROP PRIMARY KEY <索引名1>] 删除主索引;[DROP UNIQUE TAG <索引名2>] 删除候选索引;[DROP CHECK] 删除有效性规则。本题要删除"年龄"属性,正确的命令应该是DROP COLUMN 年龄。

140 在数据库中创建表的CREATE TABLE命令中定义主索引、实现实体完整性规则的短语是()。

A) FOREIGN KEY B) DEFAULT C) PRIMARY KEY D) CHECK参考

答案:C

【解析】在建立表的语句CREATE TABLE中,FOREIGN KEY 短语用于建立和加强两个表数据之间的链接的一列或多列,即外键约束;PRIMARY KEY短语用于定义满足实体完

整性的主索引,DEFAULT短语用于定义属性的默认值;CHECK短语是用于定义属性的有效性规则的。

148为"歌手"表增加一个字段"最后得分"的SQL语句是()。

A) ALTER TABLE 歌手ADD 最后得分F(6,2) B) ALTER DBF歌手ADD 最后得分F 6,2

C) CHANGE TABLE 歌手ADD 最后得分F(6,2) D) CHANGE TABLE 学院INSERT 最后得分F 6,2

参考答案:A

【解析】修改表结构可使用ALTER TABLE命令,为表增加字段的命令格式为:

ALTER TABLE <表名>

ADD[COLUMN]<字段类型>[<长度>[,<小数位数>])][NULL|NOT NULL]

[CHECK <逻辑表达式1>[ERROR <字符型文本提示信息>]][DEFAULT <默认值表达式>]

[ADD PRIMARY KEY <索引表达式2> TAG <索引名1>]

[ADD UNIQUE <索引表达式3> TAG <索引名2>]

选项B)、C)、D)的格式错误,A)为正确答案。

149 设有关系歌手(歌手号,姓名,最后得分)和关系评分(歌手号,分数,评委号),每个歌手的最后得分是所有评委给出的分数的平均值,则计算歌手"最后得分"的SQL语句是()。

A) UPDATE 歌手SET 最后得分=(SELECT A VG(分数)FROM 评分WHERE 歌手号=

歌手.歌手号)

B) UPDATE 歌手SET 最后得分EXISTS (SELECT A VG(分数)FROM 评分WHERE 歌

手号=歌手.歌手号)

C) UPDATE 歌手SET 最后得分=(SELECT A VG(分数)FROM 评分)

D) UPDATE 歌手SET 最后得分=(SELECT A VG(分数)FROM 评分GROUP BY 评委号)

参考答案:A

【解析】查询的基本形式由SELECT-FROM-WHERE查询块组成。其中SELECT说明要查询的字段,FROM说明要查询的字段来自哪个表或哪些表,WHERE说明查询条件,即选择元组的条件。本题规定每个歌手的最后得分是所有评委给出的分数的平均值,正确的语句应为SELECT A VG(分数) FROM 评分WHERE 歌手号=歌手.歌手号,选项A)为正确答案。150 设有关系评分(歌手号,分数,评委号),插入一条记录到"评分"关系,歌手号、分数和评委号的值分别是"1001"、9.9和"105",正确的SQL语句是()。

A) INSERT V ALUES("1001",9.9,"105")INTO 评分(歌手号,分数,评委号)

B) INSERT TO 评分(歌手号,分数,评委号)V ALUES("1001",9.9,"105")

C) INSERT INTO 评分(歌手号,分数,评委号)V ALUES("1001",9.9,"105")

D) INSERT V ALUES("1001",9.9,"105")TO 评分(歌手号,分数,评委号)

参考答案:C

【解析】插入数据的格式为INSERT INTO <表名> [(字段名1[,字段名2,……])] V ALUES(字段值1[,字段值2,……]) 。当插入的不是完整的记录时,可以通过字段名1,字段名2……来指定字段;V ALUES(字段值1[,字段值2,……])给出具体的记录值。C)选项格式正确。

151 设有关系评分(歌手号,分数,评委号),如果每个歌手的"最后得分"的计算方法是:去掉一个最高分和一个最低分,取剩下分数的平均分。根据关系"评分"求每个歌手的"最后得分"并存储于表TEMP中,表TEMP中有两个字段:"歌手号"和"最后得分",并且按最后得分

降序排列,生成表TEMP的SQL语句是()。

A) SELECT 歌手号,(COUNT(分数)-MAX(分数)-MIN(分数))/(SUM(*)-2)最后得分FROM 评分INTO DBF TEMP GROUP BY 歌手号ORDER BY 最后得分DESC

B) SELECT 歌手号,(COUNT(分数)-MAX(分数)-MIN(分数))/(SUM(*)-2)最后得分FROM 评分INTO DBF TEMP GROUP BY 评委号ORDER BY 最后得分DESC

C) SELECT 歌手号,(SUM (分数)-MAX(分数)-MIN(分数))/(COUNT (*)-2)最后得分FROM 评分INTO DBF TEMP GROUP BY 评委号ORDER BY 最后得分DESC

D) SELECT 歌手号,(SUM(分数)-MAX(分数)-MIN(分数))/(COUNT(*)-2)最后得分FROM 评分INTO DBF TEMP GROUP BY 歌手号ORDER BY 最后得分DESC

参考答案:D

【解析】根据题干要求的计算歌手"最后得分"的计算方法,应使用Sum计算分数而非Count,因此首先排除A)、B)选项。求每个歌手的"最后得分",应该按照歌手号分组,即GROUP BY 歌手号。所以本题选D)。

152 与"SELECT * FROM 歌手WHERE NOT( 最后得分>9.00 OR 最后得分<8.00)"等价的语句是()。

A) SELECT * FROM 歌手WHERE 最后得分BETWEEN 9.00 AND 8.00

B) SELECT * FROM 歌手WHERE 最后得分>=8.00 AND 最后得分<=9.00

C) SELECT * FROM 歌手WHERE 最后得分>9.00 OR 最后得分<8.00

D) SELECT * FROM 歌手WHERE 最后得分<=8.00 AND 最后得分>=9.00 参考答案:B

【解析】题干的SQL语句的含义是,从"歌手"表中查询最后得分在8和9之间的记录。表示在…和…之间,其中包含等于,即大于等于AND前面的数,小于等于AND后面的数,因此A)选项的条件错误,应该为BETWEEN 8.00 AND 9.00。B)为正确答案。

153 为"评分"表的"分数"字段添加有效性规则:"分数必须大于等于0并且小于等于10",正确的SQL语句是()。

A) CHANGE TABLE 评分ALTER 分数SET CHECK 分数>=0 AND 分数<=10

B) ALTER TABLE 评分ALTER 分数SET CHECK 分数>=0 AND 分数<=10

C) ALTER TABLE 评分ALTER 分数CHECK 分数>=0 AND 分数<=10

D) CHANGE TABLE 评分ALTER 分数SET CHECK 分数>=0 OR 分数<=10

参考答案:B

【解析】修改表结构的命令是ALTER TABLE,添加有效性规则的命令格式为:

ALTER TABLE <表名>

ALTER [COLUMN] <字段名1>

[NULL|NOT NULL]

[SET DEFAULT <默认值表达式>]

[SET CHECK <逻辑表达式>[ERROR <字符型文本提示信息>]]

[RENAME COLUMN <字段名2> TO <字段名3>]

其中,ALTER[COLUMN]<字段名1>指出要修改列的字段名;SET DEFAULT<默认值表达式> 重新设置默认值;SET CHECK <逻辑表达式>[ERROR <字符型文本提示信息>] 重新设置字段的合法值及错误提示信息;RENAME COLUMN <字段名2> TO <字段名3> 修改字段名,<字段名2指定要修改的字段名,<字段名3>指定修改后的字段名。本题B)选项的格式正确。

154 设有关系歌手(歌手号,姓名),根据"歌手"关系建立视图myview,视图中含有包括了"歌手号"左边第一位是"1"的所有记录,正确的SQL语句是()。

A) CREATE VIEW myview AS SELECT * FROM 歌手WHERE LEFT(歌手号,1)="1"

B) CREATE VIEW myview AS SELECT * FROM 歌手WHERE LIKE("1",歌手号)

C) CREATE VIEW myview SELECT * FROM 歌手WHERE LEFT(歌手号,1)="1"

D) CREATE VIEW myview SELECT * FROM 歌手WHERE LIKE("1",歌手号) 参考答案:A

【解析】LEFT(<字符表达式>,<长度>)取子串函数,LEFT(歌手号,1)返回"歌手号"

左边第一位。本题要求视图中含有包括了"歌手号"左边第一位是"1"的所有记录,应设置条件为LEFT(歌手号,1)="1",因此A)选项正确。

155 删除视图myview的命令是()。

A) DELETE myview VIEW B) DELETE myview C) DROP myview VIEW D) DROP VIEW myview

参考答案:D

【解析】视图由于是从表派生而来的,所以不存在修改结构的问题,但是视图可以删除,其命令格式为:DROP VIEW <视图名>。本题要删除视图myview,正确的命令应为DROP VIEW myview,即D)选项正确。

156假设temp.dbf数据表中有两个字段"歌手号"和"最后得分"。下面程序段的功能是:将temp.dbf中歌手的"最后得分"填入"歌手"表对应歌手的"最后得分"字段中。在下划线处应该填写的SQL语句是()。

USE 歌手

DO WHILE .NOT. EOF()

REPLACE 歌手.最后得分WITH a[2]

SKIP

ENDDO

A) SELECT * FROM temp WHERE temp.歌手号=歌手.歌手号TO ARRAY a

B) SELECT * FROM temp WHERE temp.歌手号=歌手.歌手号INTO ARRAY a

C) SELECT * FROM temp WHERE temp.歌手号=歌手.歌手号TO FILE a

D) SELECT * FROM temp WHERE temp.歌手号=歌手.歌手号INTO FILE a

参考答案:B

【解析】在SQL查询语句的尾部添加INTO ARRAY <数组名>可以将查询的结果放入指定的数组中。本题B)选项的格式正确。

157 与"SELECT DISTINCT 歌手号FROM 歌手WHERE 最后得分>=ALL;(SELECT 最后得分FROM 歌手WHERE SUBSTR(歌手号,1,1)="2")"等价的SQL语句是()。

A) SELECT DISTINCT歌手号FROM 歌手WHERE 最后得分>=(SELECT MAX(最后得分)FROM 歌手WHERE SUBSTR(歌手号,1,1)="2")

B) SELECT DISTINCT 歌手号FROM 歌手WHERE 最后得分>=(SELECT MIN(最后得分)FROM 歌手WHERE SUBSTR(歌手号,1,1)="2")

C) SELECT DISTINCT 歌手号FROM 歌手WHERE 最后得分>=ANY(SELECT最后

得分FROM 歌手WHERE SUBSTR(歌手号,1,1)="2")

D) SELECT DISTINCT 歌手号FROM 歌手WHERE 最后得分>=SOME(SELECT最后得分FROM 歌手WHERE SUBSTR(歌手号,1,1)="2") 参考答案:A

【解析】SUBSTR(<字符表达式>,<起始位置>[,<长度>])为取子串函数,从指定表达式值的指定起始位置取指定长度的子串作为函数值。本题的SQL语句的含义为,从表名为歌手

的二维表中选出最后得分大于所有的歌手号的第一个字符为2的歌手的最后得分,与此等价的SQL命令为A)选项。

188 SQL语句中修改表结构的命令是()。

A) ALTER TABLE B) MODIFY TABLE C) ALTER STRUCTURE D) MODIFY STRUCTURE

参考答案:A 【解析】修改表结构的命令是ALTER TABLE,A)为正确选项。

189 假设"订单"表中有订单号、职员号、客户号和金额字段,如下SQL命令可以正确执行的是()。

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

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

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

A VG(金额)>200

D) SELECT 职员号FROM 订单GROUP BY 职员号WHERE COUNT(*)>3 AND A VG_

金额>200

参考答案:B

【解析】查询是由SELECT和FROM短语构成的无条件查询,或由SELECT、FROM和WHERE短语构成的条件查询。其基本格式为:SELECT <字段名表>FROM <表名表>WHERE <条件>GROUP BY <字段>HA VING <条件>ORDER BY<字段>INTO DBF|TABLE |。GROUP BY语句用来分组,HA VING语句用来限定分组必须满足的条件。C)、D)选项格式错误。取字段的平均值应用"()"而非"_",所以本题选B)。

190 要使"产品"表中所有产品的单价上浮8%,正确的SQL命令是()。

A) UPDATE产品SET 单价=单价+单价*8% FOR ALL B) UPDATE产品SET 单价=

单价*1.08 FOR ALL

C) UPDATE产品SET 单价=单价+单价*8% D) UPDATE 产品SET 单价=单价

*1.08参考答案:D

【解析】更新数据的命令格式为:UPDA TE 表名SET 字段名1=表达式1 [,字段名2=表达式2……] [WHERE 条件]。一般使用WHERE子句指定更新的条件,并且一次可以更新多个字段;如果不使用WHERE子句,则更新全部记录。本题要使"产品"表中所有产品的单价上浮8%,应设置表达式为"单价=单价*1.08",即D)选项正确。

191 假设同一名称的产品有不同的型号和产地,则计算每种产品平均单价的SQL命令是()。

A) SELECT 产品名称,A VG(单价)FROM 产品GROUP BY 单价

B) SELECT 产品名称,A VG(单价)FROM 产品ORDER BY 单价

C) SELECT 产品名称,A VG(单价)FROM 产品ORDER BY 产品名称

D) SELECT 产品名称,A VG(单价)FROM 产品GROUP BY 产品名称参考答案:D

【解析】使用GROUP BY短语首先依据产品名称对产品进行分组,然后再计算每种产品的平均单价(A VG)。ORDER BY短语则用来排序。本题D)选项正确。

192 设有S(学号,姓名,性别)和SC(学号,课程号,成绩)两个表,如下SQL语句检索选修的每门课程的成绩都高于或等于85分的学生的学号、姓名和性别,正确的SQL命令是()。

A) SELECT 学号,姓名,性别FROM s WHERE EXISTS ( SELECT * FROM sc WHERE SC.学号=S.学号AND成绩<=85 )

B) SELECT 学号,姓名,性别FROM s WHERE NOT EXISTS ( SELECT * FROM sc

WHERE SC.学号=S.学号AND成绩<=85 )

C) SELECT 学号,姓名,性别FROM s WHERE EXISTS (SELECT * FROM sc WHERE SC.学号=S.学号AND成绩> 85 )

D) SELECT 学号,姓名,性别FROM s WHERE NOT EXISTS ( SELECT * FROM sc WHERE SC.学号=S.学号AND成绩< 85 )参考答案:D

【解析】本题考查内外层嵌套查询以及使用量词和谓词的查询。EXISTS是谓词,EXISTS 或NOT EXISTS是用来检查在子查询中是否有结果返回,即存在元组或不存在元组。其本身并没有进行任何运算或比较,只用来返回子查询结果。本题要检索选修的每门课程的成绩都高于或等于85分的学生的学号、姓名和性别,SELECT * FROM sc WHERE SC.学号=S.学号AND成绩< 85已经筛选出成绩小于85分的所有记录,NOT EXISTS命令即返回高于或等于85分的记录,因此D)选项正确。

193 从"订单"表中删除签订日期为2012年1月10日之前(含)的订单记录,正确的SQL命令是()。

A) DROP FROM 订单WHERE 签订日期<={^2012-1-10}

B) DROP FROM 订单FOR 签订日期<={^2012-1-10}

C) DELETE FROM 订单WHERE 签订日期<={^2012-1-10}

D) DELETE FROM 订单FOR 签订日期<={^2012-1-10}参考答案:C

【解析】删除数据的命令格式为:DELETE FROM 表名[WHERE 条件]。首先排除A)、B)选项。WHERE指定被删除的记录所满足的条件,如果不使用WHERE子句,则删除该表中的全部记录。D)选项格式错误,所以本题选C)。

194 "图书"表中有字符型字段"图书号"。要求用SQL DELETE命令将图书号以字母A开头的图书记录全部删除,正确的命令是()。

A) DELETE FROM 图书FOR图书号LIKE "A%" B) DELETE FROM 图书WHILE 图书号LIKE "A%"

C) DELETE FROM 图书WHERE 图书号="A*" D) DELETE FROM 图书WHERE 图书号LIKE "A%"

参考答案:D

【解析】LIKE为字符串匹配运算符,可与通配符"%"和"_"一起使用。"%"表示与任意多个字符匹配;"_"表示与任意一个字符匹配。图书编号以字母A开头的图书记录可用LIKE "A%"表示,使用DELETE命令删除记录,正确的选项为D)。

195 SQL的数据操作语句不包括()。

A) INSERT B) UPDA TE C) DELETE D) CHANGE参考答案:D

【解析】SQL可以完成数据库操作要求的所有功能,包括数据查询、数据操作、数据定义和数据控制,是一种全能的数据库语言。其中,数据操作功能所对应的命令为INSERT、UPDATE、DELETE,本题正确答案为D)。

196 与"SELECT DISTINCT 产品号FROM 产品WHERE 单价>=ALL(SELECT 单价FROM 产品WHERE SUBSTR(产品号,1,1)="2")"等价的SQL命令是()。

A) SELECT DISTINCT产品号FROM 产品WHERE 单价>=;(SELECT MAX(单

价)FROM 产品WHERE SUBSTR(产品号,1,1)="2")

B) SELECT DISTINCT 产品号FROM 产品WHERE 单价>=;(SELECT MIN(单

价)FROM 产品WHERE SUBSTR(产品号,1,1)="2")

C) SELECT DISTINCT 产品号FROM 产品WHERE 单价>=ANY;(SELECT单价FROM 产品WHERE SUBSTR(产品号,1,1)="2")

D) SELECT DISTINCT 产品号FROM 产品WHERE 单价>=SOME ;(SELECT单价

FROM 产品WHERE SUBSTR(产品号,1,1)="2") 参考答案:A

【解析】SUBSTR(<字符表达式>,<起始位置>[,<长度>])为取子串函数,从指定表达式值的指定起始位置取指定长度的子串作为函数值。DISTINCT语句用来去掉重复值。本题主要考察嵌套查询,与题目含义等价的应为A)选项。

197 根据"产品"表建立视图myview,视图中含有包括了"产品号"左边第一位是"1"的所有记录,正确的SQL命令是()。

A) CREATE VIEW myview AS SELECT * FROM 产品WHERE LEFT(产品号,1)="1"

B) CREATE VIEW myview AS SELECT * FROM 产品WHERE LIKE("1",产品号)

C) CREATE VIEW myview SELECT * FROM 产品WHERE LEFT(产品号,1)="1"

D) CREATE VIEW myview SELECT * FROM 产品WHERE LIKE("1",产品号)参考答案:A

【解析】使用CREATE VIEW命令可以创建一个视图,要求视图中含有包括了"产品号"左边第一位是"1"的所有记录,可使用SELECT命令。首先排除C)、D)选项,where指定的条件"WHERE LEFT(产品号,1)="1""正确,因此A)选项为正确选项。

228 SQL语言的查询语句是()。

A) INSERT B) UPDATE C) DELETE D) SELECT参考答案:D

【解析】SQL的核心是查询。SQL的查询命令也称作SELECT命令,它的基本形式由SELECT-FROM-WHERE查询块组成,多个查询块可以嵌套执行。本题D)选项正确。229 SQL的SELECT语句中,"HA VING <条件表达式>"用来筛选满足条件的()。

A) 列B) 行C) 关系D) 分组参考答案:D

【解析】SQL的SELECT语句中,HA VING短语用来限定分组必须满足的条件,D)选项正确。

230 在Visual FoxPro中,假设教师表T(教师号,姓名,性别,职称,研究生导师)中,性别是C型字段,研究生导师是L型字段。若要查询"是研究生导师的女老师"信息,那么SQL语句"SELECT * FROM T WHERE <逻辑表达式>"中的<逻辑表达式>应是()。

A) 研究生导师AND 性别="女" B) 研究生导师OR 性别="女"

C) 性别="女" AND 研究生导师=.F. D) 研究生导师=.T. OR 性别=女参考答案:A

【解析】本题要查询"是研究生导师的女老师"信息,筛选条件应设置为研究生导师,且性别为女,对应的SQL语句中的逻辑表达式即是"研究生导师AND 性别="女"",A)选项正确。

231 假设有选课表SC(学号,课程号,成绩),其中学号和课程号为C型字段,成绩为N型字段,查询学生有选修课程成绩小于60分的学号,正确的SQL语句是()。

A) SELECT DISTINCT学号FROM SC WHERE "成绩" < 60

B) SELECT DISTINCT学号FROM SC WHERE成绩< "60"

C) SELECT DISTINCT学号FROM SC WHERE成绩< 60

D) SELECT DISTINCT "学号" FROM SC WHERE "成绩" < 60 参考答案:C

【解析】SQL查询的基本格式为SELECT-FROM-WHERE,DISTINCT语句用于去掉重复值。本题查询成绩小于60分的学号,where指定的条件应为"WHERE成绩<60",因此C)选项正确。

232 查询学生表的全部记录并存储于临时表文件one中的SQL命令是()。

A) SELECT * FROM 学生表INTO CURSOR one B) SELECT * FROM 学生表TO CURSOR one

C) SELECT * FROM 学生表INTO CURSOR DBF one D) SELECT * FROM 学生表TO CURSOR DBF one

参考答案:A

【解析】在SQL查询语句的尾部添加INTO CURSOR <临时表名>可以将查询的结果放入指定的临时表中。此操作的通常是将一个复杂的查询分解,临时表通常不是最终结果,可以接下来对临时表操作得到最终结果。生成的临时表是当前被打开的并且是只读的,关闭该文件时将自动删除。本题正确答案为A)。

233 查询成绩在70分至85分之间学生的学号、课程号和成绩,正确的SQL语句是()。

A) SELECT学号,课程号,成绩FROM sc WHERE成绩BETWEEN 70 AND 85

B) SELECT学号,课程号,成绩FROM sc WHERE成绩>=70 OR 成绩<=85

C) SELECT学号,课程号,成绩FROM sc WHERE成绩>=70 OR <=85

D) SELECT学号,课程号,成绩FROM sc WHERE成绩>=70 AND <=85参考答案:A

【解析】简单查询是基于一个表进行的查询,是由SELECT和FROM短语构成的无条件查询,或由SELECT、FROM和WHERE短语构成的条件查询。BETWEEN…AND…为常用运算符,表示在…和…之间,其中包含等于,即大于等于AND前面的数,小于等于AND后面的数。本题查询成绩在70分至85分之间学生的学号、课程号和成绩,WHERE指定的条件应为"WHERE成绩BETWEEN 70 AND 85",因此A)选项正确。

234 查询有选课记录,但没有考试成绩(成绩字段是空值)的学生的学号和课程号,正确的SQL 语句是()。

A) SELECT 学号,课程号FROM sc WHERE 成绩=""

B) SELECT 学号,课程号FROM sc WHERE 成绩=NULL

C) SELECT 学号,课程号FROM sc WHERE 成绩IS NULL

D) SELECT 学号,课程号FROM sc WHERE 成绩参考答案:C

【解析】本题查询没有考试成绩的学号和课程号,可以使用空值(IS NULL)查询,NULL 或NOT NULL说明字段允许或不允许为空值。选项C)格式正确。

235 查询选修C2课程号的学生姓名,下列SQL语句中错误的是()。

A) SELECT姓名FROM S WHERE EXISTS (SELECT * FROM SC WHERE 学号=S.学号AND课程号=‘C2’ )

B) SELECT姓名FROM S WHERE学号IN (SELECT学号FROM SC WHERE课程号=‘C2’)

C) SELECT姓名FROM S JOIN SC ON S.学号=SC.学号WHERE 课程号=‘C2’

D) SELECT姓名FROM S WHERE学号=(SELECT 学号FROM SC WHERE 课程号=‘C2’)

参考答案:D

【解析】本题A)选项为使用量词和谓语的查询,有两种格式:格式1:<表达式><比较运算符>[ANY|ALL|SOME](子查询)。格式2:[NOT]EXISTS(子查询)。C)选项为超链接查询,B)和D)选项为简单查询,SELECT查询的基本格式为:SELECT <字段名表>FROM <表名表>WHERE <条件>GROUP BY <字段>HA VING <条件>ORDERBY<字段>INTO DBF|TABLE |。D)选项格式错误。

236 下列与修改表结构相关的命令是()。

A) INSERT B) ALTER C) UPDA TE D) CREATE参考答案:B

【解析】修改表结构的命令是ALTER TABLE,而UPDATE命令用于更新数据、INSERT 命令用于插入数据、CREA TE TABLE命令用于新建表。因此本题选B)。

237 在SQL SELECT语句中与INTO TABLE等价的短语是()。

A) INTO DBF B) TO TABLE C) INTO FORM D) INTO FILE参考答案:A

【解析】在SQL查询语句的尾部添加INTO DBF|TABLE <表名>可以将查询的结果放入新生

成的指定表中。INTO TABLE命令与INTO DBF命令等价,即A)选项正确。

268 假设有student表,正确添加字段"平均分数"的命令是()。

A) ALTER TABLE student ADD 平均分数F(6,2) B) ALTER DBF student ADD平均分数F 6,2

C) CHANGE TABLE student ADD平均分数F(6,2) D) CHANGE TABLE student INSERT 平均分数6,2

参考答案:A

【解析】向表中添加新的字段,其命令格式为:

ALTER TABLE <表名>

ADD[COLUMN]<字段类型>[<长度>[,<小数位数>])][NULL|NOT NULL]

[CHECK <逻辑表达式1>[ERROR <字符型文本提示信息>]][DEFAULT <默认值表达式>]

[ADD PRIMARY KEY <索引表达式2> TAG <索引名1>]

[ADD UNIQUE <索引表达式3> TAG <索引名2>]

A)选项格式正确。

269 学生表中有"学号"、"姓名"和"年龄"三个字段,SQL语句"SELECT 学号FROM 学生"完成的关系操作称为()。A) 选择B) 投影C) 连接D) 并

参考答案:B

【解析】投影运算是从一个关系中选出若干指定字段的值的操作,从列的角度进行的运算。选择运算是从一个关系中找出满足给定条件的记录的操作,从行的角度进行的运算。连接关系是把两个关系中的记录按一定条件横向结合,生成一个新的关系。并运算要求有两个表。"SELECT 学号FROM 学生"指从"学生"表中查询字段"学号",因此为投影运算。270 若SQL语句中的ORDER BY短语中指定了多个字段,则()。

A) 依次按自右至左的字段顺序排序B) 只按第一个字段排序

C) 依次按自左至右的字段顺序排序D) 无法排序参考答案:C

【解析】ORDER BY短语用来对查询的结果进行排序,可以指定多个字段排序,还可以定义每个字段的排序方法。ORDER BY的排序是从左到右的。所以若SQL语句中的ORDER BY短语中指定了多个字段,则依次按自左至右的字段顺序排序。

271 与"SELECT * FROM 教师表INTO DBF A"等价的语句是()。

A) SELECT * FROM 教师表TO DBF A B) SELECT * FROM 教师表TO TABLE A

C) SELECT * FROM 教师表INTO TABLE A D) SELECT * FROM 教师表INTO A 参考答案:C

【解析】在SQL查询语句的尾部添加INTO DBF|TABLE <表名>可以将查询的结果放入新生成的指定表中。SELECT * FROM 教师表INTO TABLE A等价于SELECT * FROM 教师表INTO DBF A,即选项C)正确。

272 查询"教师表"的全部记录并存储于临时文件one.dbf中的SQL命令是()。

A) SELECT * FROM 教师表INTO CURSOR one B) SELECT * FROM 教师表TO CURSOR one

C) SELECT * FROM 教师表INTO CURSOR DBF one D) SELECT * FROM 教师表TO CURSOR DBF one

参考答案:A

【解析】在SQL查询语句的尾部添加INTO CURSOR <临时表名>可以将查询的结果放入指定的临时表中。此操作通常是将一个复杂的查询分解,临时表通常不是最终结果,可以接

下来对临时表操作得到最终结果。生成的临时表是当前被打开的并且是只读的,关闭该文件时将自动删除。本题正确答案为A)。

273 "教师表"中有"职工号"、"姓名"和"工龄"等字段,其中"职工号"为主关键字,建立"教师表"的SQL命令是()。

A) CREATE TABLE 教师表(职工号C(10)PRIMARY,姓名C(20),工龄I)

B) CREATE TABLE 教师表(职工号C(10)FOREIGN,姓名C(20),工龄I)

C) CREATE TABLE 教师表(职工号C(10)FOREIGN KEY,姓名C(20),工龄I)

D) CREATE TABLE 教师表(职工号C(10)PRIMARY KEY,姓名C(20),工龄I)参考答案:D

【解析】在Visual FoxPro中可以通过SQL的CREATE TABLE命令建立表,PRIMARY KEY用来设置主关键字。本题"职工号"为主关键字,因此D)选项正确。

274 创建一个名为student的新类,保存新类的类库名称是mylib,新类的父类是Person,正确的命令是()。

A) CREATE CLASS mylib OF student As Person B) CREATE CLASS student OF Person As mylib

C) CREATE CLASS student OF mylib As Person D) CREATE CLASS Person OF mylib As student参考答案:C

【解析】建立类语句的格式为"CREATE CLASS 类名OF 类库名?AS 父类",题中要求新类的类库名称是mylib,父类是person,因此,正确的命令是"CREATE CLASS student OF mylib As Person",即C)选项正确。

275"教师表"中有"职工号"、"姓名"、"工龄"和"系号"等字段,"学院表"中有"系名"和"系号"等字段,计算"计算机"系教师总数的命令是()。

A) SELECT COUNT(*)FROM 教师表JOIN 学院表ON 教师表.系号=学院表.系号WHERE 系名="计算机"

B) SELECT COUNT(*)FROM 教师表JOIN 学院表ON 教师表.系号=学院表.系号ORDER BY 教师表.系号HA VING 学院表.系名="计算机"

C) SELECT SUM(*)FROM 教师表JOIN 学院表ON 教师表.系号=学院表.系号GROUP BY 教师表.系号HA VING 学院表.系名="计算机"

D) SELECT SUM(*)FROM 教师表JOIN 学院表ON 教师表.系号=学院表.系号ORDER BY 教师表.系号HA VING 学院表.系名="计算机"

参考答案:A

【解析】本题不必使用排序(ORDER BY)、分组(GROUP BY)和超链接查询(JOIN),A)选项语法格式正确。

276 "教师表"中有"职工号"、"姓名"、"工龄"和"系号"等字段,"学院表"中有"系名"和"系号"等字段,求教师总数最多的系的教师人数,正确的命令序列是()。

A) SELECT 教师表.系号,COUNT(*)AS 人数FROM 教师表,学院表GROUP BY 教师表.系号INTO DBF TEMP

SELECT MAX(人数)FROM TEMP

B) SELECT 教师表.系号,COUNT(*)FROM 教师表,学院表WHERE 教师表.系号=学院表.系号GROUP BY 教师表.系号INTO DBF TEMP

SELECT MAX(人数)FROM TEMP

C) SELECT 教师表.系号,COUNT(*)AS 人数FROM 教师表,学院表WHERE 教师表.系号=学院表.系号GROUP BY 教师表.系号TO FILE TEMP

SELECT MAX(人数)FROM TEMP

D) SELECT 教师表.系号,COUNT(*)AS 人数FROM 教师表,学院表WHERE 教师表.系号=学院表.系号GROUP BY 教师表.系号INTO DBF TEMP

SELECT MAX(人数)FROM TEMP

参考答案:D

解析】要查询教师总数最多的系的教师人数,首先排除B)选项。输出查询结果应使用into 而不是to,排除C)选项。而B)选项命令语句的顺序错误,所以本题选D)。

277 假设"图书"表中有C型字段"图书编号",要求将图书编号以字母A开头的图书记录全部打上删除标记,可以使用SQL命令()。

A) DELETE FROM 图书FOR 图书编号="A" B) DELETE FROM 图书WHERE

图书编号="A%"

C) DELETE FROM 图书FOR 图书编号="A*" D) DELETE FROM 图书WHERE 图书编号LIKE "A%"

参考答案:D

【解析】LIKE为字符串匹配运算符,可与通配符"%"和"_"一起使用。"%"表示与任意多个字符匹配;"_"表示与任意一个字符匹配。图书编号以字母A开头的图书记录可用LIKE "A%"表示,使用DELETE命令删除记录,正确的选项为D)。

293 在Visual FoxPro中,执行SQL的DELETE命令和传统的FoxPro DELETE命令都可以删除数据库表中的记录,下面正确的描述是()。

A) SQL的DELETE命令删除数据库表中的记录之前,不需要先用USE命令打开表

B) SQL的DELETE命令和传统的FoxPro DELETE命令删除数据库表中的记录之前,都需要先用命令USE打开表

C) SQL的DELETE命令可以物理地删除数据库表中的记录,而传统的FoxPro DELETE命令只能逻辑删除数据库表中的记录

D) 传统的FoxPro DELETE命令还可以删除其它工作区中打开的数据库表中的记录参考答案:A

【解析】SQL的删除数据命令格式是:DELETE FROM TableName [WHERE Condition],语名中本身已包含了表名,所以不需要先用USE命令打开;SQL的DELETE命令和传统的FoxPro DELETE命令都是逻辑删除记录,如果要物理删除记录,都需要使用PACK命令;传统的FoxPro DELETE命令只能删除本工作区中打开的数据库表中的记录。

308 SQL语言的更新命令的关键词是()。

A) INSERT B) UPDATE C) CREATE D) SELECT 参考答案:B 【解析】更新数据的命令格式为:UPDATE 表名SET 字段名1=表达式1 [,字段名2=表达式2……] [WHERE 条件]。一般使用WHERE子句指定更新的条件,并且一次可以更新多个字段;如果不使用WHERE子句,则更新全部记录。INSERT TABLE命令用于插入数据,CREATE TABLE用于新建表。

309 查询尚未最后确定订购单的(订购日期尚未确定)有关信息的正确命令是()。

A) SELECT 名称,联系人,电话号码,订单号FROM 客户,订购单WHERE 客户.客户号=订购单.客户号AND 订购日期IS NULL

B) SELECT 名称,联系人,电话号码,订单号FROM 客户,订购单WHERE 客户.客户号=订购单.客户号AND 订购日期=NULL

C) SELECT 名称,联系人,电话号码,订单号FROM 客户,订购单FOR 客户.客户号=订购单.客户号AND 订购日期IS NULL

D) SELECT 名称,联系人,电话号码,订单号FROM 客户,订购单FOR 客户.客户号=订购单.客户号AND 订购日期=NULL 参考答案:A

【解析】查询尚未最后确定订购单的有关信息,可使用空值查询,IS NULL为空值,NULL 或NOT NULL说明字段允许或不允许为空值。本题A)格式正确。

310 查询订购单的数量和所有订购单金额合计的正确命令是()。

A) SELECT COUNT(DISTINCT 订单号),SUM(数量*单价)FROM 产品JOIN 订购单名细ON 产品.产品号=订购单名细.产品号

B) SELECT COUNT(订单号),SUM(数量*单价)FROM 产品JOIN 订购单名细ON 产品.产品号=订购单名细.产品号

C) SELECT COUNT(DISTINCT 订单号),SUM(数量*单价)FROM 产品,订购单名细ON 产品.产品号=订购单名细.产品号

D) SELECT COUNT(订单号),SUM(数量*单价)FROM 产品,订购单名细ON 产品.产品号=订购单名细.产品号

参考答案:A

【解析】SQL的核心是查询。SQL的查询命令也称作SELECT命令,它的基本形式由SELECT -FROM-WHERE查询块组成,多个查询块可以嵌套执行。超连接查询有四种连接方式,其基本格式如下:SELECT …FROM 左表INNER︱LEFT︱RIGHT︱FULL JOIN 右表ON 连接条件WHERE 其他条件。本题DISTINCT用于去掉重复值,COUNT(DISTINCT 订单号)表示订购单的数量,SUM(数量*单价)为订购单金额,A)选项格式正确。

311 假设客户表中有客户号(关键字)C1~C10共10条客户记录,订购单表有订单号(关键

字)OR1~OR8共8条订购单记录,并且订购单表参照客户表。如下命令可以正确执行的是()。

A) INSERT INTO 订购单V ALUES(‘OR5’,‘C5’,{^2008/10/10})

B) INSERT INTO 订购单V ALUES(‘OR5’,‘C11’,{^2008/10/10})

C) INSERT INTO 订购单V ALUES(‘OR9’,‘C11’,{^2008/10/10})

D) INSERT INTO 订购单V ALUES(‘OR9’,‘C5’,{^2008/10/10}) 参考答案:D

【解析】INSERT INTO <表名> [(字段名1[,字段名2,……])] V ALUES(字段值1[,字段值2,……])命令用于插入数据,当插入的不是完整的记录时,可以通过字段名1,字段名2……来指定字段;V ALUES(字段值1[,字段值2,……])给出具体的记录值。本题订购单表参照客户表,客户表中的记录为C1~C10,订购单表的订购单记录为OR1~OR8,因此,只有D)选项可以正确执行。

312 删除视图myview的命令是()。

A) DELETE myview B) DELETE VIEW myview C) DROP VIEW myview D) REMOVE VIEW myview

参考答案:C

【解析】视图由于是从表派生而来的,所以不存在修改结构的问题,但是视图可以删除,其命令格式为:DROP VIEW <视图名>。

313 查询第一作者为"张三"的所有书名及出版社,正确的SQL语句是()。

A) SELECT 书名,出版社FROM 图书WHERE 第一作者=张三

B) SELECT 书名,出版社FROM 图书WHERE 第一作者="张三"

C) SELECT 书名,出版社FROM 图书WHERE "第一作者"=张三

D) SELECT 书名,出版社FROM 图书WHERE "第一作者"="张三" 参考答案:B

【解析】简单查询是基于一个表进行的查询,是由SELECT和FROM短语构成的无条件查询,或由SELECT、FROM和WHERE短语构成的条件查询。本题查询第一作者为张三,条件应

该是第一作者="张三",因此B)为正确选项。

314 查询尚未归还书(还书日期为空值)的图书编号和借书日期,正确的SQL语句是()。

A) SELECT图书编号,借书日期FROM 借阅WHERE 还书日期=""

B) SELECT图书编号,借书日期FROM 借阅WHERE 还书日期=NULL

C) SELECT图书编号,借书日期FROM 借阅WHERE 还书日期IS NULL

D) SELECT图书编号,借书日期FROM 借阅WHERE 还书日期参考答案:C 【解析】SQL的核心是查询,简单查询是由SELECT和FROM短语构成的无条件查询,或由SELECT、FROM和WHERE短语构成的条件查询。其基本格式为:SELECT <字段名表>FROM <表名表>WHERE <条件>GROUP BY <字段>HA VING <条件>ORDERBY

<字段>INTO DBF|TABLE|。本题查询尚未归还书的图书编号和借书日期,可利用空值查询,使用IS NULL字符,选项C)格式正确。

315 查询"读者"表的所有记录并存储于临时表文件one中的SQL语句是()。

A) SELECT * FROM 读者INTO CURSOR one B) SELECT * FROM 读者TO CURSOR one

C) SELECT * FROM 读者INTO CURSOR DBF one D) SELECT * FROM 读者TO CURSOR DBF one

参考答案:A

【解析】在SQL查询语句的尾部添加INTO CURSOR <临时表名>可以将查询的结果放入指定的临时表中。此操作的通常是将一个复杂的查询分解,临时表通常不是最终结果,可以接下来对临时表操作得到最终结果。因此,A)为正确选项。

317 查询单位名称中含"北京"字样的所有读者的借书证号和姓名,正确的SQL语句是()。

A) SELECT 借书证号,姓名FROM 读者WHERE 单位="北京%"

B) SELECT 借书证号,姓名FROM 读者WHERE 单位="北京*"

C) SELECT 借书证号,姓名FROM 读者WHERE 单位LIKE "北京*"

D) SELECT 借书证号,姓名FROM 读者WHERE 单位LIKE "%北京%" 参考答案:D

【解析】简单查询是基于一个表进行的查询,是由SELECT和FROM短语构成的无条件查询,或由SELECT、FROM和WHERE短语构成的条件查询。LIKE为字符串匹配运算符,可与通配符"%"和"_"一起使用。"%"表示与任意多个字符匹配;"_"表示与任意一个字符匹配。本题D)选项格式正确。

331 对表SC(学号C(8),课程号C(2),成绩N(3),备注C(20)),可以插入的记录是()。A) (‘20080101’,‘c1’,‘90’,NULL) B) (‘20080101’,‘c1’,90 ,‘成绩优秀’)

C) (‘20080101’,‘c1’,‘90’,‘成绩优秀’) D) (‘20080101’,‘c1’,‘79’,‘成绩优秀’)参考

答案:B

332 在Visual FoxPro中,下列关于SQL表定义语句(CREATE TABLE)的说法中错误的是()。

A) 可以定义一个新的基本表结构B) 可以定义表中的主关键字

C) 可以定义表的域完整性、字段有效性规则等D) 对自由表,同样可以实现其完整性、有效性规则等信息的设置

参考答案:D

【解析】用CREATE TABLE命令可以完成表设计器所能完成的所有功能。除了建立表的基本功能外,CREATE TABLE命令还包括满足实体完整性的主关键字PRIMARY KEY、定义域完整性的CHECK约束及出错提示信息ERROR、定义默认值的DEFAULT等;而自由表作为不属于任何数据库的表,不支持主关键字、参照完整性和表之间的联系。所以D)选项说法

错误。

335 假设所有学生都已选课,所有的选课成绩都已确定。检索所有选课成绩都在90分以上(含)的学生信息,正确的SQL命令是()。

A) SELECT * FROM 学生WHERE 学号IN (SELECT 学号FROM 选课WHERE 成绩>=90)

B) SELECT * FROM 学生WHERE 学号NOT IN (SELECT 学号FROM 选课WHERE 成绩<90)

C) SELECT * FROM 学生WHERE 学号EXISTS (SELECT 学号FROM 选课WHERE 成绩<90)

D) SELECT * FROM 学生WHERE 学号=ANY (SELECT 学号FROM 选课WHERE 成绩>=90)

参考答案:B

【解析】本题主要考查嵌套查询。嵌套查询一般分为两层,内层和外层,被括号括起来的为内层查询,先进行内层查询,在内层查询的基础上再进行外层查询。本题检索所有选课成绩都在90分以上(含) 的学生信息,可用"NOT IN (SELECT 学号FROM 选课WHERE 成绩<90)"语句表示,因此,B)为正确选项。

347 在SQL SELECT语句的ORDER BY短语中如果指定了多个字段,则()。

A) 无法进行排序B) 只按第一个字段排序C) 按从左至右优先依次排序D) 按从右至左优先依次排序

参考答案:C

【解析】ORDER BY 短语中如果指定了多个字段,则按照从左至右的顺序依次排序。

348 给student表增加一个"平均成绩"字段(数值型,总宽度6,2位小数)的SQL命令是()。

A) ALTER TABLE student ADD 平均成绩N(6,2) B) ALTER TABLE student ADD 平均成绩D(6,2)

C) ALTER TABLE student ADD 平均成绩E(6,2) D) ALTER TABLE student ADD 平均成绩Y(6,2)

参考答案:A

【解析】内存变量的数据类型包括字符型(C)、数值型(N)、货币型(Y)、逻辑型(L)、日期型(D)和日期时间型(T)。本题要求字段为数值型,总宽度6,2位小数,可以表示为N(6,2),因此,A)选项正确。

349 删除student表的"平均成绩"字段的正确SQL命令是()。

A) DELETE TABLE student DELETE COLUMN 平均成绩B) ALTER TABLE student DELETE COLUMN 平均成绩

C) ALTER TABLE student DROP COLUMN 平均成绩D) DELETE TABLE student DROP COLUMN 平均成绩

参考答案:C

【解析】删除表中的字段、索引及有效性规则、错误提示信息及默认值,可使用ALTER TABLE 命令,其基本格式为:

ALTER TABLE <表名>

[DROP [COLUMN] <字段名>]

[DROP PRIMARY KEY TAG <索引名1>]

[DROP UNIQUE TAG <索引名2>]

[DROP CHECK]

因此,选项C)正确。

数据库练习题答案

第四章练习题 一、选择题 1、设有两个关系R(A,B)和S(B,C),与下列SELECT语句 SELECT A,B FROM R WHERE B NOT IN(SELECT B FROM S WHERE C='C56'); 等价的关系代数表达式是 [ C] A.πA,B(σC≠'C56'(R?S))B.πA,B(R ? S) C≠'C56' C.R-πA,B(σC= 'C56'(R?S))D.R-πA,B(σC≠'C56'(R?S)) 2、嵌入式SQL的预处理方式,是指[ B] A.识别出SQL语句,加上前缀标识和结束标志 B.把嵌入的SQL语句处理成函数调用形式 C.对源程序进行格式化处理 D.把嵌入的SQL语句编译成目标程序 3、SQL中,“DELETE FROM 表名”表示 [ A] A.从基本表中删除所有元组B.从基本表中删除所有属性 C.从数据库中撤消这个基本表D.从基本表中删除重复元组 4、SQL中,聚合函数COUNT(列名)用于[ C] A.计算元组个数B.计算属性的个数 C.对一列中的非空值计算个数D.对一列中的非空值和空值计算个数 5、在传统SQL技术中,使用“ORDER BY”子句的SELECT语句查询的结果,实际上为 [ B] A.数组 B.列表 C.包 D.集合 6、在数据库中,能提高查询速度的是(C ) A. 数据依赖 B. 视图 C. 索引 D. 数据压缩 7、语句 delete from sc 表明( A ) A. 删除sc中的全部记录 B. 删除基本表sc C. 删除基本表sc中的列数据 D. 删除基本表sc中的部分行 8、在DB应用中,一般一条SQL 语句可产生或处理一组记录,而DB主语言语句一般一次只能处理一条记录,其协调可通过( B )实现。 A. 指针 B. 游标 C. 数组 D. 栈 9、在下列基本表的定义中,数值5表示( C ) CREATE TABLE student (Sno char(5) not null unique,Sname char(2)); A. 表中有5条记录 B. 表中有5列 C. 表中字符串Sno 的长度 D. 表格的大小 10、在视图上不能完成的操作是( C )

第三章 SQL语言练习题和答案

第三章SQL语言 一、选择题 1. SQL语言是(B )的语言,容易学习。 A.过程化 B. 非过程化 C.格式化 D. 导航式 2. SQL语言的数据操纵语句包括SELECT、INSERT、UPDATE、DELETE等。其中最重要的,也是使用最频繁的语句是(A)。 A. SELECT B. INSERT C. UPDATE D. DELETE 3. 在视图上不能完成的操作是()。 A. 更新视图 B. 查询 C. 在视图上定义新的表 D. 在视图上定义新的视图 4. SQL语言集数据查询、数据操纵、数据定义和数据控制功能于一体,其中,CREATE、DROP、ALTER语句是实现哪种功能()。 A. 数据查询 B. 数据操纵 C. 数据定义 D. 数据控制 5. SQL语言中,删除一个视图的命令是()。 A.DELETE B.DROP C.CLEAR D.REMOVE 6. 在SQL语言中的视图VIEW是数据库的()。 A. 外模式 B. 模式 C. 内模式 D. 存储模式 7. 下列的SQL语句中,()不是数据定义语句。 A. CREATE TABLE B. DROP VIEW C. CREATE VIEW D. GRANT 8. 若要撤销数据库中已经存在的表S,可用()。 A. DELETE TABLE S B. DELETE S C. DROP TABLE S D. DROP S 9. 若要在基本表S中增加一列CN(课程名),可用()。 A.ADD TABLE S(CN CHAR(8)) B.ADD TABLE S ALTER(CN CHAR(8)) C.ALTER TABLE S ADD(CN CHAR(8)) D.ALTER TABLE S (ADD CN CHAR(8)) 10. 学生关系模式S(S#,Sname,Sex,Age),S的属性分别表示学生的学号、姓名、性别、年龄。要在表S中删除一个属性“年龄”,可选用的SQL语句是()。 A. DELETE Age from S B. ALTER TABLE S DROP Age C. UPDATE S Age D. ALTER TABLE S ‘Age’ 11. 有关系S(S#,SNAME,SAGE),C(C#,CNAME),SC(S#,C#,GRADE)。其中S#是学生号,SNAME是学生姓名,SAGE是学生年龄,C#是课程号,CNAME是课程名称。要查询选修“ACCESS”课的年龄不小于20的全体学生姓名的SQL语句是SELECT SNAME FROM S,C,SC WHERE子句。这里的WHERE子句的内容是()。

学生选课数据库SQL语句练习题(详细分解答案)

学生选课数据库SQL语句练习题(详细分解答案)

一、设有一数据库,包括四个表:学生表(Student)、课程表 (Course)、成绩表(Score)以及教师信息表(Teacher)。 四个表的结构分别如表1-1的表(一)~表(四)所示,数据如表1-2的表(一)~表(四)所示。用SQL语句创建四个表并完成相关题目。 表1-1数据库的表结构 表(一)Student 含义 属性名数据类型可否为 空 Sno Char(3) 否学号(主键) Sname Char(8) 否学生姓名 Ssex Char(2) 否学生性别 Sbirthday datetime 可学生出生年 月 Class Char(5) 可学生所在班 级 表(二)Course 含义 属性名数据类型可否为 空 Cno Char(5) 否课程号(主 键) Cname Varchar(10) 否课程名称 Tno Char(3) 否教师编号(外 键) 表(三)Score 含义 属性名数据类型可否为 空 Sno Char(3) 否学号(外键) Cno Char(5) 否课程号(外 键) Degree Decimal(4,1) 可成绩

主码:Sno+ Cno 表(四)Teacher 含义 属性名数据类型可否为 空 Tno Char(3) 否教师编号(主 键)Tname Char(4) 否教师姓名Tsex Char(2) 否教师性别Tbirthday datetime 可教师出生年 月 Prof Char(6) 可职称Depart Varchar(10) 否教师所在部 门 表1-2数据库中的数据 表(一)Student Sno Sname Ssex Sbirthday class 108 曾华男1977-09-01 95033 105 匡明男1975-10-02 95031 107 王丽女1976-01-23 95033 101 李军男1976-02-20 95033 109 王芳女1975-02-10 95031 103 陆君男1974-06-03 95031 表(二)Course Cno Cname Tno 3-105 计算机导论825 3-245 操作系统804 6-166 数字电路856

sql语句练习题及答案

一在数据库 school 中建立student , sc, course 表。 学生表、课程表、选课表属于数据库School ,其各自的数据结构如下:学生Student (Sno,Sname,Ssex,Sage,Sdept) 课程表course(Cno,Cname,Cpno,Ccredit) 学生选课SC(Sno,Cno,Grade) 二设定主码 1 Student表的主码:sno 2 Course表的主码:cno 3 Sc表的主码:sno,cno 1写出使用 Create Table 语句创建表 student , sc, course 的SQL语句2 3 删除student表中的元组 4在数据库school中删除关系student 5在student表添加属性sbirthdate 类型datetime

Delete 1 删除所有JSJ 系的男生delete from Student where Sdept=’JSJ’ and Ssex=’男’; 2 删除“数据库原理”的课的选课纪录 delete from SC where Cno in (select Cno fromCourse where Cname=’数据库原理’); Update 1 修改0001 学生的系科为: JSJ 2 把陈小明的年龄加1岁,性别改为女。 2 修改李文庆的1001课程的成绩为9 3 分 3 把“数据库原理”课的成绩减去1分 Select 查询语句 一单表 1查询年龄在19至21岁之间的女生的学号,姓名,年龄,按年龄从大到小排列。 2查询姓名中第2个字为“明”字的学生学号、性别。 3查询 1001课程没有成绩的学生学号、课程号 4查询JSJ 、SX、WL 系的年龄大于25岁的学生学号,姓名,结果按系排列 5按10分制查询学生的sno,cno,10分制成绩 (1-10分为1 ,11-20分为2 ,30-39分为3,。。。90-100为10) 6查询 student 表中的学生共分布在那几个系中。(distinct) 7查询0001号学生1001,1002课程的成绩。 二统计 1查询姓名中有“明”字的学生人数。 2计算‘JSJ’系的平均年龄及最大年龄。 3查询学生中姓名为张明、赵英的人数 4计算每一门课的总分、平均分,最高分、最低分,按平均分由高到低排列 5 计算 1001,1002 课程的平均分。 6 查询平均分大于80分的学生学号及平均分 7 统计选修课程超过 2 门的学生学号 8 统计有10位成绩大于85分以上的课程号。 9 统计平均分不及格的学生学号 10 统计有大于两门课不及格的学生学号 三连接 1查询 JSJ 系的学生选修的课程号 2查询选修1002 课程的学生的学生姓名 (不用嵌套及嵌套2种方法) 3查询数据库原理不及格的学生学号及成绩 4查询选修“数据库原理”课且成绩 80 以上的学生姓名(不用嵌套及嵌套2种方法) 5查询平均分不及格的学生的学号,姓名,平均分。 6查询女学生平均分高于75分的学生姓名。 7查询男学生学号、姓名、课程号、成绩。(一门课程也没有选修的男学生也要列出,不能

数据库SQL语句练习题含答案

SQL语句练习 练习5. 1. 2: 基于不断滚动的电影数据库的实例: Movie( 电影名title,拍摄年代year ,长度length, inColor ,制片厂名studioName, 制片人证书号producerC# ) StarsIn(电影名movieTitle,拍摄年份movieYear ,影星名starName) MovieStar (姓名name,地址address,性别gender ,生日birthdate) MovieExec( 姓名name,地址address ,证书号cert # ,净资产netWorth ) Studio(姓名name, 地址address,总裁证书号presC# ) 请写出下列SQL 查询语句: * ( a) 找出米高梅制片公司(MGM studios)的地址。 SELECT address AS Studio_Address FROM Studio WHERE name = 'MGM'; ( b) 找出桑德拉·布洛克( Sandra Bullock ) 的出生日期( birthdate) 。SELECT birthdate AS Star_Birthdate FROM MovieStar WHERE name = 'Sandra Bullock'; * ( c) 找出在1980 年拍摄过电影的所有影星, 或者拍摄过电影名中含有“Love”的电影的所有影星。 SELECT starName FROM StarsIn WHERE movieYear = 1980 OR movieTitle LIKE '%Love%'; ( d) 找出净资产至少1 000 万美元的所有行政长官。

数据库期末考试复习题(附答案)

数据库期末考试复习题(附答案) 数据库系统概论 2011年期末考试复习题 一、选择题 ? 第(1)至(3)题基于以下的叙述:有关系模式A(C,T,H,R,S),基中各属性的含义是: ? C:课程T:教员H:上课时间R:教室S:学生 ? 根据语义有如下函数依赖集:? F={C→T,(H,R)→C,(H,T)→R,(H,S)→R} ? 1、关系模式A的码是(D) ? A. C B. (H,R)C.(H,T)D.H,S) ? 2、关系模式A的规范化程度最高达到(B) ? A. 1NF B. 2NF C. 3NFD. BCNF ? 3、现将关系模式A分解为两个关系模式A1(C,T),A2(H,R,S),则其中A1的规范化程度达到(D) ? A. 1NF B. 2NF C. 3NF D. BCNF ? 4.设有关系R(A,B,C)和S(C,D)。与SQL语句? select A,B,D from R,S where R.C=S.C ? 等价的关系代数表达式是(B) ? A. σR.C=S.C(πA,B,D(R×S)) ? B. πA,B,D(σR,C= S.C (R×S)) ? C. σR.C=S.C((πA,B R)×(πDS)) ? D. σR,C=S.C(πD((πA,BR)×S) ? 5、设关系R和关系S的元数分别是3和4,关系T是R与S的广义笛卡尔积,即:T=R×S,则关系T的元数是(C) ? A. 7 B. 9 C. 12 D. 16 ? 6、数据库设计阶段分为(B) ? A. 物理设计阶段、逻辑设计阶段、编程和调试阶段 ? B. 概念设计阶段、逻辑设计阶段、物理设计阶段、实施和调试阶段 ? C. 方案设计阶段、总体设计阶段、个别设计和编程阶段 ? D. 模型设计阶段、程序设计阶段和运行阶段 ? 7、设U是所有属性的集合,X、Y、Z都是U的子集,且Z=U-X-Y。下面关于多值依赖的叙述中,不正确的是(C) ? A. 若X→→Y,则X→→Z B. 若X→Y,则X→→Y ? C. 若X→→Y,且Y′?Y,则X→→Y′ D. 若Z=Φ,则X→→Y ? 8、查询优化策略中,正确的策略是(D) A.尽可能早地执行笛卡尔积操作B.尽可能早地执行并操作 C.尽可能早地执行差操作D.尽可能早地执行选择操作 ? 9、语句delete from sc 表明(A) A. 删除sc中的全部记录 B. 删除基本表sc? C. 删除基本表sc中的列数据 D. 删除基本表sc中的部分行 ? 10、在DB应用中,一般一条SQL 语句可产生或处理一组记录,而DB主语言语句一般一次只能处理一条记录,其协调可通过哪种技术实现(B) ? A. 指针 B. 游标 C. 数组 D. 栈 11、五种基本关系代数运算是( A ) ? A. ∪,-,×,π和σ B. ∪,-,?,π和σ

Oracle的sql语句练习题含复习资料

Oracle的sql语句练习题含答案(二)Oracle_SQL练习题1 1.选择部门30中的所有员工. 2.列出所有办事员(CLERK)的姓名,编号和部门编号. 3.找出佣金高于薪金的员工. 4.找出佣金高于薪金的60%的员工. 5.找出部门10中所有经理(MANAGER)和部门20中所有办事员(CLERK)的详细资料. 6.找出部门10中所有经理(MANAGER),部门20中所有办事员(CLERK),既不是经理又不是办事员但其薪金大于或等于2000的所有员工的详细资料. 7.找出收取佣金的员工的不同工作. 8.找出不收取佣金或收取的佣金低于100的员工. 9.找出各月倒数第3天受雇的所有员工. 10.找出早于12年前受雇的员工. 11.以首字母大写的方式显示所有员工的姓名. 12.显示正好为5个字符的员工的姓名. 13.显示不带有"R"的员工的姓名. 14.显示所有员工姓名的前三个字符. 15.显示所有员工的姓名,用a替换所有"A" 16.显示满10年服务年限的员工的姓名和受雇日期. 17.显示员工的详细资料,按姓名排序. 18.显示员工的姓名和受雇日期,根据其服务年限,将最老的员工排在最前面. 19.显示所有员工的姓名、工作和薪金,按工作的降序排序,若工作相同则按薪金排序. 20.显示所有员工的姓名、加入公司的年份和月份,按受雇日期所在月排序,若月份相同则将最早年份的员工排在最前面. 21.显示在一个月为30天的情况所有员工的日薪金,忽略余数. 22.找出在(任何年份的)2月受聘的所有员工。 23.对于每个员工,显示其加入公司的天数. 24.显示姓名字段的任何位置包含"A"的所有员工的姓名. 25.以年月日的方式显示所有员工的服务年限. 答案: 1.select ename,job,mgr,hiredate,sal,comm ,deptno from emp where deptno=30; 2.select ename,empno,deptno from emp where job='CLERK'; 3.select * from emp where comm>sal; 4.select * from emp where comm>sal*0.6; 5.select empno ,ename, job,hiredate,sal,comm,deptno from emp where( job='MANAGER' and deptno=10) or( job='CLERK' and deptno=20); 6.select empno,ename,job, hiredate,sal, deptno from emp where ( job='MANAGER' and deptno=10) or( job='CLERK' and deptno=20) or((job <>'MANAGER' and job<>'CLERK') and sal>=2000);

SQL语句练习及答案

sql语句练习题1 数据库有如下四个表格: student(sno,sname,sage,ssex,sdpt) 学生表 系表(dptno,dname) course(cno,cname, gradet, tno) 课程表 sc(sno,cno,score) 成绩表 teacher(tno,tname) 教师表 要求:完成以下操作 1.查询姓"欧阳"且全名为三个汉字的学生的姓名。 select sname from student where sname like “欧阳__?; 2.查询名字中第2个字为"阳"字的学生的姓名和学号。 select sname,sno from student where sname like '_阳%';3.查询所有不姓刘的学生姓名。 select sname,sno,ssex from student where sname not like “刘%”; 4.查询db_design课程的课程号和学分。 select cno,ccredit from course where cname like 'db_design' 5.查询以"db_"开头,且倒数第3个字符为i的课程的详细情况。 select * from course where cname like 'db%i_ _'; 6.某些学生选修课程后没有参加考试,所以有选课记录,但没有考试成绩。查 询缺少成绩的学生的学号和相应的课程号。

select sno,cno from sc where grade is null; 7.查所有有成绩的学生学号和课程号。 select sno,cno from sc where grade is not null; 8.查询计算机系年龄在20岁以下的学生姓名。 select sname from student where sdept= 'cs' and sage<20; 9.查询选修了3号课程的学生的学号及其成绩,查询结果按分数降序排列。 select sno, grade from sc where cno= ' 3 ' order by grade desc;10.查询学生总人数。 select count(*) from student; 11.查询选修了课程的学生人数。 select count(distinct sno) from sc; 12.计算1号课程的学生平均成绩。 select avg(grade) from sc where cno= ' 1 '; 13.查询选修1号课程的学生最高分数。 select max(grade) from sc where cno= ' 1 '; 14.查询学生200215012选修课程的总学分数。 select sum(grade) from sc,course where sno= ' 200215012 ' and https://www.sodocs.net/doc/4f2408479.html,o=https://www.sodocs.net/doc/4f2408479.html,o;

3-SQL语句练习题参考答案

标准SQL语言 一、选择题 1、下面关于SQL标准的叙述中,不正确的是(B )。 A.SQL语言是集数据定义、数据操纵、数据控制功能为一体的语言。 B.SQL语言是一种高度过程化的语言。 C.SQL标准规定数据库是按三级模式结构构建。 D.SQL语言是关系型数据库的标准语言。 E.SQL语言是面向集合的语言。 2、SQL语言中,修改基本表结构的语句是( B )。 A.UPDATE B.ALTER C.DROP D.CREATE 3、SQL语言中,删除基本表结构的语句是( C )。 A.DELETE B.ALTER C.DROP D.CREATE 4、下面关于“视图”的叙述中,不正确的是( C )。 A.视图是一种“虚表”,它的数据被存放在基本表中。 B.视图提供了逻辑数据独立性。 C.不能通过视图来更新数据库中的数据。 D.视图能提供对数据的安全保护。 5、下面关于SELECT语句的叙述中,不正确的是(C)。 A.SELECT产生的结果是一个集合。 B.HA VING子句必须与GROUP BY子句一起使用。 C.可以省略FROM子句。 D.可以省略WHERE子句。 二、填空题 1、在使用INSERT语句向一个表中插入元组时,“值列表”中值的个数、(顺序)、类型必须与“列名表”保持一致。 2、在向一个表中插入元组时,对于未指定默认值且(不能取空值)的字段必须赋值。 3、向表中插入元组时,主键的值不能取(NULL )值。 4、在使用DELETE语句时,如果不指定(where 条件)就会将整个表的数据删除。 5、视图是从一个或几个基本表或(视图)导出的表,它与基本表不同,是一个虚表。 三、判断题 1、SQL语言是面向集合操作的语言。√ 2、可以通过视图来查询数据,但不能通过视图来更新数据库中的数据。× 3、在SQL Server数据库系统中,向表中插入元组时,系统自动为具有标识属性的列赋值。√ 4、在SQL Server数据库系统中,向表中插入元组时,对取值类型为timestamp(时间戳)的列不能赋值,系统自动赋值。√

SQL语句练习题(包含有多表查询)-答案

SQL语句练习题 1、请从表EMP中查找工种是职员CLERK或经理MANAGER的雇员姓名、工资。 select ename,sal from emp where job='CLERK' or job='MANAGER'; 2、请在EMP表中查找部门号在10-30之间的雇员的姓名、部门号、工资、工作。 select ename,deptno,sal,job from emp where deptno between 10 and 30; 3、请从表EMP中查找姓名以J开头所有雇员的姓名、工资、职位。 select ename,sal,job from emp where ename like 'J%'; 4、请从表EMP中查找工资低于2000的雇员的姓名、工作、工资,并按工资降序排列。select ename,job,sal from emp where sal<=2000 order by sal desc; 5、请从表中查询工作是CLERK的所有人的姓名、工资、部门号、部门名称以及部门地址的信息。 select ename,sal,emp.deptno,dname,loc from emp,dept where emp.deptno=dept.deptno and job=’CLERK’; 6、查询表EMP中所有的工资大于等于2000的雇员姓名和他的经理的名字。 select a.ename,b.ename from emp a,emp b where a.mgr=b.empno(+) and a.sal>=2000; 7、查询所有雇员的姓名、SAL与COMM之和。 select ename,sal+nvl(comm,0) “sal-and-comm” from emp; 8、查询所有81年7月1日以前来的员工姓名、工资、所属部门的名字 select ename,sal,dname from emp,dept where emp.deptno=dept.deptno and hiredate<=to_date(‘1981-07-01’,’yyyy-mm-dd’); 9、查询列出来公司就职时间超过24年的员工名单 select ename from emp where hiredate<=add_months(sysdate,-288); 10、查询于81年来公司所有员工的总收入(SAL和COMM) select sum(sal+nvl(comm,0)) from emp where to_char(hiredate,’yyyy’)=’1981’; 11、查询显示每个雇员加入公司的准确时间,按××××年××月××日时分秒显示。select ename,to_char(hiredate,'yyyy-mm-dd hh24:mi:ss') from emp; 12、查询列出各部门的部门名和部门经理名字 select dname,ename from emp,dept where emp.deptno=dept.deptno and job=’MANAGER’;

学生选课数据库SQL语句练习题(详细分解答案)

一、设有一数据库,包括四个表:学生表(Student)、课程表 (Course)、成绩表(Score)以及教师信息表(Teacher)。 四个表的结构分别如表1-1的表(一)~表(四)所示,数据如表1-2的表(一)~表(四)所示。用SQL语句创建四个表并完成相关题目。 表1-1数据库的表结构 表(一)Student 含义 属性名数据类型可否为 空 Sno Char(3)否学号(主 键) Sname Char(8)否学生姓名 Ssex Char(2)否学生性别 Sbirthday datetime可学生出生年 月 Class Char(5)可学生所在班 级 表(二)Course 含义 属性名数据类型可否为 空 Cno Char(5)否课程号(主 键) Cname Varchar(10)否课程名称 Tno Char(3)否教师编号 (外键) 表(三)Score 含义 属性名数据类型可否为 空 Sno Char(3)否学号(外 键) Cno Char(5)否课程号(外 键)

Degree Decimal(4,1)可成绩 主码:Sno+ Cno 表(四)Teacher 含义 属性名数据类型可否为 空 Tno Char(3)否教师编号 (主键)Tname Char(4)否教师姓名Tsex Char(2)否教师性别Tbirthday datetime可教师出生年 月 Prof Char(6)可职称Depart Varchar(10)否教师所在部 门 表1-2数据库中的数据 表(一)Student Sno Sname Ssex Sbirthday class 95033 108曾华男1977-09- 01 105匡明男1975-10- 95031 02 95033 107王丽女1976-01- 23 95033 101李军男1976-02- 20 109王芳女1975-02- 95031 10 95031 103陆君男1974-06- 03 表(二)Course

SQL语句练习及标准答案

SQL语句练习及答案

————————————————————————————————作者:————————————————————————————————日期:

sql语句练习题1 数据库有如下四个表格: student(sno,sname,sage,ssex,sdpt) 学生表 系表(dptno,dname) course(cno,cname, gradet, tno) 课程表 sc(sno,cno,score) 成绩表 teacher(tno,tname) 教师表 要求:完成以下操作 1.查询姓"欧阳"且全名为三个汉字的学生的姓名。 select sname from student where sname like “欧阳__?; 2.查询名字中第2个字为"阳"字的学生的姓名和学号。 select sname,sno from student where sname like '_阳%';3.查询所有不姓刘的学生姓名。 select sname,sno,ssex from student where sname not like “刘%”; 4.查询db_design课程的课程号和学分。 select cno,ccredit from course where cname like 'db_design' 5.查询以"db_"开头,且倒数第3个字符为i的课程的详细情况。 select * from course where cname like 'db%i_ _'; 6.某些学生选修课程后没有参加考试,所以有选课记录,但没有考试成绩。查 询缺少成绩的学生的学号和相应的课程号。

SQL语句练习及答案

现在有一教学管理系统,具体的关系模式如下:Student (no, name, sex, birthday, class) Teacher (no, name, sex, birthday, prof, depart) Course (cno, cname, tno) Score (no, cno, degree) 其中表中包含如下数据: Course表: Score表: Student表:

Teacher表: 根据上面描述完成下面问题: (注意:注意保存脚本,尤其是DDL和DML,以便进行数据还原)DDL 1.写出上述表的建表语句。 命令:create table Student (no nvarchar(5), name nvarchar(5), sex nvarchar(1), birthday datetime, class nvarchar(5)

) DML 2.给出相应的INSERT语句来完成题中给出数据的插入。 命令: 单表查询 3.以class降序输出student的所有记录(student表全部属性) 命令:select*from Student order by class desc 4.列出教师所在的单位depart(不重复)。 命令:select distinct depart from teacher 5.列出student表中所有记录的name、sex和class列 命令:select name,sex,class from student

6.输出student中不姓王的同学的姓名。 命令:select name from Student where name not like'王%' 7.输出成绩为85或86或88或在60-80之间的记录(no,cno,degree) 命令:select*from Score where degree=85 or degree=86 or degree=88 or degree between 60 and 80

SQL语句强化练习题及答案1

一、简单查询 1、列出全部学生的信息。 SELECT * FROM 学生 2、列出软件专业全部学生的学号及姓名。 SELECT 学号,姓名 FROM 学生 WHERE 专业="软件" 3、列出所有必修课的课号。 SELECT DISTINCT 课号 FROM 必修课 4、求1号课成绩大于80分的学生的学号及成绩,并按成绩由高到低列出。 SELECT 学号,成绩 FROM 选课 WHERE 课号="1" AND 成绩>80 ORDER BY 成绩DESC 5、列出非软件专业学生的名单。 方法一:SELECT 姓名 FROM 学生 WHERE 专业<>"软件" 方法二:SELECT 姓名 FROM 学生 WHERE NOT 专业="软件" 方法三:SELECT 姓名 FROM 学生 WHERE 专业!="软件" 6、查询成绩在70~80分之间的学生选课得分情况 方法一:SELECT * FROM 选课 WHERE 成绩>=70 AND 成绩<=80 方法二:SELECT * FROM 选课 WHERE 成绩 BETWEEN 70 AND 80 不在此范围内的查询:(注意写出和以下语句等价的语句) SELECT * FROM 选课 WHERE 成绩 NOT BETWEEN 70 AND 80 7、列出选修1号课或3号课的全体学生的学号和成绩。 方法一:SELECT 学号,成绩 FROM 选课 WHERE 课号="1" OR 课号="3" 方法二:SELECT 学号,成绩 FROM 选课 WHERE 课号 IN ("1","3") 相反条件查询:SELECT 学号,成绩 FROM 选课 WHERE 课号 NOT IN ("1","3") 8、列出所有98级学生的学生成绩情况。

SQL语句练习题答案

SQL练习题及答案: 请用SQL语句实现以下功能。(1至6题每题10分,7至8题每题20分) 1. 如何用SQL语句求带辅助核算206科目12月的余额在贷方的合计值?cendd_c为余额方向字段,字符型,me为余额。 SELECT sum(me) FROM gl_accass WHERE ccode="206" and cendd_c="贷" and iperiod=12 2.如何查找GL_accass中的科目在科目表中不是末级的?(如下3种写法均正确) SELECT https://www.sodocs.net/doc/4f2408479.html,ODE ,B.BEND FORM GL_ACCASS AS A JOIN CODE AS B ON https://www.sodocs.net/doc/4f2408479.html,ODE=https://www.sodocs.net/doc/4f2408479.html,ODE WHERE B.BEND =0 select distinct ccode from gl_accass where ccode in(select ccode from code where bend=0) select distinct ccode from gl_accass where ccode not in(select ccode from code where bend=1)

3. 如何将AA库中的department表用语句把数据导入BB库中? INSERT INTO BB..DEPARTMENT SELECT * FROM AA..DEPARTMENT 4.如何查辅助总帐中的部门编号(cDEPT_ID)在部门目录(department 表cdepcode)中不存在的记录?SELECT cDEPT_ID FROM GL_ACCASS WHREE cDEPT_ID NOT IN (SELECT cdepcode FROM DEPARTMENT) 5. 如何在部门目录表中查找部门名称(CDEPNAME)重复的记录数? SELECT CDEPNAME, COUNT(CDEPNAME) FROM DEPARTMENT GROUP BY CDEPNAME HA VING COUNT(CDEPNAME)>1; 6. 已知有表R(sno, sname, age),其中sno表示学生的学号,类型为Char(8),前4位表示入学年份。查询所有2003年入学的学生姓名(sname),SQL语句是 SELECT sname FROM R WHERE sno LIKE ′2003%′ 7. 判断题:

SQL语言章节练习答案

SQL 语言章节练习答案 一、设有如下关系模式: student(SNO, SNAME , SEX ,BIRTHDAY, CLASS) teacher(TNO,TNAME,SEX,BIRTHDAY,PRO F,DEPART) PROF 为职称,DEPART 为系别 course(CNO, CNAME, TNO) score(SNO, CNO, DEGREE) DEGREE 为成绩 写出实现以下各题功能的SQL 语句: 1.查询至少有2名男生的班号;——(难) SELECT CLASS FROM student WHERE SEX='男' GROUP BY CLASS HAVING COUNT(*)>=2; Having 语句用来对结果集进行附加筛选,通常与group by 语句一起使用。 ************************************************************* 2.查询不姓“王”的同学记录;——(易) SELECT * FROM student WHERE NAME NOT LIKE '王%' 3.查询每个学生的姓名和年龄;——(难) SELECT NAME,2007-year(BIRTHDAY) FROM student 4.查询学生中最大和最小的birthday 日期值;——(中) SELECT MAX(BIRTHDAY), MIN(BIRTHDAY) FROM student 5.查询学生表的全部记录并按班号和年龄从大到小的顺序;——(中) SELECT * FROM student ORDER BY CLASS,BIRTHDAY DESC 6.查询男教师及其所上的课程;——(中) SELECT https://www.sodocs.net/doc/4f2408479.html,, https://www.sodocs.net/doc/4f2408479.html,ame FROM teacher , course WHERE teacher.no=course.tno and teacher.sex='男' 7.查询最高分同学的学号,课程号和成绩; ——(中) SELECT * FROM score WHERE degree= ( SELECT max(degree) FROM score ) 满足嵌套子查询的条件(最后投影的属性列可以在一个表格中给出) **************************************88 8.查询和“李军”同性别并同班的所有同学的姓名;——(中) SELECT NAME FROM student WHERE sex= ( SELECT sex FROM student WHERE name='李军' ) and class= ( SELECT class FROM student WHERE name='李军' ) 要习惯用多重条件的复合运算来做题 9.查询选修“数据库系统概论”课程的男同学的成绩表;——(中) SELECT * FROM score WHERE no IN ( SELECT no

sql sever进阶测试题(含答案

SQL进阶测试 1) 为表userinfo添加约束,语法如下: alter table userinfo add constraint uq_userid unique ( userid ) 执行成功后,为userinfo表的()字段添加了()约束。 a) Userid ;主键 b) Userid ;唯一 c) Uq_userid ;外键 d) Uq_userid ;检查 2) 运行如下T-SQL,结果返回包含()的记录集。 create table scores ( scoreid int identity(1,2), score numeric(4,2) not null, courseid int ) insert into scores values(90.5, null); insert into scores values(100, 2); select * from scores; a) 1、90.5、null 3、100、2 b) 1、100、2l c) 1、90.50、null d) 1、90.5、null 3、100.0、2 3) 关于子查询,以下说法正确的是()。(选择两项) a) 一般来说,表连接都可以用子查询替换。 b) 一般来说,子查询都可以用表连接替换。 c) 相对于表连接,子查询适合于作为查询的筛选条件。 d) 相对于表连接,子查询适合于查看多表的数据。 4) 创建存储过程如下: CREATE procedure bookproc @id int, @title char(20) OUTPUT as select @title=title from book where id= @id 执行该存储过程的方法正确的是()。(选择一项) a) exec bookproc 1,@title output print @title b) exec bookproc @id =1,@title output print @title c) declare @title char(20)

Oracle的sql语句练习题含答案

--1、选择部门30中的雇员 select * from emp where deptno=30; --2、列出所有办事员的姓名、编号和部门 select ename,empno,dname from emp e inner join dept d on = where job=upper('clerk’); --3、找出佣金高于薪金的雇员 select * from emp where comm>sal; --4、找出佣金高于薪金60%的雇员 select * from emp where comm>sal* ^ --5、找出部门10中所有经理和部门20中的所有办事员的详细资料 select * from emp where (deptno=10 and job=upper('manager')) or (deptno=20 and job=upper('clerk ')); --6、找出部门10中所有经理、部门20中所有办事员,既不是经理又不是办事员但其薪金>=2000的所有雇员的详细资料 select * from emp where (deptno=10 and job=upper('manager')) or (deptno=20 and job=upper('clerk ')) or (job<>upper(‘manager’) and job<>upper(‘clerk’) and sal>=2000) --7、找出收取佣金的雇员的不同工作 select distinct job from emp where comm>0; --8、找出不收取佣金或收取的佣金低于100的雇员 select * from emp where nvl(comm,0)<100; | --9、找出各月最后一天受雇的所有雇员 select * from emp where hiredate= last_day(hiredate); --10、找出早于25年之前受雇的雇员 select * from emp where months_between(sysdate,hiredate)/12>25; select * from emp where hiredate

相关主题