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)

 

 

你可能感兴趣的:(mysql)