MySQL必知必會 —— 檢索數據 排序檢索數據

第四章 檢索數據

1.select語句

從一個或多個表中檢索數據

2.檢索單個列

select 列名 from 表名;

多條SQL語句必須以分號(;)分隔

3.檢索多個列

 要想從一個表中檢索多個列,使用相同的SELECT語句。唯一的不同是必須在SELECT關鍵字後給出多個列名,列名之間必須以逗號分隔。
當心逗號 在選擇多個列時,一定要在列名之間加上逗號,但最後一個列名後不加。如果在最後一個列名後加了逗號,將出現錯誤。

select 列名,列名,列名 from 表名;

4.檢索所有的列

  SELECT語句還可以檢索所有的列而不必逐個列出它們。這可以通過在實際列名的位置使用星號(*)通配符來達到

select * from 表名;

使用通配符 一般,除非你確實需要表中的每個列,否則最好別使用*通配符。雖然使用通配符可能會使你自己省事,不用明確列出所需列,但檢索不需要的列通常會降低檢索和應用程序的性能。
檢索未知列 使用通配符有一個大優點。由於不明確指定列名(因爲星號檢索每個列),所以能檢索出名字未知的列。

5.檢索不同的行

使用distinct關鍵字 返回一列中不相同的行

select distinct 列名 from 表名;

不能部分使用DISTINCT DISTINCT關鍵字應用於所有列而不僅是前置它的列。如果給出SELECT DISTINCT vend_id, prod_price,除非指定的兩個列都不同,否則所有行都將被檢索出來。

6.限制結果

SELECT語句返回所有匹配的行,它們可能是指定表中的每個行。爲了返回第一行或前幾行,使用limit關鍵字

select * from 表名 limit 5;

limit 5表示返回表中前五行的數據

select * from 表名 limit 5,5;

LIMIT 5, 5指示MySQL返回從行5開始的5行。第一個數爲開始位置,第二個數爲要檢索的行數。
行0 檢索出來的第一行爲行0而不是行1。因此,LIMIT 1, 1將檢索出第二行而不是第一行。
在行數不夠時 LIMIT中指定要檢索的行數爲檢索的最大行數。如果沒有足夠的行(例如,給出LIMIT 10, 5,但只有13行), MySQL將只返回它能返回的那麼多行。
MySQL 5的LIMIT語法 LIMIT 3, 4的含義是從行4開始的3行還是從行3開始的4行?如前所述,它的意思是從行3開始的4行,這容易把人搞糊塗。由於這個原因,MySQL 5支持LIMIT的另一種替代語法。LIMIT 4 OFFSET 3意爲從行3開始取4行,就像LIMIT 3, 4一樣。

7.使用完全限定的表名

可以更好的確定所選取的列和表分別在哪個表和數據庫中。

select 表名.列名 from 數據庫名.表名;

第五章

1.排序檢索數據

子句(clause) SQL語句由子句構成,有些子句是必需的,而有的是可選的。一個子句通常由一個關鍵字和所提供的數據組成。子句的例子有SELECT語句的FROM子句
爲了明確地排序用SELECT語句檢索出的數據,可使用ORDER BY子句

select 列名 from 表名 order by 列名;

通過非選擇列進行排序 通常,ORDER BY子句中使用的列將是爲顯示所選擇的列。但是,實際上並不一定要這樣,用非檢索的列排序數據是完全合法的。

2.按多個列排序

select 列名1.列名2,列名3 from 表名
order by 列名1,列名2

先根據列名1排序,如果相同,再根據列名2排序

3.指定排序的方向

數據排序不限於升序排序(從A到Z)。這只是 ***默認的排序順序(升序)***,還可以使用ORDER BY子句以降序(從Z到A)順序排序。爲了進行降序排序,必須指定DESC關鍵字

根據列名1 降序排序

select 列名1,列名2 from 表名 
order by 列名1 DESC;

根據列名1降序,列名2升序

select 列名1,列名2,列名3 from 表名 
order by 列名1 DESC,列名2;

DESC關鍵字只應用到直接位於其前面的列名。
在多個列上降序排序 如果想在多個列上進行降序排序,必須對每個列指定DESC關鍵字。
ORDER BY子句的位置 在給出ORDER BY子句時,應該保證它位於FROM子句之後。如果使用LIMIT,它必須位於ORDER BY之後。使用子句的次序不對將產生錯誤消息。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章