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

利用空閒時間花幾分鐘回顧一下mysql

7.1 檢索數據

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

格式:數據庫

# 第一種
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查詢的結果返回不一樣的值。code

格式:table

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

DISTINCT關鍵字的注意:class

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

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>;

在單表時可能看不出什麼差異,可是在多表查詢時,而且是那種有相關聯的表,由於有可能兩張表會有相同的列名,因此須要使用徹底限定的表名來區分。

相關文章
相關標籤/搜索