1. SELECT 语句
1.1 检索单个列
关键字SELECT后写需要查询的列名
1 2 3 4 5 6 7 8 9
   | mysql> select prod_name from products; + | prod_name      | + | Fuses          | | JetPack 1000   | | TNT (5 sticks) | + 14 rows in set (0.00 sec)
   | 
 
- 多条SQL语句必须使用分号(;)分隔,推荐做法.
 
- SQL语句不区分大小写
 
1.2 检索多个列
和检索单列类似,关键字SELECT后写需要查询的列名,逗号分隔
1 2 3 4 5 6 7 8 9
   | mysql> select prod_id,prod_name,prod_price from products; + | prod_id | prod_name      | prod_price | + | ANV01   | .5 ton anvil   |       5.99 | | ANV02   | 1 ton anvil    |       9.99 | | ANV03   | 2 ton anvil    |      14.99 | + 14 rows in set (0.00 sec)
   | 
 
1.3 检索所有列
使用通配符(*)即可
最好别使用*通配符,虽然此种写法方便,但是索引不需要的列通常会降低检索和应用程序的性能
1.4 检索不同行并去重
使用关键字DISTINCT,指示MySQL只返回不同值,从而达到去重目的.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22
   | mysql> select vend_id from products; + | vend_id | + |    1001 | |    1002 | |    1003 | |    1003 | |    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.01 sec)
   | 
 
- DISTINCT关键字必须直接放在列名的前面
 
- 不能不分使用DISTINCT,即DISTINCT关键字应用于所有列而不仅是前置它的列
 
1.5 限制结果 Limit使用
只返回指定个数的结果,在语句后使用关键字 limit,关键字后加行数即可
1 2 3 4 5 6 7 8
   | mysql> select prod_name from products limit 2; + | prod_name    | + | .5 ton anvil | | 1 ton anvil  | + 2 rows in set (0.00 sec)
   | 
 
指定检索的开始行和行数 limit m,n
1 2 3 4 5 6 7 8
   | mysql> select prod_name from products limit 0,2; + | prod_name    | + | .5 ton anvil | | 1 ton anvil  | + 2 rows in set (0.00 sec)
   | 
 
第一个数为开始位置,第二个数为要检索出来的行数.
上面语句的意思 : 从第0行开始,检索出2行的数据.
在LIMIT中指定要检索的行数为检索的最大行数,如果没有足够的行,MySQL将只返回它能返回的那么多行.
1.6 使用完全限定的表名
完全限定的表名可以默认不添加,但是在某些场景下(后续介绍)完全限定的表名还是非常有必须要的.
1 2 3 4 5 6 7 8 9
   | mysql> select products.prod_name from products; + | prod_name      | + | .5 ton anvil   | | 1 ton anvil    | | 2 ton anvil    | + 14 rows in set (0.00 sec)
   | 
 
2. 排序检索数据
2.1 按单个列排序
数据默认检索出来的顺序是按照数据最初在表中被添加的顺序,我们可以使用ORDER BY子句来显示的指定排序字段.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
   | 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)
   | 
 
此处是按照字典书序排序
2.2 按多个列排序
多个列排序,只要指定列名,列名之间用逗号分隔即可.
检索三个列,首先按价格排序,然后再按名称排序:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
   | 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排序.
2.3 指定排序方向
数据排序分为两种 : 升序(ASC)和降序(DESC). 默认的排序方式是升序.
DESC关键字只应用到直接位于其前面的列名,如果想在多个列上进行降序排序,就必须对每个列指定DESC关键字
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
   | mysql> select prod_id,prod_price,prod_name from products order by prod_price desc,prod_name desc; + | prod_id | prod_price | prod_name      | + | JP2000  |      55.00 | JetPack 2000   | | SAFE    |      50.00 | Safe           | | JP1000  |      35.00 | JetPack 1000   | | ANV03   |      14.99 | 2 ton anvil    | | DTNTR   |      13.00 | Detonator      | | TNT2    |      10.00 | TNT (5 sticks) | | FB      |      10.00 | Bird seed      | | ANV02   |       9.99 | 1 ton anvil    | | OL1     |       8.99 | Oil can        | | ANV01   |       5.99 | .5 ton anvil   | | SLING   |       4.49 | Sling          | | FU1     |       3.42 | Fuses          | | TNT1    |       2.50 | TNT (1 stick)  | | FC      |       2.50 | Carrots        | + 14 rows in set (0.00 sec)
   | 
 
在字典排序中,A被视为与a相同,这是MySQL等大多数数据库管理系统默认行为,
如果想要更改需要DBA的帮助
2.4 ORDER BY与LIMIT组合
ORDER BY与LIMIT组合,可以找出一列中最高或最低的值
1 2 3 4 5 6 7
   | mysql> select prod_price from products order by prod_price desc limit 1; + | prod_price | + |      55.00 | + 1 row in set (0.00 sec)
   | 
 
ORDER BY子句必须在FROM子句之后,LIMIT子句必须在ORDER BY子句之后
但是这两个关键字联合使用会有问题,后面会单独讲解.
Tips
欢迎收藏和转发,感谢你的支持!(๑•̀ㅂ•́)و✧ 
欢迎关注我:后端小哥,专注后端开发,希望和你一起进步!
