MySQL學習第三天

2021-10-08 12:35:13 字數 3560 閱讀 6196

如果有其它觀點可以提出來奧

什麼是連線查詢

多張表連起來查詢。

如果把全部資料儲存在一張表內的話,會導致資料重複,導致資料的冗餘。(在乙個資料集合中重複的資料叫做資料冗餘)

連線查詢分類

根據語法劃分:

sql92

sql99

sql99語法結構更清晰一些,表的連線條件和後來的where條件分離了。

sql92如果使用where的話麻煩一些

根據表結構劃分

內連線

等值連線

非等值連線

自連線

外連線

左外連線(左連線)

右外連線(右連線)

全連線(說是挺少用的)

內連線

之等值連線

最大特點:條件是等量關係(相等)

案例:查詢每個員工部門名稱,要求顯示員工和部門名

select

e.ename,d.dname

from

emp e

inner join // inner可以省略,帶著的話**可讀性好點

dept d

one.deptno = d.deptno;

效果±-------±-----------+

| ename | dname |

±-------±-----------+

| clark | accounting |

| king | accounting |

| miller | accounting |

| smith | research |

| jones | research |

| scott | research |

| adams | research |

| ford | research |

| allen | sales |

| ward | sales |

| martin | sales |

| blake | sales |

| turner | sales |

| james | sales |

±-------±-----------+

總結內連線

之等值連線

兩張表連線,條件是乙個等量關係的(相等)就叫做等值連線

內連線

之非等值連線

非等值連線這個最大特點是:連線條件中的關係是非等量關係。

直接總結把,這麼簡單不用案例了把。

總結內連線

之非等值連線

兩張表連線,條件不是乙個等量關係(不相等)就叫做非等值連線

內連線

之自連線

最大特點是:一張表看成兩張表來使用。就是自己連線自己。

案例select

e.ename as 『員工表』,b.ename as 『領導表』

from

emp e

inner join

emp b

one.mgr = b.empno;

效果±-------±-------+

| 員工表 | 領導表 |

±-------±-------+

| smith | ford |

| allen | blake |

| ward | blake |

| jones | king |

| martin | blake |

| blake | king |

| clark | king |

| scott | jones |

| turner | blake |

| adams | scott |

| james | blake |

| ford | jones |

| miller | clark |

±-------±-------+

內連線

之自連線總結

就是把一張表看成兩張來使用,然後尋找兩張表有共同點的地方

就把它們利用起來

外連線

什麼是外連線和內連線有什麼區別呢?

內連線

ab表,匹配查詢,如果能匹配上就展示出來,匹配不上直接乾掉,你看都看不見。不分主和副表,兩張表平等。

外連線

ab倆張表,分主表和副表。主表是查詢的只不過在查詢的時候帶上了副表,之後匹配它不像內連線那樣(匹配不上直接乾掉,你看都看不見)就算匹配不上它也會顯示出來,只不過是以null的形式。

左連線和右連線都有自己的語法

左連線是

left join

右連線是

right join

案例查詢出哪些部門沒有員工

select

d.*from

emp e

right join

dept d

one.deptno = d.deptno

where

e.empno is null;

效果±-------±-----------±-------+

| deptno | dname | loc |

±-------±-----------±-------+

| 40 | operations | boston |

±-------±-----------±-------+

外連線主要特點

主表資料元素無條件全部查詢出來

笛卡爾積現象

在表連線查詢這個方面有一種現象被稱為笛卡爾積現象。

笛卡爾積現象:

當兩張表進行連線查詢的時候,沒有任何條件進行限制最終查詢結果是兩張表記錄條數的乘積。

那麼我們應該怎麼避免笛卡爾積現象呢?

上面說了沒有條件,我們當然是加條件啦。

但是避免了笛卡爾積現象不會減少匹配次數哦(就是兩張表記錄條數的乘積)只不過顯示的是有效值,就是適合條件的值。

關於表的別名好處

第一:執行效率高

第二:可讀性好

『如果字段**現同名的字段用定義別名就很舒服了,隨便說一下如果欄位名重名mysql是識別不了的。

使用和定義

select

e.ename,d.dname

from

emp e,dept d

標識重點黃色基本都要記住除了英文這個也要(滑稽)

MySQL學習第三天

create table if not exists user id tinyint,engine innoob charset utf8 之後使用desc name 你會驚奇的發現tinyint後面多出了乙個4 那是因為tinyint可以表示128,符號也代表一位,它是資料寬度 即便你設定資料寬度...

學習mysql的第三天

今天是週六,複習了前兩天天學習mysql的東西,每天學習的東西都很少,這兩天加起來只學習了這幾個資料型別 int char varchar enum int中可以修飾的詞有 unsigned zerofill auto increment,not null.一 初步了解如何在sqlyog中建立表的操...

學習第三天

額,又是美好的一天!祝賀比利時奪得季軍!下面,還是先看資訊學 今天繼續看倍增。這道題是和倍增沾邊的題,額,其實就是兩邊floyd。但是思路還是可以借鑑的。這道的思路是,使用兩個陣列,乙個是f k u v 這個陣列表示節點u到節點v之間是否距離為2 k,如果是,則為1,否則為0.代表u和v之間是否1s...