MySQL 综合练习
一、选择题(每题2分,共40分)
-
MySQL中最基本的数据存储单位是什么?
A. 表格
B. 列
C. 行
D. 数据库
-
在MySQL中,下列哪种数据类型可以存储的数字?
A. INT
B. BIGINT
C. FLOAT
D. DOUBLE
-
表达式
select (9+6*5+3%2)/5-3
的运算结果是多少?( )A.1
B.3
C.5
D.7
-
下列哪种MySQL查询语句可以在表格中查找指定的数据?
A. SELECT
B. UPDATE
C. DELETE
D. INSERT
-
下列哪种MySQL查询语句可以对查询结果进行分页显示?
A. LIMIT
B. GROUP BY
C. ORDER BY
D. HAVING
-
下列哪种MySQL查询语句可以对查询结果进行排序?
A. ORDER BY
B. GROUP BY
C. HAVING
D. LIMIT
-
MySQL中唯一索引的关键字是( )
A. FULLTEXT INDEX
B. ONLY INDEX
C. UNIQUE INDEX
D. INDEX
-
SQL语言中,SELECT语句的执行结果是( )
A. 属性
B. 表
C. 元组
D. 数据库
-
以下聚合函数,用于求数据平均值的是( )
A. MAX
B. SUM
C. COUNT
D. AVG
-
使用SQL语句进行分组检索时,为了去掉不满足条件的分组,应当( )
A. 使用WHERE子句
B. 在GROUP BY后面使用HAVING子句
C. 先使用WHERE子句,再使用HAVING子句
D. 先使用HAVING子句,再使用WHERE子句
-
MySQL中,备份数据库的命令是( )
A. mysqldump
B. mysql
C. backup
D. copy
-
对关系S和关系R进行集合运算,结果中既包含S中元组也包含R中元组,这种集合运算称为 ( )
A. 并运算
B. 交运算
C. 差运算
D. 积运算
-
下列哪种MySQL备份方式可以备份整个数据库?
A. mysqldump
B. mysqlhotcopy
C. binary copy
D. xtrabackup
-
drop database MyDB001;
该代码的功能是( )A. 修改数据库名为MyDB001
B. 删除数据库MyDB001
C. 使用数据库MyDB001
D. 创建数据库MyDB001
-
下列哪种MySQL恢复方式可以恢复整个数据库?
A. mysqlimport
B. mysqlbinlog
C. mysql
D. mysqlpump
-
设有关系模式EMP(职工号,姓名,年龄,技能)。假设职工号唯一,每个职工有多项技能,则EMP表的主键是( )
A. 职工号
B. 姓名,技能
C. 技能
D. 职工号,技能
-
下面错误的说法是( )
A. 关键字只能由单个的属性组成
B. 在一个关系中,关键字的值不能为空
C. 一个关系中的所有候选关键字均可以被指定为主关键字
D. 关键字是关系中能够用来惟一标识元组的属性
-
有订单表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
-
索引可以显著提高哪一操作的效率( )
A. INSERT
B. UPDATE
C. DELETE
D. SELECT
-
储蓄所与多个储户,储户在多个储蓄所存取款,储蓄所与储户之间是( )。
A. 一对一的联系
B. 一对多的联系
C. 多对一的联系
D. 多对多的联系
二、简答题(每题5分,共15分)
-
请简述什么是数据库管理系统,什么是数据库系统?以及它们的主要功能有哪些?
-
MySQL中的表维护语句有哪些?
-
详述索引的概念和促进作用以及索引的分类。
三、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见题干,以下基于该数据表操作)
-
查询"01"课程比"02"课程成绩高的学生的信息及课程分数。
-
查询平均成绩小于60分的同学的学生编号和学生姓名和平均成绩(包括有成绩的和无成绩的)。
-
查询所有同学的学生编号、学生姓名、选课总数、所有课程的总成绩。
-
找出没有学过张三老师课程的学生。
-
查询学过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
二、简答题
-
数据库管理系统(DBMS) :是一种用于建立、使用和维护数据库的软件系统,负责数据的定义、操作、存储、控制。
数据库系统(DBS) :由数据库、DBMS、应用程序和数据库管理员组成的完整系统。
主要功能:数据定义、数据操纵、数据存储管理、数据安全与完整性控制、并发控制与恢复等。 -
表维护语句:
-
创建表:
CREATE TABLE
-
修改表:
ALTER TABLE
-
删除表:
DROP TABLE
-
清空表:
TRUNCATE TABLE
-
-
索引概念 :索引是数据库中用于加快数据检索速度的一种数据结构。
作用 :提高查询效率,但会增加写入开销和存储空间。
分类:-
普通索引(INDEX)
-
唯一索引(UNIQUE INDEX)
-
主键索引(PRIMARY KEY)
-
全文索引(FULLTEXT INDEX)
-
组合索引(多列索引)
-
三、SQL操作题
-
"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; -
平均成绩小于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; -
所有学生的编号、姓名、选课总数、总成绩
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; -
没有学过张三老师课程的学生
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 = '张三'
); -
学过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');