MySQL学习笔记(三)

1、检索数据

  单列检索

 1 mysql> SELECT prod_name
 2     -> FROM products;
 3 +----------------+
 4 | prod_name      |
 5 +----------------+
 6 | .5 ton anvil   |
 7 | 1 ton anvil    |
 8 | 2 ton anvil    |
 9 | Detonator      |
10 | Bird seed      |
11 | Carrots        |
12 | Fuses          |
13 | JetPack 1000   |
14 | JetPack 2000   |
15 | Oil can        |
16 | Safe           |
17 | Sling          |
18 | TNT (1 stick)  |
19 | TNT (5 sticks) |
20 +----------------+
21 14 rows in set (0.00 sec)

  多列检索

 1 mysql> SELECT prod_id, prod_name, prod_price
 2     -> FROM products;
 3 +---------+----------------+------------+
 4 | prod_id | prod_name      | prod_price |
 5 +---------+----------------+------------+
 6 | ANV01   | .5 ton anvil   |       5.99 |
 7 | ANV02   | 1 ton anvil    |       9.99 |
 8 | ANV03   | 2 ton anvil    |      14.99 |
 9 | DTNTR   | Detonator      |      13.00 |
10 | FB      | Bird seed      |      10.00 |
11 | FC      | Carrots        |       2.50 |
12 | FU1     | Fuses          |       3.42 |
13 | JP1000  | JetPack 1000   |      35.00 |
14 | JP2000  | JetPack 2000   |      55.00 |
15 | OL1     | Oil can        |       8.99 |
16 | SAFE    | Safe           |      50.00 |
17 | SLING   | Sling          |       4.49 |
18 | TNT1    | TNT (1 stick)  |       2.50 |
19 | TNT2    | TNT (5 sticks) |      10.00 |
20 +---------+----------------+------------+
21 14 rows in set (0.00 sec)

  在实际列名的位置使用(*)通配符,SELECT语句便可以检索出所有的列。

  检索不同的行

通过DISTINCT关键字可以是Mysql只返回不同的行

mysql> SELECT DISTINCT vend_id
    -> FROM products;
+---------+
| vend_id |
+---------+
|    1001 |
|    1002 |
|    1003 |
|    1005 |
+---------+
4 rows in set (0.08 sec)

  限制结果

只返回第一行或前几行,可以使用LIMIT子句

 1 mysql> SELECT prod_name
 2     -> FROM products
 3     -> LIMIT 5;
 4 +--------------+
 5 | prod_name    |
 6 +--------------+
 7 | .5 ton anvil |
 8 | 1 ton anvil  |
 9 | 2 ton anvil  |
10 | Detonator    |
11 | Bird seed    |
12 +--------------+
13 5 rows in set (0.00 sec)

2、 排序数据

 1 mysql> SELECT prod_name
 2     -> FROM products
 3     -> ORDER BY prod_name;
 4 +----------------+
 5 | prod_name      |
 6 +----------------+
 7 | .5 ton anvil   |
 8 | 1 ton anvil    |
 9 | 2 ton anvil    |
10 | Bird seed      |
11 | Carrots        |
12 | Detonator      |
13 | Fuses          |
14 | JetPack 1000   |
15 | JetPack 2000   |
16 | Oil can        |
17 | Safe           |
18 | Sling          |
19 | TNT (1 stick)  |
20 | TNT (5 sticks) |
21 +----------------+
22 14 rows in set (0.27 sec)

  多列排序

 1 mysql> SELECT prod_id, prod_price, prod_name
 2     -> FROM products
 3     -> ORDER BY prod_price, prod_name;
 4 +---------+------------+----------------+
 5 | prod_id | prod_price | prod_name      |
 6 +---------+------------+----------------+
 7 | FC      |       2.50 | Carrots        |
 8 | TNT1    |       2.50 | TNT (1 stick)  |
 9 | FU1     |       3.42 | Fuses          |
10 | SLING   |       4.49 | Sling          |
11 | ANV01   |       5.99 | .5 ton anvil   |
12 | OL1     |       8.99 | Oil can        |
13 | ANV02   |       9.99 | 1 ton anvil    |
14 | FB      |      10.00 | Bird seed      |
15 | TNT2    |      10.00 | TNT (5 sticks) |
16 | DTNTR   |      13.00 | Detonator      |
17 | ANV03   |      14.99 | 2 ton anvil    |
18 | JP1000  |      35.00 | JetPack 1000   |
19 | SAFE    |      50.00 | Safe           |
20 | JP2000  |      55.00 | JetPack 2000   |
21 +---------+------------+----------------+
22 14 rows in set (0.03 sec)

  指定排序顺序

 1 mysql> SELECT prod_id, prod_price, prod_name
 2     -> FROM products
 3     -> ORDER BY prod_price DESC;
 4 +---------+------------+----------------+
 5 | prod_id | prod_price | prod_name      |
 6 +---------+------------+----------------+
 7 | JP2000  |      55.00 | JetPack 2000   |
 8 | SAFE    |      50.00 | Safe           |
 9 | JP1000  |      35.00 | JetPack 1000   |
10 | ANV03   |      14.99 | 2 ton anvil    |
11 | DTNTR   |      13.00 | Detonator      |
12 | TNT2    |      10.00 | TNT (5 sticks) |
13 | FB      |      10.00 | Bird seed      |
14 | ANV02   |       9.99 | 1 ton anvil    |
15 | OL1     |       8.99 | Oil can        |
16 | ANV01   |       5.99 | .5 ton anvil   |
17 | SLING   |       4.49 | Sling          |
18 | FU1     |       3.42 | Fuses          |
19 | FC      |       2.50 | Carrots        |
20 | TNT1    |       2.50 | TNT (1 stick)  |
21 +---------+------------+----------------+
22 14 rows in set (0.00 sec)

DESC关键字只应用到直接位于其前面的列名。DESC:降序排列,ASC:升序排列(默认排序)

  3、过滤数据  (使用WHERE子句)

 1 mysql> SELECT prod_name, prod_price
 2     -> FROM products
 3     -> WHERE prod_price = 2.50;
 4 +---------------+------------+
 5 | prod_name     | prod_price |
 6 +---------------+------------+
 7 | Carrots       |       2.50 |
 8 | TNT (1 stick) |       2.50 |
 9 +---------------+------------+
10 2 rows in set (0.03 sec)

WHERE子句的位置:在同时使用ORDER BY和WHERE子句时,应该让ORDER BY位于WHERE之后,否则将会产生错误。

  其他WHERE子句操作符的使用

1 mysql> SELECT prod_name, prod_price
2     -> FROM products
3     -> WHERE prod_name = 'fuses';
4 +-----------+------------+
5 | prod_name | prod_price |
6 +-----------+------------+
7 | Fuses     |       3.42 |
8 +-----------+------------+
9 1 row in set (0.00 sec)
 1 mysql> SELECT prod_name, prod_price
 2     -> FROM products
 3     -> WHERE prod_price < 10;
 4 +---------------+------------+
 5 | prod_name     | prod_price |
 6 +---------------+------------+
 7 | .5 ton anvil  |       5.99 |
 8 | 1 ton anvil   |       9.99 |
 9 | Carrots       |       2.50 |
10 | Fuses         |       3.42 |
11 | Oil can       |       8.99 |
12 | Sling         |       4.49 |
13 | TNT (1 stick) |       2.50 |
14 +---------------+------------+
15 7 rows in set (0.27 sec)
 1 mysql> SELECT vend_id, prod_name
 2     -> FROM products
 3     -> WHERE vend_id <> 1003;
 4 +---------+--------------+
 5 | vend_id | prod_name    |
 6 +---------+--------------+
 7 |    1001 | .5 ton anvil |
 8 |    1001 | 1 ton anvil  |
 9 |    1001 | 2 ton anvil  |
10 |    1002 | Fuses        |
11 |    1005 | JetPack 1000 |
12 |    1005 | JetPack 2000 |
13 |    1002 | Oil can      |
14 +---------+--------------+
15 7 rows in set (0.53 sec)
 1 mysql> SELECT prod_name, prod_price
 2     -> FROM products
 3     -> WHERE prod_price BETWEEN 5 AND 10;
 4 +----------------+------------+
 5 | prod_name      | prod_price |
 6 +----------------+------------+
 7 | .5 ton anvil   |       5.99 |
 8 | 1 ton anvil    |       9.99 |
 9 | Bird seed      |      10.00 |
10 | Oil can        |       8.99 |
11 | TNT (5 sticks) |      10.00 |
12 +----------------+------------+
13 5 rows in set (0.00 sec)

  空值检查

 1 mysql> SELECT cust_id
 2     -> FROM customers
 3     -> WHERE cust_email IS NULL;
 4 +---------+
 5 | cust_id |
 6 +---------+
 7 |   10002 |
 8 |   10005 |
 9 +---------+
10 2 rows in set (0.06 sec)

  AND操作符

 1 mysql> SELECT prod_id, prod_price, prod_name
 2     -> FROM products
 3     -> WHERE vend_id = 1003 AND prod_price <= 10;
 4 +---------+------------+----------------+
 5 | prod_id | prod_price | prod_name      |
 6 +---------+------------+----------------+
 7 | FB      |      10.00 | Bird seed      |
 8 | FC      |       2.50 | Carrots        |
 9 | SLING   |       4.49 | Sling          |
10 | TNT1    |       2.50 | TNT (1 stick)  |
11 | TNT2    |      10.00 | TNT (5 sticks) |
12 +---------+------------+----------------+
13 5 rows in set (0.00 sec)

  OR操作符

 1 mysql> SELECT prod_name, prod_price
 2     -> FROM products
 3     -> WHERE vend_id = 1002 OR vend_id = 1003;
 4 +----------------+------------+
 5 | prod_name      | prod_price |
 6 +----------------+------------+
 7 | Detonator      |      13.00 |
 8 | Bird seed      |      10.00 |
 9 | Carrots        |       2.50 |
10 | Fuses          |       3.42 |
11 | Oil can        |       8.99 |
12 | Safe           |      50.00 |
13 | Sling          |       4.49 |
14 | TNT (1 stick)  |       2.50 |
15 | TNT (5 sticks) |      10.00 |
16 +----------------+------------+
17 9 rows in set (0.00 sec)

  IN操作符

 1 mysql> SELECT prod_name, prod_price
 2     -> FROM products
 3     -> WHERE vend_id IN (1002, 1003)
 4     -> ORDER BY prod_name;
 5 +----------------+------------+
 6 | prod_name      | prod_price |
 7 +----------------+------------+
 8 | Bird seed      |      10.00 |
 9 | Carrots        |       2.50 |
10 | Detonator      |      13.00 |
11 | Fuses          |       3.42 |
12 | Oil can        |       8.99 |
13 | Safe           |      50.00 |
14 | Sling          |       4.49 |
15 | TNT (1 stick)  |       2.50 |
16 | TNT (5 sticks) |      10.00 |
17 +----------------+------------+
18 9 rows in set (0.00 sec)

  NOT操作符

 1 mysql> SELECT prod_name, prod_price
 2     -> FROM products
 3     -> WHERE vend_id NOT IN (1002, 1003);
 4 +--------------+------------+
 5 | prod_name    | prod_price |
 6 +--------------+------------+
 7 | .5 ton anvil |       5.99 |
 8 | 1 ton anvil  |       9.99 |
 9 | 2 ton anvil  |      14.99 |
10 | JetPack 1000 |      35.00 |
11 | JetPack 2000 |      55.00 |
12 +--------------+------------+
13 5 rows in set (0.00 sec)
原文地址:https://www.cnblogs.com/liushaobo/p/2998922.html