mysql資料庫的查詢語句是什麼

2022-01-05 13:00:16

查詢語句: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其它相關文章!