MySQL 考试试题及答案

一、单选题(每题 1.5 分 共 52.5 分)

  1. Mysql 默认端口号是()

A. 80 B. 8080 C. 3306 D. 20

  1. 下列不属于 DML 数据操作语言的选项是()

A. 添加 B. 修改 C. 权限 D. 查询

  1. 下列选项中,非字符串类型的是()

A. CHAR B. VARCHAR C. INT D. TEXT

  1. DESC student; 该语法的作用是()

A. 查看 student 的表结构 B. 删除 student 表 C. 退出 student 表 D. 修改 student 表

  1. 下列选项中哪个不属于 MySQL 中的字段约束()

A. 主键约束 B. 唯一约束 C. 外键约束 D. 空约束

  1. 关于主键约束,下列描述不正确的是()

A. 主键的关键字是 primary key B. 主键必须使用数字类型 C. 设置了主键增加检索数据的速度

D. 主键值可以设置为自动增长

  1. 已有商品表(goods),表中有商品编号(goods_number),单价(price),数量(num)三个字段,查询商品编号及商品总价(total_price), 红色方框内补全代码,使得代码完整()
SELECT goods_number, price * num AS total_price
FROM goods;

A. is B. as C. on D. in

  1. 关于结果集排序,下列描述不正确的是( )

A. 使用 order by 子句对结果集按照某种顺序进行排序

B. order by 列名 ASC:表示对结果集进行升序排列

C. order by 列名 DESC:表示对结果集进行降序排列

D. order by 列名:表示对结果集进行降序排列

  1. 已有 student 表如下图所示,查询学生缴纳的学费(tuition)金额,按学费从大到小排序,下列选项正确的是()
SELECT name, tuition
FROM student
ORDER BY tuition DESC;

A. select name,tuition from student ORDER BY tuition;

B. select name,tuition from student ORDER BY tuition desc;

C. select name tuition from student ORDER BY tuition DESC;

D. select name,tuition from student ORDER BY tuition ASC;

  1. 已有 student 表如下图所示,查询表中的学生姓名(name),入学日期(enr ollment_date),缴纳的学费(tuition)金额,按学费和入学日期依次从小到大排序,下列选项正确的是()
SELECT name, enrollment_date, tuition
FROM student
ORDER BY tuition ASC, enrollment_date ASC;

A. select name,tuition from student ORDER BY tuition;

B. select name,tuition from student ORDER BY tuition desc;

C. select name tuition from student ORDER BY tuition DESC;

D. select name,tuition from student ORDER BY tuition ASC;

  1. 已有 student 表如下图所示,查询缴纳学费(tuition)的金额(不重复),下列选项正确的是()
SELECT DISTINCT tuition
FROM student;

A. select DISTINT tuition from student;

B. select DISTINCT tuition from student;

C. select DISTINCT ,tuition from student;

D. select tuition from student;

  1. 关于数据库的查询,下列描述不正确的是()

A. 使用 as 关键字可以给指定字段起别名

B. 使用 limit 关键字可以显示结果集

C. 使用 order by 关键字可以给结果集进行排序

D. 使用 distinct 关键字去除重复的记录

  1. 查询数据库中的第 3 条到第 5 条数据,下列选项中正确的是( )
SELECT * FROM USERS LIMIT 2,3;

A. SELECT * FROM USERS LIMIT 2,5

B. SELECT * FROM USERS LIMIT 3,6

C. SELECT * FROM USERS LIMIT 2,3

D. SELECT * FROM USERS LIMIT 3,3

  1. 已有 student 表如下图所示,查询总学费在 4000 至 4500 的学生信息(包含 4000,4500),下列选项正确的是()
SELECT * FROM student
WHERE tuition + IFNULL(dorm_money, 0) BETWEEN 4000 AND 4500;

A. SELECT * from student where tuition+IFNULL(dorm_money,0)>=4000 AND tuition+IFNULL(dorm_money,0)<4500;

B. SELECT * from student where tuition+IFNULL(dorm_money,0) BETWEN 4000 OR 4500;

C. SELECT * from student where tuition+IFNULL(dorm_money,0)>4000 AND tuition+IFNULL(dorm_money,0)<4500;

D. SELECT * from student where tuition+IFNULL(dorm_money,0) BETWEEN 4000 AND 4500;

  1. 关于逻辑运算符,下列描述不正确的是()

A. 表达式 NOT 表示非关系

B. 表达式 AND 表示与关系

C. 表达式 OR 表示或关系

D. 表达式 XOR 表示或关系

  1. 已有 student 表如下图所示,查询性别为女且姓名以赵或王开头的学生信息,下列选项正确的是()
SELECT * FROM student
WHERE (name LIKE '赵%' OR name LIKE '王%') AND sex = '女';

A. select * from student WHERE name like'赵%'or name like '王%' and sex='女';

B. select * from student WHERE (name like'赵%'or name like '王%') and sex='女';

C. select * from student WHERE name like'赵%'and name like '王%';

D. select * from student WHERE name like'赵%' and name like '王%' and sex='女

  1. 关于聚合函数,下列描述不正确的是( )

A. AVG(列名):用于获得非空值的平均值

B. SUM(列名):用于求和,只能用于数字类型

C. MAX(列名):用于获得非空值的最大值

D. COUNT(列名):用于获得包含空值的记录数

  1. 已有 student 表如下图所示,统计已缴纳宿舍费(dorm_money)的人数,下列选项正确的是()
SELECT COUNT(dorm_money)
FROM student
WHERE dorm_money IS NOT NULL;

A. select SUM(dorm_money) from student;

B. select COUNT(dorm_money) from student;

C. select COUNT(tuition) from student;

D. select SUM(tuition) from student;

  1. 关于分组,下列描述错误的是( )

A. 数据库支持多列分组条件,执行的时候逐级分组

B. group by 子句的作用是通过一定的规则将表中数据划分为若干个小的区域

C. group by 子句划分后,可以针对每个小区域进行数据汇总处理

D. 如果含有 group by 子句时,对 select 子句中的内容无任何限制

  1. 已有 student 表,如下图所示,查询各个系,每种职位的人员数量和最高奖学金金额,并按系别排序,下列选项实现该功能的是()
SELECT department, job, COUNT(*), MAX(scholarship)
FROM student
GROUP BY department, job
ORDER BY department;

A. SELECT department,job,COUNT(*),min(scholarship) from student GROUP BY department,job ORDER BY department;

B. SELECT department,job,COUNT(*),max(scholarship) from student GROUP BY department,job ORDER BY department;

C. SELECT department,job,COUNT(*),avg(scholarship) from student GROUP BY department,job ORDER BY department;

D. SELECT department,job,COUNT(*),max(scholarship) from student GROUP BY department ORDER BY department;

  1. 已有 student 表,如下图所示,查询各个系 2017 年以后入学的且超过 2 个人(包含 2 个人)的系别,下列选项实现该功能的是()
SELECT department
FROM student
WHERE enrollment_date > '2017-01-01'
GROUP BY department
HAVING COUNT(*) >= 2;

A. select department from student where enrollment_date >'2017-1-1' group by department HAVING COUNT(*)>=2;

B. select department from student group by department HAVING COUNT(*)>=2;

C. select department from student where enrollment_date >'2017-1-1' group by department HAVING COUNT(*)>2;

D. select department from students where enrollment_date >'2017-1-1' group by department HAVING COUNT(*)>=2;

  1. 关于内连接的格式,下列格式错误的是()
SELECT ..........FROM 表1 ,表2  ON 连接条件; 

A. SELECT ..........FROM 表1 ,表2 ON 连接条件;

B. SELECT ..........FROM 表1 JOIN 表2 ON 连接条件;

C. SELECT ..........FROM 表1 ,表2 WHERE 连接条件;

D. SELECT ..........FROM 表1 JOIN 表2 WHERE 连接条件;

  1. 已有 student 表,如下图所示,查询奖学金超过学校平均奖学金的学生姓名,电话,奖学金金额,下列选项实现该功能的是()
SELECT stu1.name, stu1.tel, stu1.scholarship
FROM student stu1
JOIN (SELECT AVG(scholarship) AS avg FROM student) stu2
ON stu1.scholarship > stu2.avg;

A. select stu1.name,stu1.tel,stu1.scholarship from student stu1 join (select avg(scholarship) avg from student stu2) on stu1.scholarship>stu2.avg;

B. select stu1.name,stu1.tel,stu1.scholarship from student stu1 join (select avg(scholarship) avg from student) stu2 on stu1.scholarship>stu2.avg;

C. select stu1.name,stu1.tel,stu1.scholarship from student stu1 , (select avg(scholarship) avg from student) stu2 on stu1.scholarship>stu2.avg;

D. select stu1.name stu1.tel,stu1.scholarship from student stu1 join (select avg(scholarship) avg from student) stu2 on stu1.scholarship>stu2.avg;

  1. 已有表 tb_stu 和 tb_dept 的部分数据,如下图所示,向食品工程系添加一条姓名赵菲菲,性别女,入学时间 2018-9-23,手机号为 18796563265 的学生记录,下列选项实现该功能的是()
INSERT INTO tb_stu(name, sex, enrollment_date, tel, deptno, scholarship)
VALUES ('赵菲菲', '女', '2018-09-23', 18796563265, (SELECT deptno FROM tb_dept WHERE dname = '食品工程系'), NULL);

A. insert into tb_stu(name,sex,enrollment_date,tel,deptno,scholarship) values ('赵菲菲','女','2018-9-23',18796563265,(select deptno from tb_dept where dname='食品工程系'));

B. insert into tb_stu(name,sex,enrollment_date,tel,deptno) values('赵菲菲','女','2018-9-23',18796563265,'食品工程系');

C. insert into tb_stu(name,sex,enrollment_date,tel,deptno) values(赵菲菲,'女','2018-9-23',18796563265,(select deptno from tb_dept where dname='食品工程系'));

D. insert into tb_stu(name,sex,enrollment_date,tel,deptno) values('赵菲菲','女','2018-9-23',18796563265,(select deptno from tb_dept where dname='食品工程系'));

  1. 已有表 tb_stu 的部分数据,如下图所示,把奖学金前三名的金额减 300 元,下列选项实现该功能的是()
UPDATE tb_stu
SET scholarship = scholarship - 300
WHERE scholarship IS NOT NULL
ORDER BY scholarship DESC
LIMIT 3;

A. update tb_stu set scholarship=scholarship-300 order by scholarship desc LIMIT 3;

B. update tb_stu set scholarship=scholarship-300 order by scholarship LIMIT 3;

C. update scholarship=scholarship-300 set tb_stu order by scholarship desc LIMIT 3;

D. update tb_stu set scholarship=scholarship-300 order by scholarship desc LIMIT 0,3;

  1. 需求: 根据 id 条件删除一条记录, 下列哪条语句是对的()
DELETE FROM t_user WHERE id = 1;

A. delete * from t_user where id = 1

B. delete from t_user where id = 1

C. truncate t_user where id = 1

D. drop t_user where id = 1

  1. 关于 * 号的作用描述错误的是()

A. * 号可以用在 select 后面, 表示所有的列

B. 表名.* 号意思是这个表的所有的列

C. 表的别名.* 号意思是这个表的所有的列

D. 列名.* 号代表这一列所有的结果

  1. 查询数据中姓刘的人,下列语句正确的是()
SELECT * FROM USERS WHERE NAME LIKE '刘%';

A. SELECT * FROM USERS WHERE NAME LIKE ‘%刘%’

B. SELECT * FROM USERS WHERE NAME LIKE ‘刘%’

C. SELECT * FROM USERS WHERE NAME LIKE ‘%刘’

D. SELECT * FROM USERS WHERE NAME LIKE ‘刘$’

  1. 下列选项中不是聚合函数的选项是()

A. COUNT

B. MAX

C. GROUP

D. AVG

  1. 关于 having 和 where 的用法,下列使用错误的是()

A. WHERE 和 HAVING 写在 GROUP BY 的前面

B. WHERE 不能写在 HAVING 的后面

C. WHERE 后面不能跟聚合函数

D. HAVING 是分组之后再进行筛选

  1. 下列选项中哪一个不是多表查询()
SELECT EMP.* FROM DEPT EMP;

A. SELECT * FROM DEPT,EMP

B. SELECT * FROM DEPT,EMP WHERE DEPT.ID = EMP.DEPTID

C. SELECT EMP.* FROM DEPT EMP

D. SELECT EMP.* FROM DEPT LEFT OUTER JOIN EMP WHERE DEPT.ID = EMP.DEPTID

  1. 内连接语句中哪个关键字可以省略()

A. OUTER JOIN

B. IN

C. INNER

D. OUTER

  1. 查询数据库中的第 3 条到第 6 条数据,下列选项中正确的是()
SELECT * FROM USERS LIMIT 2,4;

A. SELECT * FROM USERS LIMIT 2,5

B. SELECT * FROM USERS LIMIT 3,6

C. SELECT * FROM USERS LIMIT 2,4

D. SELECT * FROM USERS LIMIT 3,3

  1. 已经课程表 kc 查询每学期开设的课程数量和总学分 id(编号) name(课程名称) xf(学分) xq(学期)
SELECT xq, COUNT(name), SUM(xf)
FROM kc
GROUP BY xq;

A. select xq,count(name),sum(xf) from kc group by xq;

B. select xq,count(name),sum(xf) from kc group by name;

C. select xq,sum(name),sum(xf) from kc group by name;

D. select xq,sum(name),count(xf) from kc group by xq;

  1. 已经学生表,统计男生中,哪些年龄的人数大于 10( )
SELECT age, COUNT(*)
FROM stu
WHERE sex = '男'
GROUP BY age
HAVING COUNT(*) > 10;

A. select age,count(*) from stu where sex='男' and age>10;

B. select age,count() from stu where sex='男' and count()>10 group by age;

C. select age,count() from stu where sex='男' group by age having count()>10;

D. select age,count(*) from stu where sex='男' and age>10 group by age;

二、判断题(每题 1.5 分 共 22.5 分)

  1. 按照规范,数据库中的每张表都需要有主键( )

  2. mysql 中使用等号 = 判断一个字段是否为 null,而不是双等号 == ( )

  3. 字符串类型的字段可以为空 null,整数类型的字段不能为空 null( ) 错误

  4. 主键字段无论是什么类型,都可以设置为自动递增( ) 错误

  5. group by 分组 sql 中,select 查询的字段可以是分组字段以外的其他字段( )

  6. desc 可以设置排序为从小到大排序( ) 错误

  7. limit 和 order by 连用时,limit 写在前面( ) 错误

  8. where 需要写在 group by 之前,写在后面就报错( ) 错误

  9. age in (16,20) 表示年龄范围在 16~20 之间的数据( ) 错误

  10. mysql 中可以使用加号 + 进行字符串的拼接( )

  11. mysql 中通过 limit m,n 来实现分页,其中 n 表示的意思是第几页( ) 错误

  12. 在完成银行转账业务时,需要进行事务的控制 ,避免意外的发生( )

  13. mysql 中的事务默认是开启的( ) 错误

  14. 删除 user 表中所有数据的 sql 语句是 delete * from user( ) 错误

  15. 数据库中表与表之间的关系有一对一、一对多和多对多 ( )

三、sql 题(每题 2.5 分 共 25 分)

学生表:

| 姓名 | 性别 | 院系 | 年龄 | 学号 | |---|---|---|---|---| | 张三 | 男 | 计算机系 | 20 | 202001 | | 李四 | 男 | 软件工程系 | 19 | 202002 | | 王五 | 女 | 计算机系 | 21 | 202003 | | 赵六 | 男 | 软件工程系 | 22 | 202004 | | 孙七 | 女 | 计算机系 | 20 | 202005 |

成绩表:

| 学号 | 科目 | 成绩 | |---|---|---| | 202001 | 计算机 | 90 | | 202001 | 数学 | 85 | | 202002 | 计算机 | 95 | | 202002 | 数学 | 90 | | 202003 | 计算机 | 80 | | 202003 | 数学 | 88 | | 202004 | 计算机 | 92 | | 202004 | 数学 | 98 | | 202005 | 计算机 | 96 | | 202005 | 数学 | 92 |

向两个表中插入数据:

INSERT INTO student (姓名, 性别, 院系, 年龄, 学号) VALUES ('刘八', '男', '计算机系', 21, 202006);
INSERT INTO score (学号, 科目, 成绩) VALUES (202006, '计算机', 98);
  1. 从 student 表中查询每个院系有多少人
SELECT 院系, COUNT(*) AS 人数
FROM student
GROUP BY 院系;
  1. 从 score 表中查询每个科目的最高分
SELECT 科目, MAX(成绩) AS 最高分
FROM score
GROUP BY 科目;
  1. 查询李四的考试科目和考试成绩
SELECT s.科目, s.成绩
FROM score s
JOIN student st ON s.学号 = st.学号
WHERE st.姓名 = '李四';
  1. 查询所有学生的信息和考试信息
SELECT st.姓名, st.性别, st.院系, st.年龄, st.学号, s.科目, s.成绩
FROM student st
LEFT JOIN score s ON st.学号 = s.学号;
  1. 计算每个学生的总成绩
SELECT s.学号, SUM(s.成绩) AS 总成绩
FROM score s
GROUP BY s.学号;
  1. 计算每个考试科目的平均成绩
SELECT s.科目, AVG(s.成绩) AS 平均成绩
FROM score s
GROUP BY s.科目;
  1. 查询计算机成绩低于 95 的学生信息
SELECT st.姓名, st.性别, st.院系, st.年龄, st.学号, s.科目, s.成绩
FROM student st
JOIN score s ON st.学号 = s.学号
WHERE s.科目 = '计算机' AND s.成绩 < 95;
  1. 将计算机考试成绩按从高到低进行排序
SELECT st.姓名, st.性别, st.院系, st.年龄, st.学号, s.科目, s.成绩
FROM student st
JOIN score s ON st.学号 = s.学号
WHERE s.科目 = '计算机'
ORDER BY s.成绩 DESC;
  1. 查询姓张或姓王的学生的姓名、院系和考试科目及成绩
SELECT st.姓名, st.院系, s.科目, s.成绩
FROM student st
JOIN score s ON st.学号 = s.学号
WHERE st.姓名 LIKE '张%' OR st.姓名 LIKE '王%';
  1. 查询都是湖南的学生的姓名、年龄、院系和考试科目及成绩
SELECT st.姓名, st.年龄, st.院系, s.科目, s.成绩
FROM student st
JOIN score s ON st.学号 = s.学号
WHERE st.籍贯 = '湖南';
MySQL 考试试题及答案 - 数据库基础知识测试

原文地址: https://www.cveoy.top/t/topic/ozxV 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录