检索数据

2021-12-21 MySQL SQL 必知必会

本文讲解如何使用 SELECT 语句从表中检索一个或多个数据列。

# 一、检索单个列

SELECT prod_name
FROM Products;
1
2

# 二、检索多个列

SELECT prod_id, prod_name, prod_price
FROM Products;
1
2

# 三、检索所有列

SELECT *
FROM Products;
1
2

注意

除非确实需要表中的每一列,否则最好别使用 * 通配符。检索不需要的列通常会降低检索速度和应用程序的性能。

# 四、检索不同的值

SELECT DISTINCT vend_id
FROM Products;
1
2

注意

不能部分使用 DISTINCTDISTINCT 关键字作用于所有的列,不仅仅是跟在其后的那一列。

# 五、限制结果

SELECT prod_name
FROM Products
LIMIT 5;
1
2
3
SELECT prod_name
FROM Products
LIMIT 5 OFFSET 5;
1
2
3

注意

LIMIT 4 OFFSET 3 语句可以简化为 LIMIT 3,4

使用这个语法,逗号之前的值对应 OFFSET,逗号之后的值对应 LIMIT(反着的,要小心)。

# 六、使用注释

SELECT prod_name    -- 这是一条注释
FROM Products;
1
2
# 这是一条注释
SELECT prod_name
FROM Products;
1
2
3
/* SELECT prod_name, vend_id
FROM Products; */
SELECT prod_name
FROM Products;
1
2
3
4

# 七、小结

本文讲解了如何使用 MySQL 的 SELECT 语句来检索单个表列、多个表列以及所有表列,以及如何返回不同的值,如何注释代码。

# 八、挑战题

# 8.1 从 Customers 表中检索所有的 ID

描述

现有表 Customers 如下:

cust_id
A
B
C

问题

编写 SQL 语句,从 Customers 表中检索所有的 cust_id。

示例

DROP TABLE IF EXISTS `Customers`;
CREATE TABLE IF NOT EXISTS `Customers`(
    cust_id VARCHAR(255) DEFAULT NULL
);
INSERT `Customers` VALUES ('A'),('B'),('C');
1
2
3
4
5

解答

SELECT cust_id
FROM Customers;
1
2

# 8.2 检索并列出已订购产品的清单

描述

表 OrderItems 含有非空的列 prod_id 代表商品 id,包含了所有已订购的商品(有些已被订购多次)。

prod_id
a1
a2
a3
a4
a5
a6
a7

问题

编写 SQL 语句,检索并列出所有已订购商品(prod_id)的去重后的清单。

示例

DROP TABLE IF EXISTS `OrderItems`;
CREATE TABLE IF NOT EXISTS `OrderItems`(
	prod_id VARCHAR(255) NOT NULL COMMENT '商品id'
);
INSERT `OrderItems` VALUES ('a1'),('a2'),('a3'),('a4'),('a5'),('a6'),('a6');
1
2
3
4
5

解答

SELECT DISTINCT prod_id
FROM OrderItems;
1
2

# 8.3 检索所有列

描述

现在有 Customers 表(表中含有列 cust_id 代表客户 id,cust_name 代表客户姓名) 。

cust_id cust_name
a1 andy
a2 ben
a3 tony
a4 tom
a5 an
a6 lee
a7 hex

问题

需要编写 SQL 语句,检索所有列。

示例

DROP TABLE IF EXISTS `Customers`;
CREATE TABLE IF NOT EXISTS `Customers`(
	cust_id VARCHAR(255) NOT NULL COMMENT '客户id',
	cust_name VARCHAR(255) NOT NULL COMMENT '客户姓名'
);
INSERT `Customers` VALUES ('a1','andy'),('a2','ben'),('a3','tony'),('a4','tom'),('a5','an'),('a6','lee'),('a7','hex');
1
2
3
4
5
6

解答

SELECT *
FROM Customers;
1
2

# 九、参考资料

Last Updated: 2023-01-28 4:31:25