首頁 > 軟體

mysql連線查詢詳解

2022-05-19 13:01:55

1.連線查詢

作用:當查詢結果的列來源於多張表時,需要將多張表連線成一個大的資料集,再選擇合適的列返回

2、連線型別

內連線

定義:

內連線查詢:查詢結果為兩個表匹配到的資料

語法1:

select * from 表1
inner join 表2 on 表1.列 = 表2.列

例:查詢學生資訊及學生成績

 語法2:

 select * from 表1,表2 on 表1.列 = 表2.列

注:通常不使用此語法,效率較低

 3個表連線

-- 查詢學生資訊及學生的課程對應的成績

顯示指定列

 

左連線

定義:

查詢的結果為兩個表匹配到的資料加左表特有的資料,對於右表中不存在的資料(匹配不到)使用null填充

語法:

select * from 表1
left join 表2 on 表1 .列 = 表2.列

例:

查詢所有學生的成績,包括沒有成績的學生

 例:

查詢所有學生的成績,包括沒有成績的學生,需要顯示課程名

右連線 

 定義:

右連線查詢:查詢結果為兩個表匹配到的資料加右表特有的資料,對於左邊中不存在的資料使用null填充

語法:

select * from 表1
right join 表2 on 表1 .列 = 表2.列

例:查詢所有學生的成績,包括沒有成績的學生 

 例:

查詢所有學生的成績,包括沒有成績的學生,需要顯示課程名

自關聯

定義

連線查詢的一種應用,對同一個表查詢多次,把查詢多次得到的結果連線組成新的結果 

主要應用場景:資料有上下級關係,並且存於同一個表中

 例:查詢河南省的所有城市

 

例:查詢鄭州市的所有區縣 

 

例:查詢河南省所有區縣

 子查詢

定義

在一個select 語句中,嵌入另外一個select語句,那麼嵌入的那個select語句稱之為子查詢語句

主查詢

外城的select稱之為主查詢語句

主查詢和子查詢的關係

子查詢是嵌入到主查詢中子查詢是輔助主查詢的,要麼充當條件,要麼充當資料來源子查詢是可以獨立存在的語句是一條轉正的select語句 

子查詢充當條件

以下例子中子查詢返回結果只有一個值(一行一列),這種稱之為標量子查詢

例1:查詢大於平均年齡的學生

-- 查詢班裡學生的平均年齡
SELECT AVG(age) FROM students --21.5833
-- 查詢大於平均年齡的學生
SELECT * from students where age > 21.5833
SELECT * FROM students where age >(SELECT AVG(age) FROM students);

以下例子返回資料結果是一列資料(一列多行),這種稱之為列子查詢

例: 查詢18歲學生的成績,要求顯示成績

-- 學生表中查詢18歲學生的學號
SELECT studentNo from students WHERE age = 18
-- 成績表中根據學號查詢成績
SELECT * FROM scores where studentNo in ('002','006' )
SELECT * FROM scores where studentNo in (SELECT studentNo from students WHERE age = 18 )

 以下例子查詢的結果是一行(一行多列),這種稱之為行子查詢

例:查詢和王昭君同班、同齡的學生資訊 

SELECT class,age from students where name = '王昭君'
SELECT * from students where class = '1班' and age = 20
SELECT * from students where (class,age) = ('1班' , '20')
SELECT * from students where (class,age) = (SELECT class,age from students where name = '王昭君')

 子查詢充當資料來源

以下例子子查詢返回的結果是多行多列(相當於一個表),這種稱之為表級子查詢;

例:查詢資料庫和系統測試的課程成績

子查詢中特定關鍵字使用 

in範圍 

格式:主查詢where條件in(列子查詢)

any|some任意一個

格式:主查詢where 列 = any(列子查詢)

在條件查詢的結果中匹配任意一個幾個,等價於in  

all

格式:主查詢where列 = all(列子查詢):等價於裡面所有

格式:主查詢where列<>all(列子查詢):不等於其中所有 

到此這篇關於mysql連線查詢的文章就介紹到這了,更多相關mysql連線查詢內容請搜尋it145.com以前的文章或繼續瀏覽下面的相關文章希望大家以後多多支援it145.com!


IT145.com E-mail:sddin#qq.com