MYSQL数据库系统期末试题及参考答案(1)

答案在最后,写完记得核对哦!

一、选择题(共20分,每小题2分)

1.主键可以由表中的(   )个字段组成(选一项)

A、一       B、二       C、三       D、任意多个 

2.ORDER BY 的作用是(   )(选一项)

A、查询输出分组                        B、设置查询条件

C、对记录排序                          D、限制查询返回的数据行

3.表book中包含三个字段:title(varchar), author(varchar), price(float)。

Author的默认值是’UNKNOW’,执行SQL语句:insert book (title,price) values (jsp', 50)。以下结果正确的是(   )(选一项)

A、插入失败,SQL语句有错               B、插入成功,author列的数据是UNKNOW

C、插入成功,author列的数据是NULL      D、插入成功,author列的数据是50

4.成绩表grade中字段score代表分数,以下(  )语句返回成绩表中的最低分。(选两项)

A、select max(score) from grade

B、select top 1 score from grade order by score asc

C、Select min(score) from grade

D、select top 1 score from grade order by score desc

5.关系型数据库中,要防止小于100的数保存到int类型的列可以(  )(选一项)

A、使用主键约束                        B、使用缺省约束

C、使用外键约束                        D、使用检查约束

6.关于主键,以下(  )说法是正确的。(选一项)

A、主键可以用来确保表中不存在重复的数据行。

B、一个表必须有一个主键。

C、主键列可以为null。

D、只能对整数型列设置主键。

7.假设两张表建立了“主键—外键”的引用关系,则主表(主键)中对应(外键)的数据(  )(选一项)

A、必须在子表中有对应                  B、可以比主表的数据多

C、主表的数据行可以比子表的数据行少     D、必须为数字数据类型

8.若要删除book表中所有数据,以下语句正确的是(   )(选一项)

A、truncate table book                 B、delete * from book

C、drop table book                     D、delete  table  book

9.定义数据表时,若要求某一列的值是唯一的,则应在定义的时候使用(  )(选一项)

A、NULL         B、NOT NULL         C、DISTINCT        D、UNIQUE

10.学生成绩表grade中有字段score(float),现在要把所有在55分至60(包含两个边界值)之间的分数提高5分,以下SQL语句正确的是(选2项)

A、Update grade set score=score+5

B、Update grade set score=score+5 where score>=55 or score <=60

C、Update grade set score=score+5 where score between 55 and 60

D、Update grade set score=score+5 where score <=55 and score >=60

二、填空题(共10分,每空1分)

  1. SQL 中,排序order by的排序方式有:升序______或降序______
  2. 去除查询结果的重复数据可以使用______关键字。
  3. 体现数据库实体完整性的三个约束是:___________________________________
  4. 模糊查询最常用的两种通配符是:________________________
  5. SQL聚合函数中,求和及平均数的函数分别是:________________________

三、代码题(共70分)

  1. 创建及使用数据库StuManager。(5分)
  2. 建立两张表,StuInfo(学生信息表),ScoreInfo(学生成绩表)

表结构分别如下:

                            学生信息表(StuInfo)

字段名

说明

类型

长度

可否为空

约束

SNO

学生编号

nvarchar

20

主键约束

SName

学生姓名

nvarchar

20

SAge

学生年龄

Int

Check约束,年龄在15-25岁之间

STime

入学时间

Date

TNO

小组编号

nvarchar

20

SNative

学生籍贯

nvarchar

20

默认约束:湖北

学生成绩表(ScoreInfo)

字段名

说明

类型

长度

可否为空

约束

ScNO

成绩编号

nvarchar

20

主键约束

SNO

学生编号

nvarchar

20

外键:参照学生信息表主键SNO

SScore

学生成绩

Decimal(10,2)

  1. 使用插入语句为两张表添加如下数据

学生表(StuInfo)

学生编号      姓名    年龄     入学时间     小组编号          籍贯

s1001      张三     16    2020-09-03          1001             湖北

s1002      李四     19    2019-09-01          1002             河南

s1003      王五     20    2021-09-04          1001             湖北

s1004      赵六     19    2020-09-01          1002             新疆

s1005      陈七     18    2021-09-03          1001             湖北

成绩表(ScoreInfo)

成绩编号    学生编号    学生成绩       

     sc1001     s1001        76.5

         sc1002     s1002        81

         sc1003     s1003        57

         sc1004     s1004        85

         sc1005     s1005        77

  1. 显示成绩排行前3的成绩信息,要求使用别名显示列名(10分)
  2. 查询2021年以前入学的学生信息及考试成绩(10分)
  3. 按小组编号分类计算小组员工数、学生平均年龄,并显示小组平均年龄大于19岁的小组信息,要求使用别名显示列名(10分)
  4. 查询成绩在80和90(包含80和90)之间的学生信息,要求列出学生编号、学生成绩、学生姓名、学生年龄、入学时间(10分)
    -- -- 一、选择题
    -- 1.D  2. C  3.  B  4. BC 5.  D  6. A   7.  A  8. A   9.  D  10.BC
    -- -- 二、填空题
    -- 3.asc ,desc
    -- 4. DISTINCT
    -- 5.主键约束,外键约束,唯一约束
    -- 6.%,_,
    -- 7.SUM() ,AVG()
    -- 创建数据库StuManager
    -- 1,删除数据库
    	DROP DATABASE IF EXISTS StuManager;
    -- 2,创建数据库
    	CREATE DATABASE StuManager;
    -- 3,修改数据库编码方式和字符集排列顺序
    	ALTER DATABASE StuManager CHARACTER SET utf8 COLLATE utf8_bin;
    -- 4,使用数据库
    	USE StuManager;
    -- 9.	建立两张表,StuInfo(学生信息表),ScoreInfo(学生成绩表)
    -- 表结构分别如下:
    -- 学生信息表(StuInfo)
    DROP TABLE IF EXISTS StuInfo;
    CREATE TABLE StuInfo(
    SNO NVARCHAR(20) NOT NULL PRIMARY KEY,        -- 学生编号
    SName NVARCHAR(20) NOT NULL,                  -- 学生姓名
    SAge INT NOT NULL CHECK (SAge BETWEEN 15 AND 25),   -- 学生年龄
    STime DATE,    -- 入学时间
    TNO NVARCHAR(20),   -- 小组编号
    SNative NVARCHAR(20) DEFAULT '湖北'    -- 学生籍贯
    );
    -- 学生成绩表(ScoreInfo)
    DROP TABLE IF EXISTS ScoreInfo;
    CREATE TABLE ScoreInfo(
    ScNO NVARCHAR(20) NOT NULL PRIMARY KEY,    -- 成绩编号
    SNO NVARCHAR(20) NOT NULL,         -- 学生编号
    SScore DECIMAL(10,2),              -- 学生成绩
    FOREIGN KEY (SNO) REFERENCES StuInfo(SNO)		
    );
    -- 10.	使用插入语句为两张表添加如下数据
    SELECT * FROM StuInfo;
    SELECT * FROM ScoreInfo;
    -- 学生表(StuInfo)
    INSERT INTO StuInfo(SNO, SName, SAge, STime, TNO, SNative)VALUES
    ('s1001', '张三', 16, '2020-09-03', '1001', '湖北'),
    ('s1002', '李四', 19, '2019-09-01', '1002', '河南'),
    ('s1003', '王五', 20, '2021-09-04', '1001', '湖北'),
    ('s1004', '赵六', 19, '2020-09-01', '1002', '新疆'),
    ('s1005', '陈七', 18, '2021-09-03', '1001', '湖北');
    -- 成绩表(ScoreInfo)
    INSERT INTO ScoreInfo(ScNO, SNO, SScore)VALUES
    ('sc1001', 's1001', 76.5),
    ('sc1002', 's1002', 81),
    ('sc1003', 's1003', 57),
    ('sc1004', 's1004', 85),
    ('sc1005', 's1005', 77);
    -- 11.	显示成绩排行前3的成绩信息,要求使用别名显示列名(10分)
    SELECT s.SNO AS '学号',s.SName AS '姓名',s.SAge AS '年龄',sc.SScore AS '考试成绩'
    FROM StuInfo s,ScoreInfo sc 
    WHERE s.SNO = sc.SNO 
    ORDER BY sc.SScore DESC 
    LIMIT 3;
    -- 12.	查询2021年以前入学的学生信息及考试成绩(10分)
    SELECT * FROM StuInfo JOIN ScoreInfo ON StuInfo.SNO = ScoreInfo.SNO WHERE STime < '2021-01-01';
    -- 13.	按小组编号分类计算小组员工数、学生平均年龄,并显示小组平均年龄大于19岁的小组信息,要求使用别名显示列名(10分)
    SELECT s.TNO AS '小组编号',COUNT(*) AS '小组学生人数',AVG(s.SAge) AS '小组学生平均年龄'
    FROM StuInfo s
    GROUP BY s.TNO
    HAVING AVG(s.SAge) > 19;
    -- 14.	查询成绩在80和90(包含80和90)之间的学生信息,要求列出学生编号、学生成绩、学生姓名、学生年龄、入学时间(10分)
    SELECT StuInfo.SNO AS '学生编号',SName AS '学生姓名',SScore AS '学生成绩',SAge AS '学生年龄',STime AS '入学时间'
    FROM StuInfo JOIN ScoreInfo ON StuInfo.SNO = ScoreInfo.SNO
    WHERE SScore BETWEEN 80 AND 90;

  • 5
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

正在奋斗的程序猿

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值