// an highlighted block
/*join 建表語句*/
drop database if exists test;
create database test;
use test;
/* 左表t1*/
drop table if exists t1;
create table t1
(id int not null
,name varchar(20
));insert into t1 values(1
,'t1a');
insert into t1 values(2
,'t1b');
insert into t1 values(3
,'t1c');
insert into t1 values(4
,'t1d');
insert into t1 values(5
,'t1f');
/* 右表 t2*/
drop table if exists t2;
create table t2
(id int not null
,name varchar(20
));insert into t2 values(2
,'t2b');
insert into t2 values(3
,'t2c');
insert into t2 values(4
,'t2d');
insert into t2 values(5
,'t2f');
insert into t2 values(6
,'t2a'
);
兩表關聯,把左表的列和右表的列通過笛卡爾積的形式表達出來。
兩表關聯,左表全部保留,右表關聯不上用null表示。
sql中的幾種join 及 full join問題
注意 oracle資料庫支援full join,mysql是不支援full join的,但仍然可以同過左外連線 union 右外連線實現 初始化sql語句 join 建表語句 drop database ifexists test create database test use test 左表t1...
理解mysql中的join
1 兩表join時要小表驅動大表,為什麼?user表10000條資料,class表20條資料 select from user u left join class c on u.userid c.userid 上面的結果是迴圈10000次,每次獲取user的userid到class中找與user表u...
mysql中join的選擇(mysql每日一講)
條件 a表100行資料 b表100行資料 假如 a join b on a.欄位1 b.欄位2 此時驅動表是a表,被驅動表示b表 1 假如b表上字段2建立了索引 那麼a表作為驅動表將會逐行掃瞄,掃瞄100次,b表上字段2有索引,因此a表每一行會讀b表的一行,這樣總掃瞄次數是100 100 200次 ...