数据库原理与应用第3章作业

数据库原理与应用第3章作业

  • 一.单选题(共20题,60分)
  • 二.简答题(共2题,40分)

一.单选题(共20题,60分)

  1. (单选题,3分)某运动会管理系统数据库的部分基本表:运动员(运动员编号,姓名,性别,队别),项目(项目编号,名称,比赛地点,比赛时间),比赛(运动员编号,项目编号,成绩)。
    能显示出“每一位运动员的参赛情况(包括没有参加任何比赛情况的运动员)”的选项是()。

    A.SELECT运动员.运动员编号,姓名,队别,名称,成绩FROM运动员INNER JOIN比赛INNER JOIN项目ON运动员.运动员编号=比赛.运动员编号AND比赛.项目编号=项目.项目编号;

    B.SELECT运动员.运动员编号,姓名,队别,名称,成绩
    FROM运动员,项目,比赛
    WHERE运动员.运动员编号=比赛.运动员编号AND比赛项目编号=项目.项目编号;

    C.SELECT运动员.运动员编号,姓名,队别,名称,成绩
    FROM(运动员LEFT JOIN比赛ON运动员.运动员编号=比赛.运动员编号)LEFT JOIN项目ON比赛项目编号=项目.项目编号;

    D.SELECT运动员.运动员编号,姓名,队别,名称,成绩
    FROM(运动员RIGHT JOIN比赛ON运动员.运动员编号=比赛.运动员编号)RIGHT JOIN项目ON比赛项目编号=项目.项目编号;

  2. (单选题,3分)假定有3种关系,学生关系S、课程关系C、学生选课关系SC,它们的结构如下:
    S(S_ID,S_NAME, AGE, DEPT)
    C(C_NO,C_NAME)
    SC(S_ID,C_NO,GRADE)
    其中S_ID为学生号,S_NAME,AGE为年龄,DEPT为系别,C_NO为课程号,C_NAME为课程名,GRADE为成绩。检索所有比“李军”年龄大的学生的姓名、年龄,正确的SQL语句是()。
    A. SELECT S_NAME, AGE FROM S WHERE AGE > (SELECT AGE FROM S WHERES_NAME=‘李军’)
    B.SELECT S_NAME, AGE FROM S WHERE AGE > (S_NAME=‘李军’)
    C.SELECT S_NAME, AGE FROM S WHERE AGE > (SELECT AGE WHERES_NAME='李军’)
    D.SELECT S_NAME, AGE FROM S WHERE AGE > 李军.AGE

  3. (单选题,3分)在基本表 “运动员” 里创建 “队别” 上的非聚集索引T1的正确选项是()。
    A. CREATE NONCLUSTERED INDEX T1 ON 队别;
    B.CREATE INDEX T1 ON 运动员(队别);
    C.CREATE NONCLUSTERED INDEX T1 IN 运动员(队别);
    D. CREATE CLUSTERED INDEX T1 ON 运动员(队别);

  4. (单选题,3分)某运动会管理系统数据库的部分基本表:运动员(运动员编号,姓名,性别,队别),项目(项目编号,名称,比赛地点,比赛时间),比赛(运动员编号,项目编号,成绩)。
    下列能正确查询出“比赛项目的成绩,结果按比赛项目编号升序,同一比赛项目的成绩降序排列”的选项是()。
    A.SELECT 项目编号,成绩 FROM 比赛 ORDER BY 成绩,项目编号 DESC;
    B.SELECT 项目编号,成绩 FROM 比赛 ORDER BY 项目编号,成绩 ASC;
    C.SELECT 项目编号,成绩 FROM 比赛 ORDER BY 成绩 DESC,项目编号;
    D.SELECT 项目编号,成绩 FROM 比赛 ORDER BY 项目编号,成绩 DESC;

  5. (单选题,3分)某运动会管理系统数据库的部分基本表:运动员(运动员编号,姓名,性别,队别),项目(项目编号,名称,比赛地点,比赛时间),比赛(运动员编号,项目编号,成绩)。
    下列能正确查询出“来自江浙沪的女运动员的运动员编号和姓名”的选项是()。
    A.SELECT 项目编号,姓名 FROM 运动员 WHERE 队别 = (‘上海’,‘江苏’,‘浙江’) AND 性别='女;
    B.SELECT 项目编号,姓名 FROM 运动员 WHERE 队别 IN (‘上海’,‘江苏’,‘浙江’) AND 性别='女;
    C.SELECT 项目编号,姓名 FROM 运动员 WHERE 队别 = ‘上海’ OR ‘江苏’ OR ‘浙江’ AND 性别='女;
    D.SELECT 项目编号,姓名 FROM 运动员 WHERE 队别 = ‘上海’ OR 队别 = ‘江苏’ OR 队别 = ‘浙江’ AND 性别 = '女;

  6. (单选题,3分)某运动会管理系统数据库的部分基本表:运动员(运动员编号,姓名,性别,队别),项目(项目编号,名称,比赛地点,比赛时间),比赛(运动员编号,项目编号,成绩)。下列能正确查询出“参加了比赛项目的运动员人数”的选项是()。
    A.SELECT COUNT(*) FROM 比赛
    B.SELECT COUNT(DISTINCT 运动员编号) FROM 比赛
    C.SELECT COUNT(DISTINCT *) FROM 比赛
    D.SELECT COUNT(运动员编号) FROM 比赛;

  7. (单选题,3分)某运动会管理系统数据库的部分基本表:运动员(运动员编号,姓名,性别,队别),项目(项目编号,名称,比赛地点,比赛时间),比赛(运动员编号,项目编号,成绩)。创建”上海“队的运动员视图的正确选项是( )。
    A. CREATE VIEW SH_A AS SELECT 运动员编号,姓名,性别 FROM 运动员 WHERE 队别 = '上海;
    B.CREATE VIEW SH_A SELECT 运动员编号,姓名,性别 FROM 运动员 WHERE 队别=‘上海’;
    C. CREATE VIEW SH_A(SH_NO,SH_NAME,SH_SEX)SELECT 运动员编号,姓名,性别 FROM 运动员 WHERE 队别='上海;
    D.CREATE TABLE SH_A AS SELECT 运动员编号,姓名,性别 FROM 运动员 WHERE 队别='上海;

  8. (单选题,3分)某运动会管理系统数据库的部分基本表:运动员(运动员编号,姓名,性别,队别),项目(项目编号,名称,比赛地点,比赛时间),比赛(运动员编号,项目编号,成绩)。
    能正确修改”女子10米跳水“项目的比赛地点和时间的选项是()。
    A.UPDATE 项目 SET 比赛地点='五台山体育馆" AND 比赛时间=‘2019-05-26 15:00:00’ WHERE 名称=‘女子10米跳水’;
    B.UPDATE 项目 SET 比赛地点='五台山体育馆",比赛时间=‘2019-05-26 15:00:00’ WHERE 名称=‘女子10米跳水’;
    C.UPDATE 比赛地点=‘五台山体育馆’,比赛时间=‘2019-05-26 15:00:00’ SET 项目 WHERE 名称='女子10米跳水;
    D.UPDATE 比赛地点=‘五台山体育馆’,比赛时间=‘2019-05-26 15:00:00’ WHERE 名称=‘女子10米跳水’;

  9. (单选题,3分)某运动会管理系统数据库的部分基本表:运动员(运动员编号,姓名,性别,队别),项目(项目编号,名称,比赛地点,比赛时间),比赛(运动员编号,项目编号,成绩)。
    能正确查询“篮球相关项目的参赛运动员编号、姓名、队别”的选项是()。
    A.SELECT 运动员.运动员编号,姓名,队别 FROM 比赛,运动员,项目 WHERE 比赛.运动员编号=项目.运动员编号 AND 运动员.项目编号=比赛项目编号 AND 名称 LIKE ‘%篮球%’;
    B.SELECT 运动员.运动员编号,姓名,队别 FROM 比赛,运动员,项目 WHERE 比赛.运动员编号=运动员,运动员编号 AND 项目.项目编号=比赛项目编号 AND 名称 LIKE '%篮球%;
    C.SELECT 运动员编号,姓名,队别 FROM 运动员,项目 WHERE 名称 LIKE ‘%篮球%’;
    D.SELECT 运动员.运动员编号,姓名,队别 FROM 比赛,运动员,项目 WHERE 比赛.运动员编号=运动员.运动员编号 AND 项目.项目编号=比赛,项目编号 AND 名称='%篮球%;

  10. (单选题,3分)某运动会管理系统数据库的部分基本表:运动员(运动员编号,姓名,性别,队别),项目(项目编号,名称,比赛地点,比赛时间),比赛(运动员编号,项目编号,成绩)。
    能正确“计算出各队总分,并显示排行榜前三名的队名和分值”的选项是()。
    A.SELECT TOP 3队别,SUM(成绩) FROM 比赛,运动员 WHERE 比赛.运动员编号=运动员.运动员编号GROUP BY 队别 ORDER BY SUM(成绩);
    B.SELECT TOP 3队别,SUM(成绩)FROM 比赛,运动员 WHERE 比赛.运动员编号=运动员.运动员编号GROUP BY 队别;
    C.SELECT TOP 3队别,SUM(成绩) FROM 比赛,运动员 WHERE 比赛.运动员编号=运动员.运动员编号ORDER BY SUM(成绩);
    D.SELECT TOP 3队别,SUM(成绩) FROM 比赛,运动员 WHERE 比赛.运动员编号=运动员.运动员编号 GROUP BY 队别 ORDER BY 2 DESC;

  11. (单选题,3分)某运动会管理系统数据库的部分基本表:运动员(运动员编号,姓名,性别,队别),项目(项目编号,名称,比赛地点,比赛时间),比赛(运动员编号,项目编号,成绩)。
    能正确查询出参加了所有项目的运动员的姓名的选项是()。
    A.SELECT 姓名 FROM 运动员,比赛,项目 WHERE 运动员.运动员编号=比赛.运动员编号 AND 项目.项目编号=比赛.项目编号;
    B.SELECT 姓名 FROM 运动员 WHERE NOT EXISTS (SELECT * FROM 项目 WHERE NOT EXISTS (SELECT * FROM 比赛 WHERE 运动员.运动员编号=比赛.运动员编号 AND 项目.项目编号=比赛.项目编号));
    C.SELECT 姓名 FROM 运动员 WHERE EXISTS (SELECT * FROM 项目 WHERE EXISTS (SELECT * FROM 比赛 WHERE 运动员.运动员编号=比赛.运动员编号 AND 项目.项目编号=比赛.项目编号));
    D.SELECT 姓名FROM 运动员 WHERE NOT EXISTS (SELECT * FROM 比赛 WHER E运动员.运动员编号=比赛.运动员编号);

  12. (单选题,3分)学生选课信息表:sc(sno,cno, grade),主键为(sno, cno),从学生选课信息表中找出无成绩的元组的SQL语句是()。
    A.SELECT * FROM sc WHERE grade=NULL
    B.SELECT * FROM sc WHERE grade IS " "
    C.SELECT * FROM sc WHERE grade= ’ ’
    D. SELECT * FROM sc WHERE grade IS NULL

  13. (单选题,3分)如果要查询比某个子集中最小值大的所有记录,在WHERE子句中应使用()运算符。
    A.>ANY
    B.>ALL
    C. D.

  14. (单选题,3分)要查询book表中所有书名中包含“计算机”的书籍情况,可用()语句。
    A. selete * from book where book_name like *计算机*
    B. selete * from book where book_name like ‘%计算机%’
    C. selete * from book where book_name = *计算机*
    D.selete * from book where book_name = ‘%计算机%’

  15. (单选题,3分)某运动会管理系统数据库的部分基本表:运动员(运动员编号,姓名,性别,队别),项目(项目编号,名称,比赛地点,比赛时间),比赛(运动员编号,项目编号,成绩)。
    能正确查询出“2019年5月10日比赛的项目基本信息”的选项是(
    A.SELECT * FROM 项目 WHERE 比赛时间 LIKE '2019-05-10_;
    B.SELECT * FROM 项目 WHERE 比赛时间 LIKE ‘2019-05-10\%’ ESCAPE ‘\’;
    C.SELECT * FROM 项目 WHERE 比赛时间 LIKE ‘2019-05-10%’;
    D.SELECT * FROM 项目 WHERE 比赛时间 LIKE '2019-05-10\%;

  16. (单选题,3分)某运动会管理系统数据库的部分基本表:运动员(运动员编号,姓名,性别,队别),项目(项目编号,名称,比赛地点,比赛时间),比赛(运动员编号,项目编号,成绩)。不能正确插入一名新的运动员的选项是()。
    A.INSERT INTO 运动员(运动员编号,姓名,性别,队别) VALUES(js01029’,‘王冲’,‘男’,江苏);
    B.INSERT INTO 运动员 VALUE(js01029’,‘王冲’,‘男’,‘江苏’);
    C. INSERT INTO 运动员 VALUES(js01029’,‘王冲’,‘男’‘江苏’);
    D.INSERT INTO 运动员(姓名,运动员编号,队别,性别) VALUES(‘王冲’,‘js01029’,‘江苏’,‘男’);

  17. (单选题,3分)在数据库db_student中有表St_info:学号(Sno)、姓名(Sname)、性别(Ssex)、年龄(Sborn)、所在系(Sdept),其中Sno为主键,其它字段均允许为空。查询所有女生的人数应该用()。
    A.SELECT COUNT(*) FROM St_info WHERE Ssex='女
    B.SELECT COUNT(Ssex='女) FROM St_info
    C. SELECT COUNT(*) FROM St_info GROUP BY Ssex
    D.SELECT COUNT(Sname) FROM St_info WHERE Ssex='女

  18. (单选题,3分)某运动会管理系统数据库的部分基本表:运动员(运动员编号,姓名,性别,队别),项目(项目编号,名称,比赛地点,比赛时间),比赛(运动员编号,项目编号,成绩)。
    能正确查询出在”男子10米跳水“比赛中,成绩高于所有江苏队运动员的其他队运动员姓名的选项是()。

    A.SELECT 姓名,队别 FROM 运动员,比赛,项目 WHERE 运动员.运动员编号=比赛.运动员编号
    AND项目.项目编号=比赛.项目编号 AND 名称=‘男子10米跳水’ AND 队别<>‘江苏’
    AND 成绩 < ALL (SELECT 成绩 FROM 运动员,比赛,项目 WHERE 运动员.运动员编号=比赛.运动员编号 AND 项目.项目编号=比赛.项目编号 AND 名称=‘男子10米跳水’ AND 队别=‘江苏’);

    B.SELECT 姓名,队别 FROM 运动员,比赛,项目 WHERE 运动员.运动员编号=比赛.运动员编号 AND项目.项目编号=比赛.项目编号AND名称='男子10米跳水’AND队别<>'江苏’AND成绩> ANY(SELECT成绩FROM运动员,比赛,项目
    WHERE 运动员.运动员编号=比赛.运动员编号 AND 项目.项目编号=比赛项目编号 AND 名称=‘男子10米跳水’ AND 队别='江苏);

    C.SELECT 姓名,队别 FROM 运动员,比赛,项目
    WHERE 运动员.运动员编号=比赛.运动员编号 AND 项目项目编号=比赛.项目编号 AND 名称=‘男子10米跳水’ AND 队别<>‘江苏’ AND 成绩 > (SELECT MAX(成绩) FROM 运动员,比赛,项目 WHERE 运动员.运动员编号=比赛.运动员编号 AND 项目.项目编号=比赛.项目编号 AND 名称=‘男子10米跳水’ AND 队别='江苏);

    D.SELECT 姓名,队别 FROM 运动员,比寒,项目
    WHERE 运动员.运动员编号=比赛.运动员编号 AND 项目项目编号=比赛项目编号 AND 名称=‘男子10米跳水’ AND 成绩 > (SELECT MAX(成绩) FROM 运动员,比赛,项目 WHERE 运动员.运动员编号=比赛.运动员编号 AND 项目.项目编号=比赛项目编号 AND 名称=‘男子10米跳水’ AND 队别=‘江苏’);

  19. (单选题,3分)某运动会管理系统数据库的部分基本表:运动员(运动员编号,姓名,性别,队别),项目(项目编号,名称,比赛地点比赛时间),比赛(运动员编号,项目编号,成绩)。能正确查询出“尚未指定比赛场地和时间的项目名称”的选项是()。
    A.SELECT 名称 FROM 项目 WHERE 比赛地点=’ ’ AND 比赛时间=’ ';
    B.SELECT 名称 FROM 项目 WHERE 比赛地点= NULL AND 比赛时间= NULL;
    C.SELECT 名称 FROM 项目 WHERE 比赛地点=‘NULL’ AND 比赛时间=‘NULL’;
    D.SELECT 名称 FROM 项目 WHERE 比赛地点 IS NULL AND 比赛时间 IS NULL;

  20. (单选题,3分)某运动会管理系统数据库的部分基本表:运动员(运动员编号,姓名,性别,队别),项目(项目编号,名称,比赛地点,比赛时间),比赛(运动员编号,项目编号,成绩)。
    不能正确查询出参加”男子乒乓球单打“比赛的运动员的编号和姓名的选项是()。

    A.SELECT 运动员编号,姓名 FROM 运动员
    WHERE 运动员编号=(SELECT 运动员编号 FROM 比赛,项目 WHERE 项 目.项目编号=比赛.项目编号 AND 名称=‘男子乒乓球单打’);

    B.SELECT 运动员编号,姓名 FROM 运动员
    WHERE EXISTS (SELECT * FROM 比赛,项目 WHERE 项目.项目编号=比赛.项目编号 AND 名称=‘男子乒乓球单打’ AND 运动员.运动员编号=比赛.运动员编号)

    C.SELECT 运动员编号,姓名 FROM 运动员,比赛,项目
    WHERE 运动员.运动员编号=比赛.运动员编号 AND 项目.项目编号=比赛项目编号 AND 名称='男子乒乓球单打;

    D.SELECT 运动员编号,姓名 FROM 运动员 WHERE 运动员编号 IN (SELECT 运动员编号 FROM 比赛,项目 WHERE 项目.项目编号=比赛.项目编号 AND 名称='男子乒乓球单打);

二.简答题(共2题,40分)

  1. (简答题,10分)
    设有学生表S(SNO,SN)(SNO为学号,SN为姓名)和学生选课表SC(SNO,CNO,CN,G)(CNO为课程号,CN为课程名,G为成绩),试用SQL语言完成以下各题:
    (1).建立一个视图 V-SSC(SNO,SN,CNO,CN,G),并按 CNO 升序排序;
    (2).从视图 V-SSC 上查询平均成绩在90分以上的 SN、CN 和 G。

正确答案:
(1).

CREATE VIEWV-SSC(SNO,SN,CNO,CN,G)
AS SELECT S.SNO, S.SN,CNO,SC.CN,SC.G
FROM S,SC
WHERE S.SNO=SC.SNO
ORDER BY CNO

(2).

SELECT SN,CN,G
FROM V-SSC
GROLIP BY SNO
HAVING AVG(G)>90
  1. (简答题,30分)设学生课程数据库中有三个关系:
    学生关系S(S#,SNAME,AGE,SEX)学习关系SC(S#,C#,GRADE)课程关系C(C#,CNAME)
    其中S#、C#、SNAME、AGE、SEX、GRADE、CNAME分别表示学号、课程号、姓名、年龄、性别、成绩和课程名。用SQL语句表达下列操作
    (1)检索选修课程名称为“MATHS”的学生的学号与姓名
    (2)检索至少学习了课程号为“C1”和“C2”的学生的学号
    (3)检索年龄在18到20之间(含18和20)的女生的学号、姓名和年龄
    (4)检索平均成绩超过80分的学生学号和平均成绩
    (5)检索选修了全部课程的学生姓名
    (6)检索选修了三门课以上的学生的姓名

正确答案:
(1)SELECT S#, SNAME FROM S,SC,C WHERE S.S#=SC.S# AND C.C#=SC.C# AND CNAME=‘MATHS’
(2) SELECT S# FROM SC WHERE C#=‘C1’ AND S# IN ( SELECT S# FROM SC WHERE C#=C2’)
(3) SELECT S#, SNAME,AGE FROM S WHERE SEX=‘女’ AND AGE BETWEEN 18 AND 20
(4) SELECT S#, AVG(GRADE) ‘平均成绩’ FROM SC GROUP BY S# HAVING AVG(GRADE)>80
(5) SELECT SNAME FROM S WHERE NOT EXISTS(SELECT*FROM C
WHERE NOT EXISTS (SELECT * FROM SC WHERE S#=S.S# AND C#=C.C#))
(6) SELECT SNAME FROM S,SC WHERE S.S#=SC.S# GROUP BY SNAME HAVING COUNT(*)>3

你可能感兴趣的:(数据库理论,数据库)