快速回顧 MySQL:簡單查詢操作

前提要述:參考書籍《MySQL必知必會》

7.1 檢索數據

爲了查詢出數據庫表中的行(數據),使用SELECE語句。

格式:

# 第一種
SELECT * FROM <table_name>;
# 第二種
SELECT field1,field2,... FROM <table_name>;
  • 第一種寫法使用*通配符,會把表中行的列全部查詢出來,而不必取一一列出全部列。但是不推薦使用,這跟INSERT語句的規範寫法一樣。使用*通配符,列的順序一般是列在表定義中出現的順序,但有時候並不是這樣的,表的模式的變化(如添加或刪除列)可能會導致順序的變化。特別是像使用INSERT SELECT這樣的語句,可能會報錯,甚至可能會不會報錯但是數據插入錯誤的列。
  • 推薦使用第二種,第二種查詢方式可以查詢表中行的全部列,也可以查詢表中行的單列或多列。
  • 使用通配符注意事項:雖然使用通配符可能會省事,不用明確列出所需列,但檢索不需要的列通常會降低檢索和應用程序的性能。

例如:

  • 單列查詢:
SELECT stu_name FROM student;
  • 多列查詢:
SELECT stu_name, stu_sex FROM student;
  • 查詢全部列:
SELECT * FROM student;
# 或(推薦)
SELECT stu_id, stu_name, stu_sex FROM student;

7.2 檢索不同的行

因爲在表中有時候需要進行去重操作,可以使用DISTINCT關鍵字,讓SELECT查詢的結果返回不同的值。

格式:

SELECT DISTINCT field1,field2,... FROM <stable_name>;

DISTINCT關鍵字的注意:

  • 如果是單列,那麼使用該關鍵字會將該列作爲判斷去重的條件。
  • 如果是多列,那麼會將該多列作爲判斷去重的條件。
  • 使用這些單列或多列作爲去重條件,如果在表中都是不相同的,那麼就會將所有行都查出來。

7.3 限制結果

SELECT語句返回所有匹配的行。如果爲了返回第一行或前幾行,那麼可以使用LIMIT子句。

格式:

# 第一種(n爲整數)
SELECT field1,field2,... FROM <stable_name> LIMIT n;
# 第二種 (n,m爲整數, n>=0, m>=1)
SELECT field1,field2,... FROM <stable_name> LIMIT n,m;

解釋:

  • 第一種寫法,對於查詢出的數據(行)只返回不多於n行。
  • 第二種寫法,LIMIT後的n表示查詢的開始的位置,m表示要檢索的行數。即,從第n行開始查詢m行。
  • LIMIT後n是從0開始的,所以檢索出來的第一行爲行0而不是行1。因此,LIMIT 1,1 是將檢索出第二行而不是第一行。
  • 如果LIMIT指定要檢索的行數超過表中的行數,那麼MySQL將返回它能返回的那麼多行。

因爲有人會把LIMIT n,m的語法搞混,比如LIMIT 3,4 是從行4開始的3行還是從行3開始的4行?如上面所述,它的意思是從行3開始的4行。
所以,MySQL 5支持LIMIT的另一種代替語法:LIMIT 4 OFFSET 3,意思是從行3開始取4行。

7.4 使用完全限定的表名

到目前爲止SQL例子只通過列名引用列。也可能會使用完全限定的名稱來引用列(同時使用表明和列名),如下:

SELECT <stable_name>.field1,<stable_name>.field2,...
    FROM <stable_name>;

在單表時可能看不出什麼差別,但是在多表查詢時,並且是那種有相關聯的表,因爲有可能兩張表會有相同的列名,所以需要使用完全限定的表名來區分。

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