9 MySQL中的連線查詢

2022-08-23 16:09:10 字數 1620 閱讀 6366

mysql中的連線查詢

連線查詢

連線查詢:將多張表進行記錄的連線(按照某個指定的條件進行資料的拼接)

最終結果:記錄數可能有變化,字段數一定會增加(至少兩張表的合併).

連線查詢的意義:在使用者檢視資料的時候需要顯示的資料來自多張表.

連線查詢 : join 使用方式 : 左表 join 右表 ;

連線查詢分類:

sql中將連線查詢分為四類:

內連線 , 外連線 , 自然連線 , 交叉連線

交叉連線:

cross join :從一張表中迴圈取出每一條記錄,每條記錄都去另外一張表

進行匹配 , 匹配一定保留(沒有條件匹配),而連線本身欄位就會增加(保留)最終形成的結果叫做:笛卡爾積

基本語法:

左表 cross join 右表 ; 等價於 from 左表,右表;

笛卡爾積沒有意義: 應該盡量避免(交叉連線沒什麼用)

交叉連線存在的價值:保證連線這種結構的完整性

內連線:

內連線: [inner] join 從左表中取出每一條記錄,去右表中與所有的記錄進行匹配:

匹配必須是某個欄位在左表中與右表中相同最終才會保留結果,否則不保留

基本語法:

左表 [inner] join 右表 on 左表.欄位 = 右表.欄位;

on表示連線條件,條件字段就是代表相同的業務含義.

字段別名已經表別名的使用: 在查詢的時候,不同表有同名字段,這個時候需要加上表名才能區分,而表名太長通常使用別名.

內連線可以沒有連線條件: 就是沒有on之後的內容,這個時候系統會保留所有的結果即笛卡爾積

內連線可以使用 where 代替 on ; where沒有on的效率高

外連線:

外鏈結 outer join 以某張表為主,取出裡面的所有記錄,每條與另外一張表進行連線:不管能不能匹配上條件,最終都會保留,能匹配的正確保留,不能匹配其他的字段都至空 為null

外鏈結分為兩種: 是以某張表為主:有主表left join : 左外連線(左連線) , 以左表為主right join : 右外連線(右連線) , 以右表為主

基本語法:

左表 left join 右表 on 左表.欄位 = 右表.欄位;

-- on不能省略

左表 right join 右表 on 左表.欄位 = 右表.欄位;

-- on不能省略

自然連線:

自然連線: natural join 自然連線,就是自動匹配連線條件:以欄位名字作為匹配模式(同名字段作為條件,多個同名字段都作為條件)自然連線分為兩種 : 自然內連線 和 自然外連線

基本語法:

自然內連線 : select * from 左表 natural join 右表 using 條件

自然左外連線 : select * from 左表 natural left join 右表 --on可以省略

自然右外連線 : select * from 左表 natural right join 右表

自然連線 : 沒什麼意義.

9 MySQL的資料排序

1 單個欄位的排序order by desc降序 0 9,a z,a z mysql select prod name,prod price from products order by prod price prod name prod price carrots 2.50 tnt 1 stick...

9 Mysql的體系結構概覽

整個mysql server由以下組成 1 連線層 最上層是一些客戶端和鏈結服務,包含本地sock 通訊和大多數基於客戶端 服務端工具實現的類似於 tcp ip的通訊。主要完成一些類似於連線處理 授權認證 及相關的安全方案。在該層上引入了執行緒池的概念,為通過認證安全接入的客戶端提供執行緒。同樣在該...

9 mysql臨時表 複製表

mysql臨時表在我們儲存一些臨時資料時非常有用的,臨時表只有當前連線可見,當關閉連線時,mysql會自動刪除表並釋放表空間。1 建立臨時表 create temporary table table name 當使用show tables命令顯示資料表列表時,將無法看到臨時表。2 刪除臨時表 預設情...