養成習慣,先讚後看!!!
3. 內連線
相信大家一定都做過多表的連表查詢,並且這其中的查詢方式也比較多樣.
可能主要就是下面這幾種方式:
select * from tablea,tableb where tablea.aid=tableb.bid;
select * from tablea left join tableb on tablea.aid=tableb.bid;可能第一種通過where語句查詢,大家都能理解.select * from tablea right join tableb on tablea.aid=tableb.bid;
select * from tablea inner join tableb on tablea.aid=tableb.bid;
但是不知道大家有沒有去嘗試過理解下面關於內連線與外連線查詢方式的區別 ,接下來我們先通過一張圖來演示一下連線的整個層級關係:
接下來我們再來詳細講解他們之間的區別.
我們先看看這次使用的兩個表的結構以及資料:
我們先通過兩個例子來讓大家看看實際的效果我們再來細講:
顯然這裡是以tablea的資料為基準的
顯然這裡是以tableb的資料為基準的
看完這兩個例子,想必大家也能夠自己分析出來了,顯然永遠是左表的資料是完整的,右表中只會查詢出與左表匹配的資料,如果不匹配就不顯示,顯示為空.整個過程都是以左表為基準
的
我們也是通過兩個例子來細講:
顯然這裡是以tableb的資料為基準的
顯然這裡是以tablea的資料為基準的
看完這兩個例子,想必大家也能夠自己分析出來了,顯然永遠是右表的資料是完整的,左表中只會查詢出與右表匹配的資料,如果不匹配就不顯示,顯示為空.整個過程都是以右表為基準
的
到這裡我們就要稍微區分一下基準表的定義,我們切不可將那個表名在前就覺得它是基準表,這裡還是通過下面兩張圖:
這裡我們通過與上面外連線的對比分析之後就可以看出來,內連線整個更加能夠體現資料的完整性,上圖我們可以看出內連線只會顯示所有產生連線的資料,那些不匹配的資料,不管是左表中的還是右表中的.
通過上面幾個例子.相信大家就能夠更加理解mysql中這幾種連線的意義了.
mysql 內連線 左連線 右連線
記錄備忘下,初始資料如下 drop table ifexists t demo product create table ifnot exists t demo product proid int 20 proname varchar 20 price int 10 primary key proi...
mysql 內連線,左連線,右連線
本文 於 用兩個表 a table b table 關聯欄位a table.a id和b table.b id來演示一下mysql的內連線 外連線 左 外 連線 右 外 連線 全 外 連線 mysql版本 server version 5.6.31 mysql community server gp...
Mysql內連線 左連線 右連線查詢
建表語句如下 建立表a table table structure for a table drop table if exists a table create table a table id smallint 6 auto increment,name varchar 10 not null,...