查詢語句:1、「select * from 表名;」,可查詢表中全部資料;2、「select 欄位名 from 表名;」,可查詢表中指定欄位的資料;3、「select distinct 欄位名 from 表名」,可對錶中資料進行去重查詢。
本教學操作環境:windows7系統、mysql8版本、Dell G3電腦。
1、普通查詢
(1)命令:select * from <表名>;//通匹
(2)命令:select <要查詢的欄位> from <表名>;
2、去重查詢(distinct)
命令:select distinct <要查詢的欄位> from <表名>
3、排序查詢(order by)
升序:asc
降序:desc
降序排列命令:select <要查詢的欄位名> from <表名> order by <要查詢的欄位名> desc
不加desc一般預設為升序排列
4、分組查詢(group by)
命令:select <按什麼分的組>, Sum(score) from <表名> group by <按什麼分的組>
假設現在又有一個學生成績表(result)。要求查詢一個學生的總成績。我們根據學號將他們分為了不同的組。
命令:
mysql>select id, Sum(score) from result group by id;
一、等值查詢
現在有兩個表:
現在要查詢年齡小於20歲學生的不及格成績。
語句:
select stu.id,score from stu,result where stu.id = result.id and age < 20 and score < 60;
它的查詢如下圖所示:
可見等值查詢效率太低
二、連線查詢
1、外連線查詢
(1)左外連線查詢
假設我們依舊使用的是上面的兩個表,任然查詢年齡小於20歲學生的不及格成績
我們利用左外連線查詢,先將學生表中所有年齡小於20歲的學生取出來,再在成績表中將所有成績小於60的學生取出來,然後再進行配對,我們會發現效率大大得提高,只用匹配四次就可以找到。
如下圖所示:
語句為:
select a.id,score from (select id,age from stu where age < 20) a (過濾左表資訊) left join (select id, score from result where score < 60) b (過濾右表資訊) on a.id = b.id;
左外連線就是左表過濾的結果必須全部存在。如果存在左表中過濾出來的資料,右表沒有匹配上,這樣的話右表就會出現NULL;
(2)右外連線查詢
select a.id,score from (select id,age from stu where age < 20) a (過濾左表資訊) right join (select id, score from result where score < 60) b (過濾右表資訊) on a.id = b.id;
左外連線就是左表過濾的結果必須全部存在
如圖:
我們發現過濾出來的表進行的匹配只有兩條滿足條件(紅色代表條件滿足),但最後的結果卻是:
左表不匹配的資料改為空,右表過濾出來的資料都要存在。
(3)全外連線查詢
結合了左外連線和右外連線,使得左表和右表的資料都存在。
2、內連線查詢
只篩選匹配結果
比如過濾的結果如下:
最後的結果為:
只匹配我們需要的結果
語句為:
select a.id,score from (select id,age from stu where age < 20) a (過濾左表資訊) inner join (select id, score from result where score < 60) b (過濾右表資訊) on a.id = b.id;
【相關推薦:】
以上就是mysql資料庫的查詢語句是什麼的詳細內容,更多請關注TW511.COM其它相關文章!