内容正文:
专题五 SELECT语句(一)
一、单项选择题
1.在 MySQL 单表查询中,若要查询 students 表中 age 大于 20 且 gender 为 'Female' 的学生信息,正确的 SQL 语句是( )
A. SELECT * FROM students WHERE age > 20 OR gender = 'Female';
B. SELECT * FROM students WHERE age > 20 AND gender = 'Female';
C. SELECT * FROM students WHERE age > 20 NOT gender = 'Female';
D. SELECT * FROM students WHERE age > 20 XOR gender = 'Female';
2.要从 products 表中查询 price 列的最大值,以下 SQL 语句正确的是( )
A. SELECT MAX(price) FROM products;
B. SELECT MIN(price) FROM products;
C. SELECT AVG(price) FROM products;
D. SELECT SUM(price) FROM products;
3.在 customers 表中,要查询 email 列以 @gmail.com 结尾的客户信息,正确的 SQL 语句是( )
A. SELECT * FROM customers WHERE email LIKE '%@gmail.com';
B. SELECT * FROM customers WHERE email LIKE '@gmail.com%';
C. SELECT * FROM customers WHERE email LIKE '%@gmail.com%';
D. SELECT * FROM customers WHERE email = '@gmail.com';
4.从 orders 表中查询 order_date 为 2024 年 1 月 1 日的订单信息,正确的 SQL 语句是( )
A. SELECT * FROM orders WHERE order_date = '2024-01-01';
B. SELECT * FROM orders WHERE order_date = 2024-01-01;
C. SELECT * FROM orders WHERE order_date LIKE '2024-01-01';
D. SELECT * FROM orders WHERE order_date BETWEEN '2024-01-01' AND '2024-01-01';
5.要查询 books 表中 title 列包含 'SQL' 字样的书籍信息,以下 SQL 语句正确的是( )
A. SELECT * FROM books WHERE title LIKE '%SQL%';
B. SELECT * FROM books WHERE title LIKE 'SQL%';
C. SELECT * FROM books WHERE title LIKE '%SQL';
D. SELECT * FROM books WHERE title = 'SQL';
6.在 employees 表中,查询 department 列值为 'HR' 或 'Finance' 的员工信息,正确的 SQL 语句是( )
A. SELECT * FROM employees WHERE department = 'HR' AND department = 'Finance';
B. SELECT * FROM employees WHERE department IN ('HR', 'Finance');
C. SELECT * FROM employees WHERE department BETWEEN 'HR' AND 'Finance';
D. SELECT * FROM employees WHERE department LIKE 'HR' OR department LIKE 'Finance';
7.从 products 表中查询 quantity 列值为 NULL 的产品信息,正确的 SQL 语句是( )
A. SELECT * FROM products WHERE quantity = NULL;
B. SELECT * FROM products WHERE quantity IS NULL;
C. SELECT * FROM products WHERE quantity NOT NULL;
D. SELECT * FROM products WHERE quantity LIKE NULL;
8.在 customers 表中,查询 country 列值为 'USA' 且 city 列值为 'New York' 的客户信息,以下 SQL 语句正确的是( )
A. SELECT * FROM customers WHERE country = 'USA' OR city = 'New York';
B. SELECT * FROM customers WHERE country = 'USA' AND city = 'New York';
C. SELECT * FROM customers WHERE country LIKE 'USA' OR city LIKE 'New York';
D. SELECT * FROM customers WHERE country IN ('USA') AND city IN ('New York');
9.从 orders 表中查询 order_id 列的最小值,正确的 SQL 语句是( )
A. SELECT MAX(order_id) FROM orders;
B. SELECT MIN(order_id) FROM orders;
C. SELECT AVG(order_id) FROM orders;
D. SELECT SUM(order_id) FROM orders;
10.在 employees 表中,查询 hire_date 列值在 2023 年之后(不包括 2023 年)的员工信息,正确的 SQL 语句是( )
A. SELECT * FROM employees WHERE hire_date > '2023-12-31';
B. SELECT * FROM employees WHERE hire_date >= '2023-01-01';
C. SELECT * FROM employees WHERE hire_date BETWEEN '2023-01-01' AND '2024-01-01';
D. SELECT * FROM employees WHERE hire_date LIKE '2024-%';
二、填空题
1.在 MySQL 单表查询中,若要查询某列的平均值,需要使用的函数是 ____________。
2.要查询 students 表中 name 列以 'John' 开头的学生信息,应使用 ____________关键字。
3.若要查询 products 表中 price 列值大于 100 且小于 200 的产品信息,SQL 语句中 WHERE 子句的条件应该是 ____________。
4.在单表查询中,使用 ____________ 关键字可以去除查询结果中的重复记录。
5.要查询 employees 表中 department 列值为 'IT' 的员工数量,SQL 语句应该是 SELECT ____________ FROM employees WHERE department = 'IT';
三、判断题
1.在 MySQL 单表查询中,LIKE 操作符只能用于字符串类型的列。( )
2.使用 SUM() 函数可以对非数值类型的列进行求和操作。( )
3.若要查询 customers 表中 email 列值为 NULL 的客户信息,可以使用 WHERE email = NULL。( )
4.SELECT * FROM products WHERE price BETWEEN 50 AND 100; 会查询出 price 列值为 50 和 100 的记录。( )
5.在单表查询中,ORDER BY 子句只能按照升序对查询结果进行排序。( )
6.使用 COUNT() 函数统计记录数量时,COUNT(*) 和 COUNT(column_name) 的结果一定相同。( )
7.若要查询 students 表中 age 列值大于 25 的学生信息,WHERE 子句可以写成 WHERE age > '25'。( )
8.在单表查询中,HAVING 子句可以替代 WHERE 子句进行条件筛选。( )
9.SELECT DISTINCT name, age FROM students; 会去除 name 列和 age 列组合的重复记录。( )
10.在单表查询中,LIMIT 子句只能放在查询语句的最后。( )
四、命令题
1.在 employees 表中,查询部门(department)为 'Sales' 且工资大于 5000 的员工的姓名(name)、工资(salary)和入职日期(hire_date),并按照入职日期从早到晚排序。
2.在 books 表中,查询书名包含 'Database' 且出版年份在 2020 年之后(含 2020 年)的书籍的书名(book_title)、作者(author)和出版年份(publication_year),并按照出版年份从晚到早排序。
学科网(北京)股份有限公司
$$
专题五 SELECT语句(一)
一、单项选择题
1.在 MySQL 单表查询中,若要查询 students 表中 age 大于 20 且 gender 为 'Female' 的学生信息,正确的 SQL 语句是( )
A. SELECT * FROM students WHERE age > 20 OR gender = 'Female';
B. SELECT * FROM students WHERE age > 20 AND gender = 'Female';
C. SELECT * FROM students WHERE age > 20 NOT gender = 'Female';
D. SELECT * FROM students WHERE age > 20 XOR gender = 'Female';
答案:B
解析:题目要求查询 age 大于 20 并且 gender 为 'Female' 的学生信息,需要使用 AND 逻辑运算符来连接两个条件。选项 A 使用 OR,表示满足其中一个条件即可;选项 C 语法错误;选项 D 的 XOR 是异或运算符,不符合需求。
2.要从 products 表中查询 price 列的最大值,以下 SQL 语句正确的是( )
A. SELECT MAX(price) FROM products;
B. SELECT MIN(price) FROM products;
C. SELECT AVG(price) FROM products;
D. SELECT SUM(price) FROM products;
答案:A
解析:MAX() 函数用于返回指定列中的最大值,所以要查询 price 列的最大值应使用 SELECT MAX(price) FROM products;。选项 B 的 MIN() 函数返回最小值;选项 C 的 AVG() 函数返回平均值;选项 D 的 SUM() 函数返回总和。
3.在 customers 表中,要查询 email 列以 @gmail.com 结尾的客户信息,正确的 SQL 语句是( )
A. SELECT * FROM customers WHERE email LIKE '%@gmail.com';
B. SELECT * FROM customers WHERE email LIKE '@gmail.com%';
C. SELECT * FROM customers WHERE email LIKE '%@gmail.com%';
D. SELECT * FROM customers WHERE email = '@gmail.com';
答案:A
解析:LIKE 操作符用于在 WHERE 子句中搜索列中的指定模式,% 是通配符,表示零个、一个或多个字符。要查询以 @gmail.com 结尾的 email,应使用 '%@gmail.com'。选项 B 表示以 @gmail.com 开头;选项 C 表示包含 @gmail.com;选项 D 是精确匹配 @gmail.com。
4.从 orders 表中查询 order_date 为 2024 年 1 月 1 日的订单信息,正确的 SQL 语句是( )
A. SELECT * FROM orders WHERE order_date = '2024-01-01';
B. SELECT * FROM orders WHERE order_date = 2024-01-01;
C. SELECT * FROM orders WHERE order_date LIKE '2024-01-01';
D. SELECT * FROM orders WHERE order_date BETWEEN '2024-01-01' AND '2024-01-01';
答案:A
解析:日期类型的值在 SQL 中通常用单引号括起来,所以选项 A 正确。选项 B 没有使用单引号,会被当作数学运算;选项 C 的 LIKE 一般用于模糊查询,这里精确匹配用 = 更合适;选项 D 使用 BETWEEN 虽然逻辑上可行,但过于复杂,精确匹配用 = 即可。
5.要查询 books 表中 title 列包含 'SQL' 字样的书籍信息,以下 SQL 语句正确的是( )
A. SELECT * FROM books WHERE title LIKE '%SQL%';
B. SELECT * FROM books WHERE title LIKE 'SQL%';
C. SELECT * FROM books WHERE title LIKE '%SQL';
D. SELECT * FROM books WHERE title = 'SQL';
答案:A
解析:要查询包含 'SQL' 字样的 title,需要在 'SQL' 前后都使用 % 通配符,即 '%SQL%'。选项 B 表示以 'SQL' 开头;选项 C 表示以 'SQL' 结尾;选项 D 是精确匹配 'SQL'。
6.在 employees 表中,查询 department 列值为 'HR' 或 'Finance' 的员工信息,正确的 SQL 语句是( )
A. SELECT * FROM employees WHERE department = 'HR' AND department = 'Finance';
B. SELECT * FROM employees WHERE department IN ('HR', 'Finance');
C. SELECT * FROM employees WHERE department BETWEEN 'HR' AND 'Finance';
D. SELECT * FROM employees WHERE department LIKE 'HR' OR department LIKE 'Finance';
答案:B
解析:IN 操作符用于判断某个值是否在指定的列表中,所以查询 department 为 'HR' 或 'Finance' 的员工信息使用 IN 操作符最合适。选项 A 的 AND 要求 department 同时为 'HR' 和 'Finance',这是不可能的;选项 C 的 BETWEEN 用于范围查询,不适合这种情况;选项 D 使用 LIKE 虽然能实现,但不如 IN 简洁。
7.从 products 表中查询 quantity 列值为 NULL 的产品信息,正确的 SQL 语句是( )
A. SELECT * FROM products WHERE quantity = NULL;
B. SELECT * FROM products WHERE quantity IS NULL;
C. SELECT * FROM products WHERE quantity NOT NULL;
D. SELECT * FROM products WHERE quantity LIKE NULL;
答案:B
解析:在 SQL 中,判断一个值是否为 NULL 要用 IS NULL,而不能用 =。选项 A 语法错误;选项 C 查询的是 quantity 不为 NULL 的记录;选项 D 的 LIKE 用于模糊查询,不能用于判断 NULL。
8.在 customers 表中,查询 country 列值为 'USA' 且 city 列值为 'New York' 的客户信息,以下 SQL 语句正确的是( )
A. SELECT * FROM customers WHERE country = 'USA' OR city = 'New York';
B. SELECT * FROM customers WHERE country = 'USA' AND city = 'New York';
C. SELECT * FROM customers WHERE country LIKE 'USA' OR city LIKE 'New York';
D. SELECT * FROM customers WHERE country IN ('USA') AND city IN ('New York');
答案:B
解析:题目要求同时满足 country 为 'USA' 且 city 为 'New York',需要使用 AND 逻辑运算符,所以选项 B 正确。选项 A 使用 OR,表示满足其中一个条件即可;选项 C 使用 LIKE 进行模糊查询,这里精确匹配用 = 更合适;选项 D 使用 IN 虽然逻辑上可行,但对于单个值的匹配,直接用 = 更简洁。
9.从 orders 表中查询 order_id 列的最小值,正确的 SQL 语句是( )
A. SELECT MAX(order_id) FROM orders;
B. SELECT MIN(order_id) FROM orders;
C. SELECT AVG(order_id) FROM orders;
D. SELECT SUM(order_id) FROM orders;
答案:B
解析:MIN() 函数用于返回指定列中的最小值,所以查询 order_id 列的最小值应使用 SELECT MIN(order_id) FROM orders;。选项 A 的 MAX() 函数返回最大值;选项 C 的 AVG() 函数返回平均值;选项 D 的 SUM() 函数返回总和。
10.在 employees 表中,查询 hire_date 列值在 2023 年之后(不包括 2023 年)的员工信息,正确的 SQL 语句是( )
A. SELECT * FROM employees WHERE hire_date > '2023-12-31';
B. SELECT * FROM employees WHERE hire_date >= '2023-01-01';
C. SELECT * FROM employees WHERE hire_date BETWEEN '2023-01-01' AND '2024-01-01';
D. SELECT * FROM employees WHERE hire_date LIKE '2024-%';
答案:A
解析:要查询 2023 年之后(不包括 2023 年)的 hire_date,即大于 2023 年 12 月 31 日,所以选项 A 正确。选项 B 包含了 2023 年的日期;选项 C 的 BETWEEN 范围包含了 2023 年;选项 D 使用 LIKE 虽然能筛选出 2024 年的部分日期,但不如 > 精确。
二、填空题
1.在 MySQL 单表查询中,若要查询某列的平均值,需要使用的函数是 ____________。
答案:AVG()
2.要查询 students 表中 name 列以 'John' 开头的学生信息,应使用 ____________关键字。
答案:LIKE
3.若要查询 products 表中 price 列值大于 100 且小于 200 的产品信息,SQL 语句中 WHERE 子句的条件应该是 ____________。
答案:price > 100 AND price < 200
4.在单表查询中,使用 ____________ 关键字可以去除查询结果中的重复记录。
答案:DISTINCT
5.要查询 employees 表中 department 列值为 'IT' 的员工数量,SQL 语句应该是 SELECT ____________ FROM employees WHERE department = 'IT';
答案:COUNT(*)
三、判断题
1.在 MySQL 单表查询中,LIKE 操作符只能用于字符串类型的列。( )
答案:正确
解析:LIKE 操作符用于在 WHERE 子句中搜索列中的指定模式,主要用于字符串类型的列进行模糊查询。
2.使用 SUM() 函数可以对非数值类型的列进行求和操作。( )
答案:错误
解析:SUM() 函数只能对数值类型的列进行求和操作,对非数值类型列使用会出错。
3.若要查询 customers 表中 email 列值为 NULL 的客户信息,可以使用 WHERE email = NULL。( )
答案:错误
解析:在 SQL 中,判断一个值是否为 NULL 要用 IS NULL,而不能用 =。
4.SELECT * FROM products WHERE price BETWEEN 50 AND 100; 会查询出 price 列值为 50 和 100 的记录。( )
答案:正确
解析:BETWEEN 操作符选取介于两个值之间的数据范围,包括边界值,所以会查询出 price 为 50 和 100 的记录。
5.在单表查询中,ORDER BY 子句只能按照升序对查询结果进行排序。( )
答案:错误
解析:ORDER BY 子句可以使用 ASC(升序,默认)或 DESC(降序)对查询结果进行排序。
6.使用 COUNT() 函数统计记录数量时,COUNT(*) 和 COUNT(column_name) 的结果一定相同。( )
答案:错误
解析:COUNT(*) 统计所有记录的数量,而 COUNT(column_name) 统计指定列非 NULL 值的记录数量,当指定列存在 NULL 值时,两者结果不同。
7.若要查询 students 表中 age 列值大于 25 的学生信息,WHERE 子句可以写成 WHERE age > '25'。( )
答案:错误
解析:如果 age 列是数值类型,比较时不需要使用单引号,应写成 WHERE age > 25。
8.在单表查询中,HAVING 子句可以替代 WHERE 子句进行条件筛选。( )
答案:错误
解析:WHERE 子句用于在分组之前筛选行,HAVING 子句用于在分组之后筛选组,两者不能相互替代。
9.SELECT DISTINCT name, age FROM students; 会去除 name 列和 age 列组合的重复记录。( )
答案:正确
解析:DISTINCT 关键字会对 SELECT 后面指定的所有列组合进行去重,所以会去除 name 列和 age 列组合的重复记录。
10.在单表查询中,LIMIT 子句只能放在查询语句的最后。( )
答案:正确
解析:LIMIT 子句用于限制查询结果的行数,通常放在查询语句的最后执行。
四、命令题
1.在 employees 表中,查询部门(department)为 'Sales' 且工资大于 5000 的员工的姓名(name)、工资(salary)和入职日期(hire_date),并按照入职日期从早到晚排序。
答案
SELECT name, salary, hire_date
FROM employees
WHERE department = 'Sales' AND salary > 5000
ORDER BY hire_date ASC;
2.在 books 表中,查询书名包含 'Database' 且出版年份在 2020 年之后(含 2020 年)的书籍的书名(book_title)、作者(author)和出版年份(publication_year),并按照出版年份从晚到早排序。
答案
SELECT book_title, author, publication_year
FROM books
WHERE book_title LIKE '%Database%' AND publication_year >= 2020
ORDER BY publication_year DESC;
学科网(北京)股份有限公司
$$