本篇主要内容
查询的简单使用(子查询、组合查询等之后详细讲解),ORDER BY
排序,WHERE
过滤数据。如果对文中表结构不理解的可以查看系列首页。话不多说,进入正题!
-- 单行注释
# 单行注释
/* 多行注释 */
查询 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 |
+---------+---------------------+------------+
使用 DISTINCT
关键字,查询产品价格中的的唯一值。
mysql> SELECT DISTINCT prod_price
-> FROM Products;
+------------+
| prod_price |
+------------+
| 3.49 |
| 5.99 |
| 8.99 |
| 11.99 |
| 4.99 |
| 9.49 |
+------------+
使用 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 |
+-------------+
注意:
LIMIT 6 OFFSET 6
在 Mysql
中可以简写为 LIMIT 6, 6
。使用 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
语句中最后一 条子句。
将 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
排序。
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 |
+------------+---------------------+
操 作 符 | 说明 | 操作符 | 说明 |
---|---|---|---|
= | 等于 | > | 大于 |
<>、!= | 不等于 | >= | 大于等于 |
< | 小于 | !> | 不大于 |
<= | 小于等于 | BETWEEN | 在两值之间(包含边界) |
!< | 不小于 | IS NULL | 是NULL值 |
使用 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 |
+------------+
使用 WHERE
关键字和 IS NULL
进行范围值检查。如果没有 NULL
值就不返回数据。在 Customers
表中,顾客的邮箱有空值,我们就查询邮箱为 NULL
的顾客名称。
mysql> SELECT cust_name
-> FROM Customers
-> WHERE cust_email IS NULL;
+---------------+
| cust_name |
+---------------+
| Kids Place |
| The Toy Store |
+---------------+
使用 AND
、OR
操作符给 WHERE
子句添加附加条件。 AND
的优先级比 OR
要高,优先级高低 ()
、 AND
、 OR
。在使用的过程中要注意各个优先级的影响。现在我们要从 Products
表中查询符合条件的 prod_name
和 prod_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 |
+--------------------+------------+
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 |
+--------------------+------------+
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 |
+---------------------+
版权说明 : 本文为转载文章, 版权归原作者所有 版权申明
原文链接 : https://blog.csdn.net/qq_43965708/article/details/117372986
内容来源于网络,如有侵权,请联系作者删除!