利用空閑時間花幾分鐘回顧一下
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>;
在單表時可能看不出什么差別,但是在多表查詢時,并且是那種有相關聯的表,因為有可能兩張表會有相同的列名,所以需要使用完全限定的表名來區分,
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/85978.html
標籤:MySQL
