MySQL-10連接查詢

需求 查詢出所有的寫生,且要顯示學(xué)生所在班級的信息

1.連接查詢 :將多張表 進行記錄的連接(按照某個指定的條件,進行數(shù)據(jù)的拼接)

最終結(jié)果 記錄數(shù)可能有變化,字段數(shù)一定會增加(至少兩張表合并)

連接咨詢的意義,在用戶查看數(shù)據(jù)的時候,需要顯示的數(shù)據(jù)來自多張表

連接查詢:join

使用方式 :左表 join 右表?

其中 左表為在join 關(guān)鍵字左邊的表,

右表為在join關(guān)鍵字右邊的表

三張表的連接查詢

2.連接查詢在SQL中分成四類

內(nèi)連接 外連接 自然連接 交叉連接

--1.交叉連接 cross join

從一張表中,循環(huán)取出每一條記錄,每條記錄都去另外一張表中進行匹配:

匹配一定保留(沒有條件匹配),而連接本身字段就會增加(保留),最終形成結(jié)果為笛卡爾集

1.select * from my_stu cross join king_class ;

其中 select * from my_stu;

select * from king_class;

sososo

select * from my_stu cross join king_class;

----->等價于 select * from my_stu,king_class;

實際開發(fā)中cross join 并沒有什么卵用,其存在價值在于 保證連接這種結(jié)構(gòu)的完整性

--2.內(nèi)連接 inner join 其中 inner 關(guān)鍵字可以省略

從左表中取出每一條記錄,去右表中與所有的記錄進行匹配(匹配必須是某個條件在左表中和在右表中相同)才會保留結(jié)果,否則不保留;

基本語法

左表 [inner] join 右表 on 條件 and 條件and 條件。。。。。

inner join 不加 限制語句 on。。。。。。。時,結(jié)果相當于一個笛卡爾集

其中on 表示連接條件,條件字段就是代表相同的業(yè)務(wù)含義

select * from my_stu inner join stu_info;

inner join 添加 on 。。。。。條件?

select * from my_stu inner join stu_info on my_stu.id = stu_info.id

其中

某字段 為兩張表中特有的,其表名可以省略

例如=====>

select * from my_stu inner join stu_info on class_id = stu_info.id?

字段別名以及表別名的使用:

在查詢數(shù)據(jù)的時候,不同表有同名字段,這個時候需要加上表名進行區(qū)分

條件的添加2

更多篩選條件的添加

更多條件的添加

連接查詢時的字段別名和表別名的使用

select s.* ,c.name as c_name,c.id from my_stu as s inner join stu_info as c on s.class_id = c.id;

select s.* ,c.name as c_name,c.id from -- 字段別名

my_stu as s inner join stu_info as c -- 表別名

?on s.class_id = c.id;

這個例子也說明了 select 。。。。。。。 from 是基于 后面一部分存在的 因為后半部分后執(zhí)行,才在select中可以訪問 s.*

on 和 where?

內(nèi)連接 還可以使用 where 代替 on 關(guān)鍵字 但是(on 的效率高于 where)

--3.外連接?

外連接? outer join 以某張表為主,取出里面的所有記錄,每條與另外一張表進行連接,無論能不能匹配上條件,最終都會保留:能匹配,正確保留,不能匹配,其他表的字段都置空NULL

外連接分為兩種:是以某張表為主:有主表

left join 左外連接(左連接),以左表為主表

right join? 右外連接(右連接),以右表為主表

基本語法:

左表 left / right join 右表 on 條件(如: 左表.字段 = 右表.字段)且 外連接必須有條件

左連接

左表為主表 最終記錄數(shù)至少不少于左表已有的記錄數(shù)?

右連接

右表為主表 最終記錄數(shù)至少不少于右表已有的記錄數(shù)?

雖然左連接和右連接有主表差異,但是顯示的結(jié)果,左表的數(shù)據(jù)在左邊,右表的數(shù)據(jù)在右邊

左連接和右連接可以互轉(zhuǎn)

--4.自然連接 natural join?

既自動匹配連接條件:系統(tǒng)以字段名作為匹配模式(同名字段就作為條件,多個同名字段都作為條件)

自然連接分為:

自然內(nèi)連接

左表 natural join 右表;

自然內(nèi)連接
自然連接自動使用同名字段作為連接條件,連接之后會合并同名字段

自然外連接

左表 natural left/right join 右表

select * from my_stu natural right join stu_info;


其實 內(nèi)連接和外連接都可以模擬自然連接;使用同名字段 ,合并字段

左表 left / right? inner join 右表 using (字段名);--同名字段作為連接條件:自動合并條件

外連接模擬自然外連接

利用using 模擬自然外連接
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 數(shù)據(jù)準備 回顧 記錄操作:寫操作:INSERT,UPDATE,DELETE讀取操作:SELECT 這章主要學(xué)習(xí):子...
    齊天大圣李圣杰閱讀 1,134評論 0 4
  • ?感賞自己今天又重聽了紫雨老師和錦明老師的課程,用心聽并且認真理解之后才感覺自己那么匱乏,以后一定會抽空多聽多讀。...
    苦咖啡_0a98閱讀 308評論 0 6
  • 餐飲真的是低門檻,有錢的可以投資店鋪好點,沒錢的開個小店。但是一個商圈內(nèi)顧客群體總數(shù)是不變的。只要有店鋪新開就從在...
    rj簡簡單單閱讀 236評論 0 1
  • 他說把朋友歸類細分
    小小面閱讀 223評論 0 0
  • 我是我,如果見面沒有話說就不要說,除了他,我有自己的人生價值。 我和男朋友是在學(xué)生會認識的,那一年他大三,我大一。...
    梁某某back閱讀 135評論 0 0

友情鏈接更多精彩內(nèi)容