標籤:
四查詢記錄
MySQL資料庫中對於資料表中的記錄最常用的就是記錄的查詢,操作資料表中的記錄大都是記錄的查詢。尋找
記錄的文法結構為:
SELECT select_expr [,select_expr ...]
[
FROM table_refereneces
[WHERE where_condition]
[GROUP BY {col_name | position } [ASC | DESC],...]
[HAVING where_condition]
[ORDER BY {col_name | expr | position} [ASC | DESC],...]
[LIMIT {[offset,] row_count | row_count OFFSET offset}]
];
(1)最簡單的查詢命令
1)顯示當前伺服器版本
SELECT VERSION();
2)顯示當前日期時間
SELECT NOW();
3)顯示目前使用者
SELECT USER();
4)顯示當前資料庫
SELECT DATABAE();
來看其中的兩個例子:
(2)查詢運算式解析
對於查詢運算式select_expr,每一個運算式表示想要的一列,必須有且至少一個。多個列之間以英文逗號分隔。
星號(*)表示所有列。table_name.*可以表示命名表的所有列。查詢運算式可以使用[AS] alias_name為其賦予列名。別
名可用於GROUP BY,ORDER BY或HAVING子句。
例子:
1)查看資料表所有列的記錄
SELECT * FROM users;
SELECT * FROM users3;
2)查看資料表指定的列的記錄
查看資料表users3中的id欄位和username欄位的兩列記錄,其中你所寫的查詢運算式的前後位置不一樣,查詢
的結果也不一樣。下面就是例子:
SELECT id,username FROM users3;
SELECT username,id FROM users3;
3)使用table_name.*可以表示命名表的所有列
SELECT users3.id,users3.username FROM users3;
上述的例子並沒有體現出這樣查詢的好處,在以後我們學習了多表之間的串連查詢,這樣寫的好處就會立馬體現
出來,關於多表之間的串連查詢我們後續會深入學習。
4)查詢運算式可以使用[AS] alias_name為其賦予列名
SELECT id AS userID,username AS uname FROM users3;
4)where語句進行條件查詢
條件運算式表達的意思是對記錄進行過濾,如果沒有指定WHERE字句,則顯示所有記錄。在WHERE表達式
中,可以使用MySQL支援的函數或運算子。在這裡不做過多的介紹,以後再進行詳細的解析。
SELECT id,username FROM users3 WHERE id % 2 = 0;
5)GROUP BY語句對查詢結果分組
[GROUP BY {col_name | position} [ASC | DESC],... ]
GROUP BY語句進行分組顯示還可以指定列的名稱以及列的位置。ASC表示顯示的查詢結果按照預設的升序排
列,DESC表示降序排列。
SELECT * FROM users3;
按性別進行分組:
SELECT sex FROM users3 GROUP BY sex;
或者SELECT sex FROM users3 GROUP BY 1;
6)HAVING語句設定分組條件
分組條件:[HAVING where_condition]
SELECT sex,age FROM users3 GROUP BY 1 HAVING age > 23;
SELECT sex FROM users3 GROUP BY 1 HAVING count(id) > 12;
SELECT sex FROM users3 GROUP BY 1 HAVING count(id) > 1;
7)ORDER BY語句對查詢結果排序
[ORDER BY {col_name | expr | position} [ASC | DESC],... ]ORDER BY語句進行分組顯示還可以指定列的名
稱,運算式以及列的位置。ASC表示預設的升序排列,DESC表示降序排列。
例子:
SELECT * FROM users3;
SELECT * FROM users3 ORDER BY id DESC;
兩個欄位進行排序
SELECT * FROM users3 ORDER BY age,id DESC;
上述的結果表示;首選是以age欄位進行升序排列,如果有重複的數位話,再以id欄位的降序開始排列,這就輸
出了上面的結果。需要注意的是,如果指定的第一個需要排列的欄位無法進行排序,只能進行第二個欄位排列;如果
指定的第一個欄位能排序,那麼第二個欄位視情況而定。
8)LIMIT語句限制查詢數量
限制查詢結果返回的數量:[LIMIT {[offset,] row_count | row_count OFFSET offset}]預設的是返回所有記錄,因
此返回查詢結果的數量就需要我們自己指定。這裡最需要注意的是記錄都是從索引0開始記錄的
例子:
1指定一個數字,返回的是查詢結果的數量,當然是從索引為0開始計算的。
SELECT * FROM users3 LIMIT 2;
2指定兩個數字,第一個數字代表返回查詢記過的開始索引位置,第二數字代表但會查詢結果的數量。
SELECT * FROM users3 LIMIT 3,2;
3GROUP BY和LIMIT複合陳述式
SELECT * FROM users3 ORDER BY id DESC;
SELECT * FROM users3 ORDER BY id DESC LIMIT 2,2;
這裡結果表示的是:分組查詢的結果不管是正序排列還是倒序排列,LIMIT限制語句的索引位置都是從索引0的位
置開始的,這裡所說的索引都是記錄的索引位置,也就是記錄的初始位置開始。
MySQL學習14:操作資料表中的記錄(二)