MySQL 考试试题及答案 - 数据库基础知识测试
MySQL 考试试题及答案
一、单选题(每题 1.5 分 共 52.5 分)
- Mysql 默认端口号是()
A. 80 B. 8080 C. 3306 D. 20
- 下列不属于 DML 数据操作语言的选项是()
A. 添加 B. 修改 C. 权限 D. 查询
- 下列选项中,非字符串类型的是()
A. CHAR B. VARCHAR C. INT D. TEXT
- DESC student; 该语法的作用是()
A. 查看 student 的表结构 B. 删除 student 表 C. 退出 student 表 D. 修改 student 表
- 下列选项中哪个不属于 MySQL 中的字段约束()
A. 主键约束 B. 唯一约束 C. 外键约束 D. 空约束
- 关于主键约束,下列描述不正确的是()
A. 主键的关键字是 primary key B. 主键必须使用数字类型 C. 设置了主键增加检索数据的速度
D. 主键值可以设置为自动增长
- 已有商品表(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
- 关于结果集排序,下列描述不正确的是( )
A. 使用 order by 子句对结果集按照某种顺序进行排序
B. order by 列名 ASC:表示对结果集进行升序排列
C. order by 列名 DESC:表示对结果集进行降序排列
D. order by 列名:表示对结果集进行降序排列
- 已有 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;
- 已有 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;
- 已有 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;
- 关于数据库的查询,下列描述不正确的是()
A. 使用 as 关键字可以给指定字段起别名
B. 使用 limit 关键字可以显示结果集
C. 使用 order by 关键字可以给结果集进行排序
D. 使用 distinct 关键字去除重复的记录
- 查询数据库中的第 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
- 已有 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;
- 关于逻辑运算符,下列描述不正确的是()
A. 表达式 NOT 表示非关系
B. 表达式 AND 表示与关系
C. 表达式 OR 表示或关系
D. 表达式 XOR 表示或关系
- 已有 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='女
- 关于聚合函数,下列描述不正确的是( )
A. AVG(列名):用于获得非空值的平均值
B. SUM(列名):用于求和,只能用于数字类型
C. MAX(列名):用于获得非空值的最大值
D. COUNT(列名):用于获得包含空值的记录数
- 已有 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;
- 关于分组,下列描述错误的是( )
A. 数据库支持多列分组条件,执行的时候逐级分组
B. group by 子句的作用是通过一定的规则将表中数据划分为若干个小的区域
C. group by 子句划分后,可以针对每个小区域进行数据汇总处理
D. 如果含有 group by 子句时,对 select 子句中的内容无任何限制
- 已有 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;
- 已有 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;
- 关于内连接的格式,下列格式错误的是()
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 连接条件;
- 已有 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;
- 已有表 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='食品工程系'));
- 已有表 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;
- 需求: 根据 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
- 关于 * 号的作用描述错误的是()
A. * 号可以用在 select 后面, 表示所有的列
B. 表名.* 号意思是这个表的所有的列
C. 表的别名.* 号意思是这个表的所有的列
D. 列名.* 号代表这一列所有的结果
- 查询数据中姓刘的人,下列语句正确的是()
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 ‘刘$’
- 下列选项中不是聚合函数的选项是()
A. COUNT
B. MAX
C. GROUP
D. AVG
- 关于 having 和 where 的用法,下列使用错误的是()
A. WHERE 和 HAVING 写在 GROUP BY 的前面
B. WHERE 不能写在 HAVING 的后面
C. WHERE 后面不能跟聚合函数
D. HAVING 是分组之后再进行筛选
- 下列选项中哪一个不是多表查询()
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
- 内连接语句中哪个关键字可以省略()
A. OUTER JOIN
B. IN
C. INNER
D. OUTER
- 查询数据库中的第 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
- 已经课程表 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;
- 已经学生表,统计男生中,哪些年龄的人数大于 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 分)
-
按照规范,数据库中的每张表都需要有主键( ) 是
-
mysql 中使用等号 = 判断一个字段是否为 null,而不是双等号 == ( ) 是
-
字符串类型的字段可以为空 null,整数类型的字段不能为空 null( ) 错误
-
主键字段无论是什么类型,都可以设置为自动递增( ) 错误
-
group by 分组 sql 中,select 查询的字段可以是分组字段以外的其他字段( ) 是
-
desc 可以设置排序为从小到大排序( ) 错误
-
limit 和 order by 连用时,limit 写在前面( ) 错误
-
where 需要写在 group by 之前,写在后面就报错( ) 错误
-
age in (16,20) 表示年龄范围在 16~20 之间的数据( ) 错误
-
mysql 中可以使用加号 + 进行字符串的拼接( ) 是
-
mysql 中通过 limit m,n 来实现分页,其中 n 表示的意思是第几页( ) 错误
-
在完成银行转账业务时,需要进行事务的控制 ,避免意外的发生( ) 是
-
mysql 中的事务默认是开启的( ) 错误
-
删除 user 表中所有数据的 sql 语句是 delete * from user( ) 错误
-
数据库中表与表之间的关系有一对一、一对多和多对多 ( ) 是
三、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);
- 从 student 表中查询每个院系有多少人
SELECT 院系, COUNT(*) AS 人数
FROM student
GROUP BY 院系;
- 从 score 表中查询每个科目的最高分
SELECT 科目, MAX(成绩) AS 最高分
FROM score
GROUP BY 科目;
- 查询李四的考试科目和考试成绩
SELECT s.科目, s.成绩
FROM score s
JOIN student st ON s.学号 = st.学号
WHERE st.姓名 = '李四';
- 查询所有学生的信息和考试信息
SELECT st.姓名, st.性别, st.院系, st.年龄, st.学号, s.科目, s.成绩
FROM student st
LEFT JOIN score s ON st.学号 = s.学号;
- 计算每个学生的总成绩
SELECT s.学号, SUM(s.成绩) AS 总成绩
FROM score s
GROUP BY s.学号;
- 计算每个考试科目的平均成绩
SELECT s.科目, AVG(s.成绩) AS 平均成绩
FROM score s
GROUP BY s.科目;
- 查询计算机成绩低于 95 的学生信息
SELECT st.姓名, st.性别, st.院系, st.年龄, st.学号, s.科目, s.成绩
FROM student st
JOIN score s ON st.学号 = s.学号
WHERE s.科目 = '计算机' AND s.成绩 < 95;
- 将计算机考试成绩按从高到低进行排序
SELECT st.姓名, st.性别, st.院系, st.年龄, st.学号, s.科目, s.成绩
FROM student st
JOIN score s ON st.学号 = s.学号
WHERE s.科目 = '计算机'
ORDER BY s.成绩 DESC;
- 查询姓张或姓王的学生的姓名、院系和考试科目及成绩
SELECT st.姓名, st.院系, s.科目, s.成绩
FROM student st
JOIN score s ON st.学号 = s.学号
WHERE st.姓名 LIKE '张%' OR st.姓名 LIKE '王%';
- 查询都是湖南的学生的姓名、年龄、院系和考试科目及成绩
SELECT st.姓名, st.年龄, st.院系, s.科目, s.成绩
FROM student st
JOIN score s ON st.学号 = s.学号
WHERE st.籍贯 = '湖南';
原文地址: https://www.cveoy.top/t/topic/ozxV 著作权归作者所有。请勿转载和采集!