MySQL检索和过滤数据
注意
- 多条SQL语句必须以分号(;)分隔;
- SQL语句不区分大小写;
- 在处理SQL语句时,其中所有空格都被忽略;
- 当选择多个列是,一定要在列名之间加上逗号,但最后一个列名后不加。
SELECT语句
检索单个列
mysql> SELECT prod_name FROM products; +----------------+ | prod_name | +----------------+ | .5 ton anvil | | 1 ton anvil | | 2 ton anvil | | Detonator | | Bird seed | | Carrots | | Fuses | | JetPack 1000 | | JetPack 2000 | | Oil can | | Safe | | Sling | | TNT (1 stick) | | TNT (5 sticks) | +----------------+ 14 rows in set (0.00 sec)
检索所有列
mysql> SELECT * FROM products; +---------+---------+----------------+------------+----------------------------------------------------------------+ | prod_id | vend_id | prod_name | prod_price | prod_desc | +---------+---------+----------------+------------+----------------------------------------------------------------+ | ANV01 | 1001 | .5 ton anvil | 5.99 | .5 ton anvil, black, complete with handy hook | | ANV02 | 1001 | 1 ton anvil | 9.99 | 1 ton anvil, black, complete with handy hook and carrying case | | ANV03 | 1001 | 2 ton anvil | 14.99 | 2 ton anvil, black, complete with handy hook and carrying case | | DTNTR | 1003 | Detonator | 13.00 | Detonator (plunger powered), fuses not included | | FB | 1003 | Bird seed | 10.00 | Large bag (suitable for road runners) | | FC | 1003 | Carrots | 2.50 | Carrots (rabbit hunting season only) | | FU1 | 1002 | Fuses | 3.42 | 1 dozen, extra long | | JP1000 | 1005 | JetPack 1000 | 35.00 | JetPack 1000, intended for single use | | JP2000 | 1005 | JetPack 2000 | 55.00 | JetPack 2000, multi-use | | OL1 | 1002 | Oil can | 8.99 | Oil can, red | | SAFE | 1003 | Safe | 50.00 | Safe with combination lock | | SLING | 1003 | Sling | 4.49 | Sling, one size fits all | | TNT1 | 1003 | TNT (1 stick) | 2.50 | TNT, red, single stick | | TNT2 | 1003 | TNT (5 sticks) | 10.00 | TNT, red, pack of 10 sticks | +---------+---------+----------------+------------+----------------------------------------------------------------+ 14 rows in set (0.00 sec)
检索不同行
mysql> SELECT vend_id FROM products; +---------+ | vend_id | +---------+ | 1001 | | 1001 | | 1001 | | 1002 | | 1002 | | 1003 | | 1003 | | 1003 | | 1003 | | 1003 | | 1003 | | 1003 | | 1005 | | 1005 | +---------+ 14 rows in set (0.00 sec)
去重
mysql> SELECT DISTINCT vend_id FROM products; +---------+ | vend_id | +---------+ | 1001 | | 1002 | | 1003 | | 1005 | +---------+ 4 rows in set (0.00 sec)
- DISTINCT关键字,应用于所有列而不是前置它的列。
限制结果
mysql> SELECT vend_id FROM products LIMIT 5,5; +---------+ | vend_id | +---------+ | 1003 | | 1003 | | 1003 | | 1003 | | 1003 | +---------+ 5 rows in set (0.00 sec)
- LIMIT 5,5 指示MySQL返回从行5开始的5行。
ORDER BY子句
单个排序
mysql> SELECT prod_name FROM products ORDER BY prod_name; +----------------+ | prod_name | +----------------+ | .5 ton anvil | | 1 ton anvil | | 2 ton anvil | | Bird seed | | Carrots | | Detonator | | Fuses | | JetPack 1000 | | JetPack 2000 | | Oil can | | Safe | | Sling | | TNT (1 stick) | | TNT (5 sticks) | +----------------+ 14 rows in set (0.00 sec)
多个列排序
mysql> SELECT prod_id,prod_price,prod_name FROM products ORDER BY prod_price,prod_name; +---------+------------+----------------+ | prod_id | prod_price | prod_name | +---------+------------+----------------+ | FC | 2.50 | Carrots | | TNT1 | 2.50 | TNT (1 stick) | | FU1 | 3.42 | Fuses | | SLING | 4.49 | Sling | | ANV01 | 5.99 | .5 ton anvil | | OL1 | 8.99 | Oil can | | ANV02 | 9.99 | 1 ton anvil | | FB | 10.00 | Bird seed | | TNT2 | 10.00 | TNT (5 sticks) | | DTNTR | 13.00 | Detonator | | ANV03 | 14.99 | 2 ton anvil | | JP1000 | 35.00 | JetPack 1000 | | SAFE | 50.00 | Safe | | JP2000 | 55.00 | JetPack 2000 | +---------+------------+----------------+ 14 rows in set (0.00 sec)
- 对于上述例子中的输出,仅在多个行具有相同的prod_price值时才对产品按prod_name进行排序。如果prod_price列中所有的值都是唯一的,则不会按prod_name排序。
指定排序方向
mysql> SELECT prod_id,prod_price,prod_name FROM products ORDER BY prod_price,prod_name,prod_name; +---------+------------+----------------+ | prod_id | prod_price | prod_name | +---------+------------+----------------+ | FC | 2.50 | Carrots | | TNT1 | 2.50 | TNT (1 stick) | | FU1 | 3.42 | Fuses | | SLING | 4.49 | Sling | | ANV01 | 5.99 | .5 ton anvil | | OL1 | 8.99 | Oil can | | ANV02 | 9.99 | 1 ton anvil | | FB | 10.00 | Bird seed | | TNT2 | 10.00 | TNT (5 sticks) | | DTNTR | 13.00 | Detonator | | ANV03 | 14.99 | 2 ton anvil | | JP1000 | 35.00 | JetPack 1000 | | SAFE | 50.00 | Safe | | JP2000 | 55.00 | JetPack 2000 | +---------+------------+----------------+ 14 rows in set (0.00 sec)
- 默认是顺序排序(ASC);
- 如果要逆序就在需要逆序的列指定DESC。
WHERE 子句
WHERE 子句操作符
操 作 符 | 说 明 |
---|---|
= | 等于 |
<> | 不等于 |
!= | 不等于 |
< | 小于 |
<= | 小于等于 |
> | 大于 |
>= | 大于等于 |
= | 等于 |
BETWEEN | 在指定的两个值之间 |
检查单个值
mysql> SELECT prod_id,prod_price,prod_name FROM products WHERE prod_name=‘fuses‘; +---------+------------+-----------+ | prod_id | prod_price | prod_name | +---------+------------+-----------+ | FU1 | 3.42 | Fuses | +---------+------------+-----------+ 1 row in set (0.00 sec)
不破配检查
mysql> SELECT vend_id,prod_name FROM products WHERE vend_id <> 1003; +---------+--------------+ | vend_id | prod_name | +---------+--------------+ | 1001 | .5 ton anvil | | 1001 | 1 ton anvil | | 1001 | 2 ton anvil | | 1002 | Fuses | | 1002 | Oil can | | 1005 | JetPack 1000 | | 1005 | JetPack 2000 | +---------+--------------+ 7 rows in set (0.01 sec)
范围值检查
mysql> SELECT vend_id,prod_name FROM products WHERE prod_price BETWEEN 5 AND 10; +---------+----------------+ | vend_id | prod_name | +---------+----------------+ | 1001 | .5 ton anvil | | 1001 | 1 ton anvil | | 1003 | Bird seed | | 1002 | Oil can | | 1003 | TNT (5 sticks) | +---------+----------------+ 5 rows in set (0.01 sec)
空值检查
mysql> SELECT cust_id FROM customers WHERE cust_email IS NULL; +---------+ | cust_id | +---------+ | 10002 | | 10005 | +---------+ 2 rows in set (0.00 sec)
相关推荐
wenwentana 2020-08-03
IceStreamLab 2020-07-27
mengyue 2020-06-09
编码之路 2020-05-03
mengyue 2020-05-02
囧芝麻 2020-04-29
bluetears 2020-04-22
xx0cw 2020-04-11
ztyzly00 2020-02-21
编码之路 2020-02-20
heniancheng 2020-01-31
Andrea0 2020-01-30
编码之路 2019-12-26
ReganHoo 2019-11-21
Norsaa 2019-11-08
Smartcxr 2017-09-25
shouwangV 2019-10-30
exitzhang 2017-05-11