MySQL 综合练习

MySQL 综合练习


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

  1. MySQL中最基本的数据存储单位是什么?

    A. 表格

    B. 列

    C. 行

    D. 数据库

  2. 在MySQL中,下列哪种数据类型可以存储的数字?

    A. INT

    B. BIGINT

    C. FLOAT

    D. DOUBLE

  3. 表达式 select (9+6*5+3%2)/5-3 的运算结果是多少?( )

    A.1

    B.3

    C.5

    D.7

  4. 下列哪种MySQL查询语句可以在表格中查找指定的数据?

    A. SELECT

    B. UPDATE

    C. DELETE

    D. INSERT

  5. 下列哪种MySQL查询语句可以对查询结果进行分页显示?

    A. LIMIT

    B. GROUP BY

    C. ORDER BY

    D. HAVING

  6. 下列哪种MySQL查询语句可以对查询结果进行排序?

    A. ORDER BY

    B. GROUP BY

    C. HAVING

    D. LIMIT

  7. MySQL中唯一索引的关键字是(  )

    A. FULLTEXT INDEX

    B. ONLY INDEX

    C. UNIQUE INDEX

    D. INDEX

  8. SQL语言中,SELECT语句的执行结果是( )

    A. 属性

    B. 表

    C. 元组

    D. 数据库

  9. 以下聚合函数,用于求数据平均值的是( )

    A. MAX

    B. SUM

    C. COUNT

    D. AVG

  10. 使用SQL语句进行分组检索时,为了去掉不满足条件的分组,应当( )

    A. 使用WHERE子句

    B. 在GROUP BY后面使用HAVING子句

    C. 先使用WHERE子句,再使用HAVING子句

    D. 先使用HAVING子句,再使用WHERE子句

  11. MySQL中,备份数据库的命令是( )

    A. mysqldump

    B. mysql

    C. backup

    D. copy

  12. 对关系S和关系R进行集合运算,结果中既包含S中元组也包含R中元组,这种集合运算称为 ( )

    A. 并运算

    B. 交运算

    C. 差运算

    D. 积运算

  13. 下列哪种MySQL备份方式可以备份整个数据库?

    A. mysqldump

    B. mysqlhotcopy

    C. binary copy

    D. xtrabackup

  14. drop database MyDB001; 该代码的功能是( )

    A. 修改数据库名为MyDB001

    B. 删除数据库MyDB001

    C. 使用数据库MyDB001

    D. 创建数据库MyDB001

  15. 下列哪种MySQL恢复方式可以恢复整个数据库?

    A. mysqlimport

    B. mysqlbinlog

    C. mysql

    D. mysqlpump

  16. 设有关系模式EMP(职工号,姓名,年龄,技能)。假设职工号唯一,每个职工有多项技能,则EMP表的主键是( )

    A. 职工号

    B. 姓名,技能

    C. 技能

    D. 职工号,技能

  17. 下面错误的说法是( )

    A. 关键字只能由单个的属性组成

    B. 在一个关系中,关键字的值不能为空

    C. 一个关系中的所有候选关键字均可以被指定为主关键字

    D. 关键字是关系中能够用来惟一标识元组的属性

  18. 有订单表orders,包含用户信息userid、产品信息productid两列, 以下语句能够返回至少被订购过两回的productid的语句是( )

    A. SELECT productid FROM orders WHERE count(productid)>1

    B. SELECT productid FROM orders WHERE max(productid)>1

    C. SELECT productid FROM orders WHERE having count(productid)>1 GROUP BY productid

    D. SELECT productid FROM orders GROUP BY productid HAVING count(productid)>1

  19. 索引可以显著提高哪一操作的效率( )

    A. INSERT

    B. UPDATE

    C. DELETE

    D. SELECT

  20. 储蓄所与多个储户,储户在多个储蓄所存取款,储蓄所与储户之间是( )。

    A. 一对一的联系

    B. 一对多的联系

    C. 多对一的联系

    D. 多对多的联系


二、简答题(每题5分,共15分)

  1. 请简述什么是数据库管理系统,什么是数据库系统?以及它们的主要功能有哪些?

  2. MySQL中的表维护语句有哪些?

  3. 详述索引的概念和促进作用以及索引的分类。


三、SQL操作题(每题9分,共45分)

在开始之前,先建立本文所需要的数据表格:(自需用文件中的sql代码生成)

-- 建表
-- 学生表
CREATE TABLE `Student`(
`s_id` VARCHAR(20),
`s_name` VARCHAR(20) NOT NULL DEFAULT '',
`s_birth` VARCHAR(20) NOT NULL DEFAULT '',
`s_sex` VARCHAR(10) NOT NULL DEFAULT '',
PRIMARY KEY(`s_id`)
);
-- 课程表
CREATE TABLE `Course`(
`c_id` VARCHAR(20),
`c_name` VARCHAR(20) NOT NULL DEFAULT '',
`t_id` VARCHAR(20) NOT NULL,
PRIMARY KEY(`c_id`)
);
-- 教师表
CREATE TABLE `Teacher`(
`t_id` VARCHAR(20),
`t_name` VARCHAR(20) NOT NULL DEFAULT '',
PRIMARY KEY(`t_id`)
);
-- 成绩表
CREATE TABLE `Score`(
`s_id` VARCHAR(20),
`c_id` VARCHAR(20),
`s_score` INT(3),
PRIMARY KEY(`s_id`,`c_id`)
);

-- 插入学生表测试数据
insert into Student values('01' , '赵雷' , '1990-01-01' , '男');
insert into Student values('02' , '钱电' , '1990-12-21' , '男');
insert into Student values('03' , '孙风' , '1990-05-20' , '男');
insert into Student values('04' , '李云' , '1990-08-06' , '男');
insert into Student values('05' , '周梅' , '1991-12-01' , '女');
insert into Student values('06' , '吴兰' , '1992-03-01' , '女');
insert into Student values('07' , '郑竹' , '1989-07-01' , '女');
insert into Student values('08' , '王菊' , '1990-01-20' , '女');
-- 课程表测试数据
insert into Course values('01' , '语文' , '02');
insert into Course values('02' , '数学' , '01');
insert into Course values('03' , '英语' , '03');

-- 教师表测试数据
insert into Teacher values('01' , '张三');
insert into Teacher values('02' , '李四');
insert into Teacher values('03' , '王五');

-- 成绩表测试数据
insert into Score values('01' , '01' , 80);
insert into Score values('01' , '02' , 90);
insert into Score values('01' , '03' , 99);
insert into Score values('02' , '01' , 70);
insert into Score values('02' , '02' , 60);
insert into Score values('02' , '03' , 80);
insert into Score values('03' , '01' , 80);
insert into Score values('03' , '02' , 80);
insert into Score values('03' , '03' , 80);
insert into Score values('04' , '01' , 50);
insert into Score values('04' , '02' , 30);
insert into Score values('04' , '03' , 20);
insert into Score values('05' , '01' , 76);
insert into Score values('05' , '02' , 87);
insert into Score values('06' , '01' , 31);
insert into Score values('06' , '03' , 34);
insert into Score values('07' , '02' , 89);
insert into Score values('07' , '03' , 98);

(建表及插入数据SQL见题干,以下基于该数据表操作)

  1. 查询"01"课程比"02"课程成绩高的学生的信息及课程分数。

  2. 查询平均成绩小于60分的同学的学生编号和学生姓名和平均成绩(包括有成绩的和无成绩的)。

  3. 查询所有同学的学生编号、学生姓名、选课总数、所有课程的总成绩。

  4. 找出没有学过张三老师课程的学生。

  5. 查询学过01课程,但是没有学过02课程的学生信息。


参考答案

一、选择题

1.C

2.ABCD(题干允许多个正确,所有均可存储数字)

3.C

4.A

5.A

6.A

7.C

8.B

9.D

10.B

11.A

12.A

13.A

14.B

15.C

16.D

17.A

18.D

19.D

20.D


二、简答题

  1. 数据库管理系统(DBMS) :是一种用于建立、使用和维护数据库的软件系统,负责数据的定义、操作、存储、控制。
    数据库系统(DBS) :由数据库、DBMS、应用程序和数据库管理员组成的完整系统。
    主要功能:数据定义、数据操纵、数据存储管理、数据安全与完整性控制、并发控制与恢复等。

  2. 表维护语句:

    • 创建表:CREATE TABLE

    • 修改表:ALTER TABLE

    • 删除表:DROP TABLE

    • 清空表:TRUNCATE TABLE

  3. 索引概念 :索引是数据库中用于加快数据检索速度的一种数据结构。
    作用 :提高查询效率,但会增加写入开销和存储空间。
    分类

    • 普通索引(INDEX)

    • 唯一索引(UNIQUE INDEX)

    • 主键索引(PRIMARY KEY)

    • 全文索引(FULLTEXT INDEX)

    • 组合索引(多列索引)


三、SQL操作题

  1. "01"课程比"02"课程成绩高的学生

    SELECT s.*, sc1.s_score AS score01, sc2.s_score AS score02
    FROM Student s
    JOIN Score sc1 ON s.s_id = sc1.s_id AND sc1.c_id = '01'
    JOIN Score sc2 ON s.s_id = sc2.s_id AND sc2.c_id = '02'
    WHERE sc1.s_score > sc2.s_score;

  2. 平均成绩小于60分的学生

    SELECT s.s_id, s.s_name, AVG(sc.s_score) AS avg_score
    FROM Student s
    LEFT JOIN Score sc ON s.s_id = sc.s_id
    GROUP BY s.s_id, s.s_name
    HAVING avg_score < 60 OR avg_score IS NULL;

  3. 所有学生的编号、姓名、选课总数、总成绩

    SELECT s.s_id, s.s_name, COUNT(sc.c_id) AS course_count, SUM(sc.s_score) AS total_score
    FROM Student s
    LEFT JOIN Score sc ON s.s_id = sc.s_id
    GROUP BY s.s_id, s.s_name;

  4. 没有学过张三老师课程的学生

    SELECT s.s_id, s.s_name
    FROM Student s
    WHERE s.s_id NOT IN (
    SELECT sc.s_id
    FROM Score sc
    JOIN Course c ON sc.c_id = c.c_id
    JOIN Teacher t ON c.t_id = t.t_id
    WHERE t.t_name = '张三'
    );

  5. 学过01课程但没学过02课程的学生信息

    SELECT s.*
    FROM Student s
    WHERE s.s_id IN (SELECT s_id FROM Score WHERE c_id='01')
    AND s.s_id NOT IN (SELECT s_id FROM Score WHERE c_id='02');

相关推荐
Y4090013 小时前
数据库基础知识——聚合函数、分组查询
android·数据库
JosieBook4 小时前
【数据库】MySQL 数据库创建存储过程及使用场景详解
数据库·mysql
处女座_三月4 小时前
改 TDengine 数据库的时间写入限制
数据库·sql·mysql
酷ku的森4 小时前
Redis中的hash数据类型
数据库·redis·哈希算法
Arva .4 小时前
Redis
数据库·redis·缓存
DemonAvenger4 小时前
MySQL与应用程序的高效交互模式:从基础到实战的最佳实践
数据库·mysql·性能优化
博一波5 小时前
Redis 集群:连锁银行的 “多网点智能协作系统”
数据库·redis·缓存
HashData酷克数据5 小时前
官宣:Apache Cloudberry (Incubating) 2.0.0 发布!
数据库·开源·apache·cloudberry
秋难降5 小时前
SQL 索引突然 “罢工”?快来看看为什么
数据库·后端·sql