内容正文:
编写说明:依托三阶支架资源编写方案,《一课一练》明确基础层具象化支架定位,作为课堂同步配套资源,其内容与课堂教学深度绑定,并且精准匹配中职学生知识基础与学习特质,遵循"由浅入深、循序渐进"的认知规律,聚焦基础性与实效性核心,通过拆解知识点、简化认知难度,切实降低学习门槛,为后续知识巩固与能力提升筑牢根基,是优质课后作业首选。
本卷是《数据库原理与应用技术-MySQL》(河北科学技术出版社)《一课一练》第57练,内容是嵌套查询。
《数据库原理与应用技术-MySQL》(河北科学技术出版社)《一课一练》 第57练
嵌套查询
一、单项选择题
1.下列单行子查询,语法书写完全正确的是( )
A. SELECT * FROM stu WHERE id = SELECT id FROM stu WHERE id=5
B. SELECT * FROM stu WHERE id = (SELECT id FROM stu WHERE id=5)
C. SELECT * FROM stu WHERE id IN SELECT id FROM stu WHERE id=5
D. SELECT * FROM stu WHERE id = [SELECT id FROM stu WHERE id=5]
2.查询有对应成绩的学生,下列EXISTS嵌套代码无误的是( )
A. SELECT * FROM stu EXISTS (SELECT * FROM sc WHERE sc.sid=stu.id)
B. SELECT * FROM stu WHERE EXISTS (SELECT * FROM sc WHERE sc.sid=stu.id)
C. SELECT * FROM stu WHERE EXISTS SELECT * FROM sc WHERE sc.sid=stu.id
D. SELECT * FROM stu WHERE EXISTS{SELECT * FROM sc WHERE sc.sid=stu.id}
3.关于IN多行子查询,下列语句可以正常运行的是( )
A. SELECT name FROM stu WHERE sid IN (SELECT sid FROM sc)
B. SELECT name FROM stu WHERE sid IN sid FROM sc
C. SELECT name FROM stu WHERE IN (SELECT sid FROM sc)
D. SELECT name FROM stu WHERE sid IN SELECT sid FROM sc
4.下列派生表子查询,写法合法的是( )
A. SELECT * FROM (SELECT id,name FROM stu)
B. SELECT * FROM (SELECT id,name FROM stu) AS temp
C. SELECT * FROM SELECT id,name FROM stu
D. SELECT * FROM (SELECT id,name FROM stu)[]
5.查询没有选课的学生,NOT IN嵌套查询语法正确的是( )
A. SELECT * FROM stu WHERE sid NOT IN (SELECT sid FROM sc)
B. SELECT * FROM stu WHERE sid NOT IN SELECT sid FROM sc
C. SELECT * FROM stu NOT IN (SELECT sid FROM sc)
D. SELECT * FROM stu WHERE NOT IN sid (SELECT sid FROM sc)
6.下列包含ANY/ALL的嵌套查询,存在语法错误的是( )
A. SELECT * FROM sc WHERE score > ANY (SELECT score FROM sc WHERE cid=2)
B. SELECT * FROM sc WHERE score > ALL (SELECT score FROM sc WHERE cid=2)
C. SELECT * FROM sc WHERE ALL(score) > (SELECT AVG(score) FROM sc)
D. SELECT * FROM sc WHERE score = (SELECT MIN(score) FROM sc)
7.筛选分数低于整体平均分的记录,代码书写正确的是( )
A. SELECT * FROM sc WHERE score < AVG(score)
B. SELECT * FROM sc WHERE score < (SELECT AVG(score) FROM sc)
C. SELECT * FROM sc HAVING score < (SELECT AVG(score) FROM sc)
D. SELECT * FROM sc WHERE score < SELECT AVG(score) FROM sc
8.下列嵌套关联查询中,语句书写规范无误的是( )
A. SELECT cname FROM course WHERE (SELECT cid FROM sc)
B. SELECT cname FROM course WHERE cid = SELECT cid FROM sc WHERE sid=1001
C. SELECT cname FROM course WHERE cid IN SELECT cid FROM sc
D. SELECT cname FROM course WHERE cid = (SELECT cid FROM sc WHERE sid=1001)
9.结合条件过滤与嵌套查询,下列代码完全正确的是( )
A. SELECT * FROM stu WHERE age>16 AND sid IN(SELECT sid FROM sc)
B. SELECT * FROM stu WHERE age>16 AND sid IN SELECT sid FROM sc
C. SELECT * FROM stu WHERE age>16 IN(SELECT sid FROM sc)
D. SELECT * FROM stu AND sid IN(SELECT sid FROM sc) WHERE age>16
10.关于多层嵌套查询,下列语句执行无误的是( )
A. SELECT * FROM stu WHERE id=(SELECT sid FROM sc WHERE cid=(SELECT cid FROM course))
B. SELECT * FROM stu WHERE id=SELECT sid FROM sc WHERE cid=SELECT cid FROM course
C. SELECT * FROM stu WHERE id IN((SELECT sid FROM sc))
D. SELECT * FROM stu WHERE id = (SELECT sid FROM sc WHERE cid=course.cid)
原创精品资源学科网独家享有版权,侵权必究!
学科网(北京)股份有限公司
$
编写说明:依托三阶支架资源编写方案,《一课一练》明确基础层具象化支架定位,作为课堂同步配套资源,其内容与课堂教学深度绑定,并且精准匹配中职学生知识基础与学习特质,遵循"由浅入深、循序渐进"的认知规律,聚焦基础性与实效性核心,通过拆解知识点、简化认知难度,切实降低学习门槛,为后续知识巩固与能力提升筑牢根基,是优质课后作业首选。
本卷是《数据库原理与应用技术-MySQL》(河北科学技术出版社)《一课一练》第57练,内容是嵌套查询。
《数据库原理与应用技术-MySQL》(河北科学技术出版社)《一课一练》 第57练
嵌套查询
一、单项选择题
1.下列单行子查询,语法书写完全正确的是( )
A. SELECT * FROM stu WHERE id = SELECT id FROM stu WHERE id=5
B. SELECT * FROM stu WHERE id = (SELECT id FROM stu WHERE id=5)
C. SELECT * FROM stu WHERE id IN SELECT id FROM stu WHERE id=5
D. SELECT * FROM stu WHERE id = [SELECT id FROM stu WHERE id=5]
【答案】B
【解析】子查询必须用英文小括号包裹;A 无括号、C 语法残缺、D 使用非法中括号,均报错;B 为标准标量子查询写法。
2.查询有对应成绩的学生,下列EXISTS嵌套代码无误的是( )
A. SELECT * FROM stu EXISTS (SELECT * FROM sc WHERE sc.sid=stu.id)
B. SELECT * FROM stu WHERE EXISTS (SELECT * FROM sc WHERE sc.sid=stu.id)
C. SELECT * FROM stu WHERE EXISTS SELECT * FROM sc WHERE sc.sid=stu.id
D. SELECT * FROM stu WHERE EXISTS{SELECT * FROM sc WHERE sc.sid=stu.id}
【答案】B
【解析】EXISTS 必须紧跟 WHERE 之后,内层子查询加小括号;A 缺 WHERE、C 缺括号、D 使用大括号,语法全部错误。
3.关于IN多行子查询,下列语句可以正常运行的是( )
A. SELECT name FROM stu WHERE sid IN (SELECT sid FROM sc)
B. SELECT name FROM stu WHERE sid IN sid FROM sc
C. SELECT name FROM stu WHERE IN (SELECT sid FROM sc)
D. SELECT name FROM stu WHERE sid IN SELECT sid FROM sc
【答案】A
【解析】IN 后必须放置带括号的完整子查询;B、C、D 语法结构混乱、缺少关键字或括号,执行报错。
4.下列派生表子查询,写法合法的是( )
A. SELECT * FROM (SELECT id,name FROM stu)
B. SELECT * FROM (SELECT id,name FROM stu) AS temp
C. SELECT * FROM SELECT id,name FROM stu
D. SELECT * FROM (SELECT id,name FROM stu)[]
【答案】B
【解析】FROM 后的子查询为派生表,必须设置别名;A 无别名、C 无括号、D 符号非法,只有 B 符合 MySQL 代码规范。
5.查询没有选课的学生,NOT IN嵌套查询语法正确的是( )
A. SELECT * FROM stu WHERE sid NOT IN (SELECT sid FROM sc)
B. SELECT * FROM stu WHERE sid NOT IN SELECT sid FROM sc
C. SELECT * FROM stu NOT IN (SELECT sid FROM sc)
D. SELECT * FROM stu WHERE NOT IN sid (SELECT sid FROM sc)
【答案】A
【解析】固定格式:字段 NOT IN (子查询);B 缺少括号、C 语序错误、D 关键字顺序颠倒,均为错误代码。
6.下列包含ANY/ALL的嵌套查询,存在语法错误的是( )
A. SELECT * FROM sc WHERE score > ANY (SELECT score FROM sc WHERE cid=2)
B. SELECT * FROM sc WHERE score > ALL (SELECT score FROM sc WHERE cid=2)
C. SELECT * FROM sc WHERE ALL(score) > (SELECT AVG(score) FROM sc)
D. SELECT * FROM sc WHERE score = (SELECT MIN(score) FROM sc)
【答案】C
【解析】ANY、ALL 只能放在比较运算符右侧,修饰子查询结果;C 用法完全颠倒,属于典型语法错误。
7.筛选分数低于整体平均分的记录,代码书写正确的是( )
A. SELECT * FROM sc WHERE score < AVG(score)
B. SELECT * FROM sc WHERE score < (SELECT AVG(score) FROM sc)
C. SELECT * FROM sc HAVING score < (SELECT AVG(score) FROM sc)
D. SELECT * FROM sc WHERE score < SELECT AVG(score) FROM sc
【答案】B
【解析】聚合函数不能直接写在 WHERE 后,需嵌套子查询;A 非法、C 无分组不能用 HAVING、D 子查询无括号。
8.下列嵌套关联查询中,语句书写规范无误的是( )
A. SELECT cname FROM course WHERE (SELECT cid FROM sc)
B. SELECT cname FROM course WHERE cid = SELECT cid FROM sc WHERE sid=1001
C. SELECT cname FROM course WHERE cid IN SELECT cid FROM sc
D. SELECT cname FROM course WHERE cid = (SELECT cid FROM sc WHERE sid=1001)
【答案】D
【解析】单行等值子查询严格使用括号包裹;B、C 缺少括号,A 缺少比较运算符,语法错误。
9.结合条件过滤与嵌套查询,下列代码完全正确的是( )
A. SELECT * FROM stu WHERE age>16 AND sid IN(SELECT sid FROM sc)
B. SELECT * FROM stu WHERE age>16 AND sid IN SELECT sid FROM sc
C. SELECT * FROM stu WHERE age>16 IN(SELECT sid FROM sc)
D. SELECT * FROM stu AND sid IN(SELECT sid FROM sc) WHERE age>16
【答案】A
【解析】多条件搭配 IN 子查询,逻辑运算符连接、子查询带括号;B 无括号、C 逻辑错误、D 子句顺序混乱。
10.关于多层嵌套查询,下列语句执行无误的是( )
A. SELECT * FROM stu WHERE id=(SELECT sid FROM sc WHERE cid=(SELECT cid FROM course))
B. SELECT * FROM stu WHERE id=SELECT sid FROM sc WHERE cid=SELECT cid FROM course
C. SELECT * FROM stu WHERE id IN((SELECT sid FROM sc))
D. SELECT * FROM stu WHERE id = (SELECT sid FROM sc WHERE cid=course.cid)
【答案】A
【解析】多层嵌套子查询每层都用小括号包裹,语法合法;B 无括号、C 双括号冗余不规范、D 跨表关联缺少表连接条件。
原创精品资源学科网独家享有版权,侵权必究!
学科网(北京)股份有限公司
$