本篇文章主要介绍通过 MySQL 中的 SELECT
, DISTINCT
, ORDER BY
, LIMIT
语句完成最基本的数据检索和对检索到的数据进行排序。最基本的数据检索是指我们通过 SELECT
语句查询表中的某些列或者行。对检索到的数据进行排序是指对数据以某种规则显示,例如按照某个字段升序或者降序显示等等。
文章目录
- 1. 检索数据
- 1.1 检索指定的列
- 1.2 检索不同的行
- 2. 排序检索数据
- 2.1 按照某个列名排序
- 2.2 按照多个列排序
- 2.3 指定排序方向
- 3. 小结
1. 检索数据
为了使用 SELECT
语句检索表数据,必须至少给出两条信息——想选择什么,以及从哪张表或某个结果集合(多表连接或者某个SQL语句的查询结果)中选择。
1.1 检索指定的列
通过指定列名可以检索指定的列(一列或者多列)。
- 查询某张表中指定的列:
select col_name from tablename;
说明:
这会查询出所有相关的行,数据没有经过过滤和排序。
在一行输入中输入多条 SQL 语句,必须使用分号隔开。单条语句则不需要使用分号,但是最好加上,这是一个好习惯。
此外,SQL 关键字语句不区分大小写。许多 SQL 开发人员喜欢对所有SQL 关键字使用大写,而对所有
列和表名使用小写,这样做使代码更易于阅读和调试。 - 检索多个列时,列名之间需要用英文逗号
,
分割:SELECT prod_id, prod_name, prod_price FROM products
;
- 检索所有的列:
SELECT * FROM tablename;
检索所有的列会导致降低程序的性能。
1.2 检索不同的行
有时候,我们对显示的结果需要进行过滤,例如只显示某列中不同的字段,以及按照指定的行数显示。
- 只显示不同的行:
SELECT DISTINCT vend_id FROM products;
注意:不能单独对某个列使用
DISTINCT
,DISTINCT
关键字应用于所有列而不仅是前置它的列。例如SELECT DISTINCT vend_id, prod_price FROM products;
,这条语句的目的是从products
表中找出所有唯一的供应商ID(vend_id
)及其对应的产品价格(prod_price
),即如果有多个产品具有相同的供应商ID和相同的价格,它们在结果集中只会出现一次。 - 显示输出的行数,例如只显示 5 行的数据:
SELECT prod_name FROM products LIMIT 5;
也可以指定从哪一行开始输出,然后连续输出几行。注意,0行表示第1行。
2. 排序检索数据
本节介绍如何使用 ORDER BY
语句对结果进行排序。
2.1 按照某个列名排序
SELECT prod_name FROM products ORDER BY prod_id;
但排序的关键字不一定非要出现在显示的结果中。
2.2 按照多个列排序
有时候,对于按照某一个列排序后,我们还希望按照其它的列排序。例如,先后按照姓、名、年龄等排序。
SELECT prod_id, prod_price, prod_name FROM products ORDER BY prod_price, prod_name;
2.3 指定排序方向
数据排序不限于升序排序(从A到Z)。这只是默认的排序顺序,还可以使用 ORDER BY
子句以降序(从Z到A)顺序排序。为了进行降序排序,必须指定 DESC
关键字。
- 按照价格降序排序
SELECT prod_id, prod_price, prod_name FROM products ORDER BY prod_price DESC;
- 如果指定了多个列排序,那么只有使用了
DESC
关键字的那一列会按照降序排序。如果需要所有的列按照降序排序,那么每一个列名都必须使用DESC
关键字。
SELECT prod_id, prod_price, prod_name FROM products ORDER BY prod_price DESC , prod_name;
结合LIMIT的关键字,我们就能在 products
表中查询最高价格和最低价格了。
SELECT prod_id, prod_price, prod_name FROM products ORDER BY prod_price DESC LIMIT 1;
需要注意的是,ORDER BY
关键字必须位于 FROM
关键字之后,LIMIT
关键字位于 ORDER BY
关键字之后。
3. 小结
本节的主要内容:
- 查询某个列;
- 对查询结果进行去重或者显示指定的行;
- 对查询结果按照列(单列或者多列)进行排序(默认是升序)。
各位道友,如有收获,记得一键三连呐。
最后,给各位道友介绍一下使用国外虚拟卡开通一些国外服务的渠道,当前我在用的是 wildcard,使用我的注册邀请码 IOQ1YDHH
注册,能得 2 美刀,抵消一部分的开卡费用。自己买个 Github Copilot
、ChatGPT Plus
(无需注册,可半价购买)简直不要太香。