mysql學習之路_鏈接查詢

回顧

列屬性:主鍵,自增加,惟一鍵。php

關係:一對一,一對多,多對多spa

三層範式:設計

1NF:字段設計必須符合原子性排序

2NF:不存在部分依賴(沒有複合主鍵)it

3NF:不存在傳遞依賴(實體單獨成表)class

逆規範化:效率磁盤空間博弈;效率

 

高級數據操做:select

新增操做:主鍵衝突(更新與替換),蠕蟲複製循環

更新操做:限制更新數量:limit分頁

刪除操做:限制刪除數量:limit。清空表結構:truncate

查詢操做:select選項;

字段別名: 數據源(單表,多表,子查詢[別名]

Where子句(條件判斷:從磁盤)

Group by子句(判斷結構,針對分組統計結果)

Order by子句(排序,多字段排序)

Having 子句 (判斷結果,針對分組進行統計結果)

Limit子句 (限制記錄數,分頁)

鏈接查詢

鏈接查詢:將多張表(能夠大於2張)進行記錄的鏈接(按照某個指定條件進行數據拼接)

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

鏈接查詢的意義:用戶查看數據的時候,須要現實的數據來自多張表。

鏈接查詢分類

Sql將鏈接查詢分爲四類:外連接,天然鏈接,內鏈接,交叉鏈接

鏈接查詢:join,使用方式 左表join 右表;

         左表;在join關鍵字左邊的表;

         右表:在join 關鍵字右邊的表;

   

交叉鏈接

Cross join從一張表中循環取出每一條記錄,每張記錄都去另外一張表進行匹配。

匹配必定保留(沒有條件匹配),而鏈接自己字段就全增長(保留),最終會造成的結果叫作笛卡爾積

基本語法:

左表 cross join 右表;==from 左表,右表;

笛卡爾積沒有意義:應該儘可能避免(交叉查詢沒用)交叉鏈接的價值:保證鏈接結構的完整性。

例:select * from my_stu cross join my_class;

 

內鏈接:

內鏈接:[inner] join;

        從左表中取出沒一條記錄去右表中全部記錄進行匹配,匹配必須是某個條件,在左表中與右表中相同的最終會保留,不然不保留。

基本語法

左表 [inner] 右表 on 左表.字段=右邊.字段;

On 表示鏈接條件;

條件字段就是表明相同的業務含義

如:內鏈接

Select *from my_stu a join my_class b

On a.c_id=b.id;

php中會覆蓋:

  字段別名以及表別名對的使用:在查詢數據的時候,不一樣表有同名字段,這個時候須要加上表名才能區分,而表名太長,一般使用別名。

內鏈接可使用where 代替on關鍵字(where沒有on效率高)

外連接:

外連接:outer  join ,以某張表爲主,取出裏面全部的記錄,而後每條與另外一表進行鏈接,無論能不能匹配上條件,最終都會保留。

能匹配,正確保留,不能匹配其餘字段制空null

外鏈接分爲兩種:以某張表爲主

以左表爲主: left join :左外鏈接

以右表爲主 right join :右外鏈接

 

基本語法

左表  left/right join 右表 on 左表.字段=右表.字段;

例: select * from My_stu a left/right  join My_class  b

On a.c_id=b.id

 雖然左鏈接和右鏈接有主表差別,可是顯示的結果永遠是左表數據在左邊,右表數據在右邊,左鏈接和右鏈接能夠相互轉

 天然鏈接

Natural join :自動匹配鏈接條件,系統以字段名爲匹配模式(同名字段做爲條件,多個同名字段做爲條件)

天然鏈接分爲天然內鏈接。天然外鏈接

天然內鏈接 select * from My_stu

             Natural join my_class;

天然外鏈接 :左表 natural left/right join 右表

例:select * from my_stu natural left/right join my_class;

其實 內鏈接與外鏈接均可以模擬天然鏈接!!!!!!!!!

相關文章
相關標籤/搜索