MYSQL基础【3】- 检索数据

一、SELECT 基本检索语法

(1)检索单个列
SELECT prod_name FROM products;

注1:prod_nam 是列名, products是表名, 语句后面用分号(; )结束;SQL语句不区分大小写,但是习惯上对SQL所有关键字使用大写,而对所有列和表名使用小写,这样做使代码更容易阅读和调试。

(2)检索多个列
SELECT pro_id, prod_name, prod_price FROM products;

注2:在选择多个列时,列名之间使用(逗号)‘,’隔开

(3)检索所有列
SELECT * FROM products;

注3:如果给定一个通配符(*),则返回表中所有列,列的顺序一般是列在表定义中出现的顺序。一般的,除非你确实需要表中的每一列,否则最好不要用 * 通配符,虽然使用通配符可能会使你省事,但检索不需要的列通常会降低检索和应用程序的性能。

(4)检索不同的行
SELECT DISTINCT vend_id FROM products;

注4:DISTINCT关键字应用于所用列而不是前置它的列

(5)限制结果
  • 语法形式1:
SELECT prod_name FROM products LIMIT 5; 

注5:LIMIT 5指示MYSQL返回不多于5行

  • 语法形式2:
SELECT prod_name FROM products LIMIT 5, 5

注6:LIMIT 5, 5指示MYSQL返回从行5开始的5行,还要知道检索出来的第一行是行0而不是行1, 如: LIMIT 1, 1,将检索出第二行而不是第一行,在行数不够时,MYSQL返回它能返回的那么多行。

  • 语法形式3:
SELECT  prod_name FROM products LIMIT 5 OFFSET 3

注7:为了防止LIMIT 3, 4区分不清楚,所以写成了 LIMIT 5 OFFSET 3,表示从行3开始的4行。

(6)使用完全限定的表名
SELECT products.prod_name FROM products;
SELECT products.prod_name FROM crashcourse.products;

上面的products表示表名, crashcourse表示数据库名。
这点在多表操作时很有用。

二、排序检索数据

原因:用SELECT prod_name FROM products 返回某个数据表中的单个列,但其输出没有特定的顺序,如果不排序,数据一般将以它在底层中出现的顺序显示。为此,可以使用ORDER BY子语句。

(1)按单个列进行排序
SELECT prod_name FROM products ORDER BY prod_name;

注8:ORDER BY 子句中使用的列将为显示所选择的列,但是,实际上并不一定要这样,用非检索的列排序数据是完全合法的。

(2)按多个列排序
SELECT prod_id, prod_price, prod_name FROM products ORDER BY prod_price, prod_name;

注9:为了按多个列进行排序,只要指定列名,列名之间用逗号隔开,对上面的语句来说,首先对prod_price进行排序,当prod_price相同时,然后再对prod_name进行排序。

(3)指定排序方向

ORDER BY 默认的是升序排列,使用DESC关键字可以进行降序排列。

  • ORDER BY后仅跟一个字段
SELECT prod_id, prod_price, prod_name FROM products ORDER BY prod_price DESC;
  • ORDER BY后跟多个字段
SELECT prod_id, prod_price, prod_name FROM products ORDER BY prod_price DESC, prod_name;

注10:DESC关键字只应用到直接位于其前面的列名,在上面的例子中,只对prod_price列指定DESC,对prod_name没有指定,所以对prod_price进行降序排列,而对prod_name进行升序排列。如果要对多个列都进行降序排列,则需要对每个字段都指定DESC关键字。

DESC相反的关键字是ASC,在升序时可以指定它,但ORDER BY默认是升序排列的。

(4)与LIMIT结合
SELECT prod_price FROM products ORDER BY prod_price DESC LIMIT 1;

注11:LIMIT子语句要放在ORDER BY子语句后面.

参考资料:
【1】MYSQL必会必知

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值