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

x33g5p2x  于2021-12-19 转载在 其他  
字(4.6k)|赞(0)|评价(0)|浏览(356)

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

1. 查询

1.1 注释的使用

  1. -- 单行注释
  2. # 单行注释
  3. /* 多行注释 */

1.2 查询多列

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

  1. mysql> SELECT prod_id, prod_name, prod_price
  2. -> FROM Products;
  3. +---------+---------------------+------------+
  4. | prod_id | prod_name | prod_price |
  5. +---------+---------------------+------------+
  6. | BNBG01 | Fish bean bag toy | 3.49 |
  7. | BNBG02 | Bird bean bag toy | 3.49 |
  8. | BNBG03 | Rabbit bean bag toy | 3.49 |
  9. | BR01 | 8 inch teddy bear | 5.99 |
  10. | BR02 | 12 inch teddy bear | 8.99 |
  11. | BR03 | 18 inch teddy bear | 11.99 |
  12. | RGAN01 | Raggedy Ann | 4.99 |
  13. | RYL01 | King doll | 9.49 |
  14. | RYL02 | Queen doll | 9.49 |
  15. +---------+---------------------+------------+

1.3 检索唯一值

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

  1. mysql> SELECT DISTINCT prod_price
  2. -> FROM Products;
  3. +------------+
  4. | prod_price |
  5. +------------+
  6. | 3.49 |
  7. | 5.99 |
  8. | 8.99 |
  9. | 11.99 |
  10. | 4.99 |
  11. | 9.49 |
  12. +------------+

1.4 限制输出

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

  1. mysql> SELECT prod_name
  2. -> FROM Products
  3. -> LIMIT 5;
  4. +---------------------+
  5. | prod_name |
  6. +---------------------+
  7. | Fish bean bag toy |
  8. | Bird bean bag toy |
  9. | Rabbit bean bag toy |
  10. | 8 inch teddy bear |
  11. | 12 inch teddy bear |
  12. +---------------------+

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

  1. mysql> SELECT prod_name
  2. -> FROM Products
  3. -> LIMIT 6 OFFSET 6;
  4. +-------------+
  5. | prod_name |
  6. +-------------+
  7. | Raggedy Ann |
  8. | King doll |
  9. | Queen doll |
  10. +-------------+

注意:

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

2. ORDER BY 排序

2.1 单列排序

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

  1. mysql> SELECT prod_price
  2. -> FROM Products
  3. -> ORDER BY prod_price;
  4. +------------+
  5. | prod_price |
  6. +------------+
  7. | 3.49 |
  8. | 3.49 |
  9. | 3.49 |
  10. | 4.99 |
  11. | 5.99 |
  12. | 8.99 |
  13. | 9.49 |
  14. | 9.49 |
  15. | 11.99 |
  16. +------------+

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

2.2 多列排序

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

  1. mysql> SELECT prod_price, prod_name
  2. -> FROM Products
  3. -> ORDER BY prod_price, prod_name;
  4. +------------+---------------------+
  5. | prod_price | prod_name |
  6. +------------+---------------------+
  7. | 3.49 | Bird bean bag toy |
  8. | 3.49 | Fish bean bag toy |
  9. | 3.49 | Rabbit bean bag toy |
  10. | 4.99 | Raggedy Ann |
  11. | 5.99 | 8 inch teddy bear |
  12. | 8.99 | 12 inch teddy bear |
  13. | 9.49 | King doll |
  14. | 9.49 | Queen doll |
  15. | 11.99 | 18 inch teddy bear |
  16. +------------+---------------------+

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

2.3 指定排序方向

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

  1. mysql> SELECT prod_price
  2. -> FROM Products
  3. -> ORDER BY prod_price DESC;
  4. +------------+
  5. | prod_price |
  6. +------------+
  7. | 11.99 |
  8. | 9.49 |
  9. | 9.49 |
  10. | 8.99 |
  11. | 5.99 |
  12. | 4.99 |
  13. | 3.49 |
  14. | 3.49 |
  15. | 3.49 |
  16. +------------+

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

  1. mysql> SELECT prod_price, prod_name
  2. -> FROM Products
  3. -> ORDER BY prod_price DESC, prod_name;
  4. +------------+---------------------+
  5. | prod_price | prod_name |
  6. +------------+---------------------+
  7. | 11.99 | 18 inch teddy bear |
  8. | 9.49 | King doll |
  9. | 9.49 | Queen doll |
  10. | 8.99 | 12 inch teddy bear |
  11. | 5.99 | 8 inch teddy bear |
  12. | 4.99 | Raggedy Ann |
  13. | 3.49 | Bird bean bag toy |
  14. | 3.49 | Fish bean bag toy |
  15. | 3.49 | Rabbit bean bag toy |
  16. +------------+---------------------+

3. WHERE 过滤数据

3.1 WHERE 子句操作符

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

3.2 范围值检查

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

  1. mysql> SELECT prod_price
  2. -> FROM Products
  3. -> WHERE prod_price BETWEEN 5 AND 9.49;
  4. +------------+
  5. | prod_price |
  6. +------------+
  7. | 5.99 |
  8. | 8.99 |
  9. | 9.49 |
  10. | 9.49 |
  11. +------------+

3.3 空值检查

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

  1. mysql> SELECT cust_name
  2. -> FROM Customers
  3. -> WHERE cust_email IS NULL;
  4. +---------------+
  5. | cust_name |
  6. +---------------+
  7. | Kids Place |
  8. | The Toy Store |
  9. +---------------+

3.4 WHERE 组合过滤

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

  1. mysql> SELECT prod_name, prod_price
  2. -> FROM Products
  3. -> WHERE(vend_id = 'DLL01' OR vend_id = 'BRS01')
  4. -> AND prod_price >= 10;
  5. +--------------------+------------+
  6. | prod_name | prod_price |
  7. +--------------------+------------+
  8. | 18 inch teddy bear | 11.99 |
  9. +--------------------+------------+

3.5 IN 操作符

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

  1. mysql> SELECT prod_name, prod_price
  2. -> FROM Products
  3. -> WHERE vend_id IN ('DLL01', 'BRS01')
  4. -> AND prod_price >= 10;
  5. +--------------------+------------+
  6. | prod_name | prod_price |
  7. +--------------------+------------+
  8. | 18 inch teddy bear | 11.99 |
  9. +--------------------+------------+

3.6 NOT 操作符

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

  1. mysql> SELECT prod_name
  2. -> FROM Products
  3. -> WHERE NOT vend_id = 'BRS01'
  4. -> ORDER BY prod_name;
  5. +---------------------+
  6. | prod_name |
  7. +---------------------+
  8. | Bird bean bag toy |
  9. | Fish bean bag toy |
  10. | King doll |
  11. | Queen doll |
  12. | Rabbit bean bag toy |
  13. | Raggedy Ann |
  14. +---------------------+

相关文章