MySQL课程考试题

文章目录

MySQL课程考试题

一、单项选择
1.以下聚合函数求数据总和的是()
A.MAX
B.SUM
C.COUNT
D.AVG

2.SELECT语句的完整语法较复杂,但至少包含的部分是()
A.仅SELECT
B.SELECT, FROM
C.SELECT, GROUP
D.SELECT, INTO

3.SQL语句中的条件用以下哪一项来表达()
A.THEN
B.WHILE
C.WHERE
D.IF

4.使用CREATE TABLE语句的()子句,在创建基本表时可以启用全文本搜索
A.FULLTEXT
B.ENGINE
C.FROM
D.WHERE

5.以下能够删除一列的是()
A.ALTER TABLE emp REMOVE addcolumn
B.ALTER TABLE emp DROP COLUMN addcolumn
C.ALTER TABLE emp DELETE COLUMN addcolumn
D.ALTER TABLE emp DELETE addcolumn
6.若要撤销数据库中已经存在的表S,可用()
A.DELETE TABLE S
B.DELETE S
C.DROP S
D.DROP TABLE S

7.查询表结构用以下哪一项()
A.FIND
B.SELECT
C.ALTER
D.DESC

8.UNIQUE唯一索引的作用是()
A.保证各行在该索引上的值都不能重复
B.保证各行在该索引上的值不能为NULL
C.保证参加唯一索引的各列,不能再参加其它的索引
D.保证同一张表的其它列不能再设置唯一索引

9.用于将事务处理的结果写到数据库的命令是()
A.INSERT
B.ROLLBACK
C.COMMIT
D.SAVEPOINT

10.查找条件为:姓名不是NULL的记录()
A.WHERE NAME ! NULL
B.WHERE NAME NOT NULL
C.WHERE NAME IS NOT NULL
D.WHERE NAME != NULL

11.主键的建立有()种方法
A.一种 B. 两种 C. 三种 D. 四种

12.在SQL语句中,子查询是()
A.选取单表中子段子集的查询语句
B.选取多表中子段子集的查询语句
C.返回单表中数据子集的查询语句
D.嵌入到另一个查询语句之中的查询语句

13.在select语句的where子句中,使用正则表达式过滤数据的关键字是()
A.LIKE
B.AGAINST
C.MATCH
D.REGEXP

14.以下哪种操作能够保证实现实体的完整性()
A.设置唯一键
B.设置外键
C.减少数据冗余
D.设置主键

15.修改数据库表结构是用以下哪一项命令()
A.UPDATE
B.CREATE
C.UPDATE
D.ALTER

16.以下语句错误的是()
A.select sal+1 from emp;
B.select sal10,saldeptno from emp;
C.select语句不能使用运算符号
D.select sal10,deptno10 from emp;

17.组合多条SQL查询语句形成组合查询的操作符是()
A.SELECT
B.ALL
C.LIKE
D.UNION

18.以下哪一项用来分组()
A.ORDER BY
B.ORDERED BY
C.GROUP BY
D.GROUPED BY

19.若要在基本表S中增加一列CN(课程名),可用()
A.ADD TABLE S ALTER (CN CHAR(8))
B.ALTER TABLE S ADD (CN CHAR(8))
C.ADD TABLE S (CN CHAR(8))
D.ALTER TABLE S (ADD CN CHAR(8))

20.删除经销商1018的数据记录的代码为( ) from distributors where distri_num=1018
A.drop table
B.delete *
C.drop column
D.delete

21.按照姓名降序排列是()
A.ORDER BY DESC NAME
B.ORDER BY NAME DESC
C.ORDER BY NAME ASC
D.ORDER BY ASC NAME

22.可以在创建表时用()来创建唯一索引,也可以用()来创建唯一索引
A.create table, create index
B.设置主键约束,设置唯一约束
C.设置主键约束,create index
D.以上都可以
23.在SELECT语句中,使用关键字()可以把重复行屏蔽
A.TOP
B.ALL
C.UNION
D.DISTINCT

24.SELECT COUNT(SALARY) FROM EMP GROUP BY DEPTNO的意思是()
A.求每个部门中的工资
B.求每个部门中工资的大小
C.求每个部门中工资的总和
D.求每个部门中工资的个数

25.从GROUP BY分组的结果集中再次用条件表达式进行筛选的子句是()
A.FROM
B.ORDER BY
C.HAVING
D.WHERE

26.为数据表创建索引的目的是()
A.提高查询的检索性能
B.归类
C.创建唯一索引
D.创建主键

27.如果要回滚一个事务,则要使用()语句
A.commit
B.begin
C.revoke
D.rollback

28.delete from employee语句的作用是()
A.删除当前数据库中整个employee表,包括表结构
B.删除当前数据库中employee表内的所有行
C.由于没有where子句,因此不删除任何数据
D.删除当前数据库中employee表内的当前行

29.以下哪一项用于左连接()
A.JOIN
B.RIGHT JOIN
C.LEFT JOIN
D.INNER JOIN

30.一张表的主键个数为()
A.至多3个
B.没有限制
C.至多1个
D.至多2个

31.条件”BETWEEN 20 AND 30”表示年龄在20到30之间,且()
A.包括20岁不包括30岁
B.不包括20岁包括30岁
C.不包括20岁和30岁
D.包括20岁和30岁

32.以下表示可变长度字符串的数据类型是()
A.TEXT
B.CHAR
C.VARCHAR
D.ENUM

33.下列说法错误的是()
A.GROUP BY子句用来分组WHERE子句的输出
B.WHERE子句用来筛选FROM子句中指定的操作产生的行
C.聚合函数需要和GROUP BY一起使用
D.HAVING子句用来从FROM的结果中筛选行

34.条件”IN(20, 30, 40)”表示()
A.年龄在20到40之间
B.年龄不在20到40之间
C.年龄是20、30、40
D.年龄不是20、30、40

二、简答题
1.请描述MySQL存储引擎Memory、MyISAM和InnoDB都有哪些区别
2.事务的ACID特性都有哪些,请分别提供解释
3.事务的隔离级别都有哪些,它们之间有什么不同、MySQL默认工作在哪一个事务的隔离级别上
4.索引底层的实现为什么要采用B+树结构
5.请解释聚集索引和非聚集索引
6.请列举MySQL支持哪些日志,分别描述其功能
7.请描述索引常用的优化思路以及SQL和索引常用的优化
8.请列举RDB中表设计遵循的范式,并做简要解释

三、应用题
在一个RDB中,有以下四张表的定义:

#学生表
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.查询平均成绩大于等于60分的同学的学生编号和学生姓名和平均成绩
2.查询“01”课程比“02”课程成绩高的学生的信息以及课程分数
3.查询每门课程被选修的学生数
4.查询每门课程的平均成绩,结果按平均成绩降序排列,平均成绩相同时,按课程编号升序排列
5.查询平均成绩大于等于85的所有学生的学号、姓名和平均成绩
6.查询课程名称为"数学",且分数低于60的学生姓名和分数
7.查询“01”课程学生考试成绩的最高分、最低分以及平均考试成绩
8.查询所有同学的学生编号、学生姓名、选课总数、所有课程的总成绩
9.查询"李"姓老师的数量
10.查询没学过"张三"老师授课的同学的信息
11.查询学过编号为"01"并且也学过编号为"02"的课程的同学的信息
12.查询学过编号为"01"但是没有学过编号为"02"的课程的同学的信息
13.查询没有学全所有课程的同学的信息
14.检索"01"课程分数小于60,按分数降序排列的学生信息
15.按平均成绩从高到低显示所有学生的所有课程的成绩以及平均成绩
16.查询不同老师所教不同课程平均分从高到低显示

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

我的sun&shine

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

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

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

打赏作者

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

抵扣说明:

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

余额充值