Mysql从入门到入魔——3. 查询、排序、WHERE过滤

举报
Python新视野 发表于 2021/09/28 17:41:30 2021/09/28
【摘要】 本篇主要内容查询的简单使用(子查询、组合查询等之后详细讲解),ORDER BY 排序,WHERE 过滤数据。如果对文中表结构不理解的可以查看系列首页。话不多说,进入正题! 1. 查询 1.1 注释的使用-- 单行注释# 单行注释/* 多行注释 */ 1.2 查询多列查询 Products 产品表中的产品 id 、产品名称、产品价格。mysql> SELECT prod_id, prod_na...

本篇主要内容
查询的简单使用(子查询、组合查询等之后详细讲解),ORDER BY 排序,WHERE 过滤数据。如果对文中表结构不理解的可以查看系列首页。话不多说,进入正题!



1. 查询

1.1 注释的使用

-- 单行注释
# 单行注释
/* 多行注释 */

1.2 查询多列

查询 Products 产品表中的产品 id 、产品名称、产品价格。

mysql> SELECT prod_id, prod_name, prod_price
    -> FROM Products;
+---------+---------------------+------------+
| prod_id | prod_name           | prod_price |
+---------+---------------------+------------+
| BNBG01  | Fish bean bag toy   |       3.49 |
| BNBG02  | Bird bean bag toy   |       3.49 |
| BNBG03  | Rabbit bean bag toy |       3.49 |
| BR01    | 8 inch teddy bear   |       5.99 |
| BR02    | 12 inch teddy bear  |       8.99 |
| BR03    | 18 inch teddy bear  |      11.99 |
| RGAN01  | Raggedy Ann         |       4.99 |
| RYL01   | King doll           |       9.49 |
| RYL02   | Queen doll          |       9.49 |
+---------+---------------------+------------+

1.3 检索唯一值

使用 DISTINCT 关键字,查询产品价格中的的唯一值。

mysql> SELECT DISTINCT prod_price 
    -> FROM Products;
+------------+
| prod_price |
+------------+
|       3.49 |
|       5.99 |
|       8.99 |
|      11.99 |
|       4.99 |
|       9.49 |
+------------+

1.4 限制输出

使用 LIMIT 关键字限制输出的数据量。这里查询产品名称的前5行。

mysql> SELECT prod_name
    -> FROM Products
    -> LIMIT 5;
+---------------------+
| prod_name           |
+---------------------+
| Fish bean bag toy   |
| Bird bean bag toy   |
| Rabbit bean bag toy |
| 8 inch teddy bear   |
| 12 inch teddy bear  |
+---------------------+

使用 OFFSET 指定从哪一行(索引从0开始)开始取数据。如果行数多余表中数据行,则不返回数据。这里我们从索引6(第7行)开始取,取6个数据。看查询的结果是否是我们预期的。

mysql> SELECT prod_name
    -> FROM Products
    -> LIMIT 6 OFFSET 6;
+-------------+
| prod_name   |
+-------------+
| Raggedy Ann |
| King doll   |
| Queen doll  |
+-------------+

注意:

  • 表中数据只有9行,所以从索引6(第7行)开始取,只能取三个数据。
  • LIMIT 6 OFFSET 6Mysql 中可以简写为 LIMIT 6, 6


2. ORDER BY 排序

2.1 单列排序

使用 ORDER BY 子句。 ORDER BY 子句取一个或多个列的名字,据此对查询结果进行排序。现在我们将 Products 表中的产品价格进行排序,默认升序。

mysql> SELECT prod_price
    -> FROM Products
    -> ORDER BY prod_price;
+------------+
| prod_price |
+------------+
|       3.49 |
|       3.49 |
|       3.49 |
|       4.99 |
|       5.99 |
|       8.99 |
|       9.49 |
|       9.49 |
|      11.99 |
+------------+

注意: 在指定一条 ORDER BY 子句时,应该保证它是 SELECT 语句中最后一 条子句


2.2 多列排序

Products 表中的产品价格与产品名称进行排序。

mysql> SELECT prod_price, prod_name
    -> FROM Products
    -> ORDER BY prod_price, prod_name;
+------------+---------------------+
| prod_price | prod_name           |
+------------+---------------------+
|       3.49 | Bird bean bag toy   |
|       3.49 | Fish bean bag toy   |
|       3.49 | Rabbit bean bag toy |
|       4.99 | Raggedy Ann         |
|       5.99 | 8 inch teddy bear   |
|       8.99 | 12 inch teddy bear  |
|       9.49 | King doll           |
|       9.49 | Queen doll          |
|      11.99 | 18 inch teddy bear  |
+------------+---------------------+

注意:上面排序顺序是先对 prod_price 进行排序,再对 prod_price 相同的行按照 prod_name 进行排。就是说:在按多列排序时,仅在多个行具有相同的 prod_price 值时 才对产品按 prod_name 进行排序。如果 prod_price 列中所有的值都是 唯一的,则不会按 prod_name 排序。


2.3 指定排序方向

ORDER 默认升序(从A到 Z)排序。指定 DESC 关键字进行降序(从 Z到 A)排序。

mysql> SELECT prod_price
    -> FROM Products
    -> ORDER BY prod_price DESC;
+------------+
| prod_price |
+------------+
|      11.99 |
|       9.49 |
|       9.49 |
|       8.99 |
|       5.99 |
|       4.99 |
|       3.49 |
|       3.49 |
|       3.49 |
+------------+

多列指定排序方向。将查询结果按照产品价格降序,产品名称升序的形式进行排列。

mysql> SELECT prod_price, prod_name
    -> FROM Products
    -> ORDER BY prod_price DESC, prod_name;
+------------+---------------------+
| prod_price | prod_name           |
+------------+---------------------+
|      11.99 | 18 inch teddy bear  |
|       9.49 | King doll           |
|       9.49 | Queen doll          |
|       8.99 | 12 inch teddy bear  |
|       5.99 | 8 inch teddy bear   |
|       4.99 | Raggedy Ann         |
|       3.49 | Bird bean bag toy   |
|       3.49 | Fish bean bag toy   |
|       3.49 | Rabbit bean bag toy |
+------------+---------------------+


3. WHERE 过滤数据

3.1 WHERE 子句操作符

操 作 符 说明 操作符 说明
= 等于 > 大于
<>、!= 不等于 >= 大于等于
< 小于 !> 不大于
<= 小于等于 BETWEEN 在两值之间(包含边界)
!< 不小于 IS NULL 是NULL值

3.2 范围值检查

使用 WHERE 关键字和 BETWEEN AND 进行范围值检查。现在我们查询 Products 表中,产品价格在 5 - 9.49 之间(前闭后闭)的价格信息。

mysql> SELECT prod_price
    -> FROM Products
    -> WHERE prod_price BETWEEN 5 AND 9.49;
+------------+
| prod_price |
+------------+
|       5.99 |
|       8.99 |
|       9.49 |
|       9.49 |
+------------+

3.3 空值检查

使用 WHERE 关键字和 IS NULL 进行范围值检查。如果没有 NULL 值就不返回数据。在 Customers 表中,顾客的邮箱有空值,我们就查询邮箱为 NULL 的顾客名称。

mysql> SELECT cust_name
    -> FROM Customers
    -> WHERE cust_email IS NULL;
+---------------+
| cust_name     |
+---------------+
| Kids Place    |
| The Toy Store |
+---------------+

3.4 WHERE 组合过滤

使用 ANDOR 操作符给 WHERE 子句添加附加条件。 AND 的优先级比 OR 要高,优先级高低 ()ANDOR。在使用的过程中要注意各个优先级的影响。现在我们要从 Products 表中查询符合条件的 prod_nameprod_price 的信息,限定条件是供应商 id=‘DLL01’‘BRS01’ 并且产品价格 >= 10

mysql> SELECT prod_name, prod_price
    -> FROM Products
    -> WHERE(vend_id = 'DLL01' OR vend_id = 'BRS01')
    -> AND prod_price >= 10;
+--------------------+------------+
| prod_name          | prod_price |
+--------------------+------------+
| 18 inch teddy bear |      11.99 |
+--------------------+------------+

3.5 IN 操作符

IN 操作符用来指定条件范围,范围中的每个条件都可以进行匹配。(与 OR 的功能相同,但速度可能比 IN 慢),下面用 in 来实现与 or 相同的功能。

mysql> SELECT prod_name, prod_price
    -> FROM Products
    -> WHERE vend_id IN ('DLL01', 'BRS01')
    ->  AND prod_price >= 10;
+--------------------+------------+
| prod_name          | prod_price |
+--------------------+------------+
| 18 inch teddy bear |      11.99 |
+--------------------+------------+

3.6 NOT 操作符

WHERE 子句中的 NOT 操作符有且只有一个功能,那就是否定其后所跟的任何条件。现在供应商 id 不是 ‘BRS01’ 的供应商的所有产品信息,并将查询结果按照产品名称升序排序。

mysql> SELECT prod_name
    -> FROM Products
    -> WHERE NOT vend_id = 'BRS01'
    -> ORDER BY prod_name;
+---------------------+
| prod_name           |
+---------------------+
| Bird bean bag toy   |
| Fish bean bag toy   |
| King doll           |
| Queen doll          |
| Rabbit bean bag toy |
| Raggedy Ann         |
+---------------------+

这就是本文所有的内容了,如果感觉还不错的话。❤ 点个赞再走吧!!!❤

在这里插入图片描述
后续会继续分享《Mysql从入门到入魔》系列文章,如果感兴趣的话可以点个关注不迷路哦~。

【版权声明】本文为华为云社区用户原创内容,未经允许不得转载,如需转载请自行联系原作者进行授权。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。