Mysql系列 Join多種用法

2021-10-04 19:28:40 字數 2865 閱讀 5940

sql優化中常用的方法之一就是將表關聯或子查詢改為join的用法,如上圖所示join的用法有很多種,導致有很多小夥伴經常搞混。本文將通過具體例子介紹sql中的各種常用join的特性和使用。

準備資料:

create table `tb1_ept`(

`id` int(11) not null auto_increment,

`deptname` varchar(30) default null,

`locadd` varchar(40) default null,

primary key (`id`)

)engine=innodb auto_increment=1 default charset=utf8;

create table `tb1_emp`(

`id` int(11) not null auto_increment,

`name` varchar(30) default null,

`deptid` int(11) default null,

primary key (`id`),

key `fk_dept_id` (`deptid`)

)engine=innodb auto_increment=1 default charset=utf8;

insert into tb1_dept(deptname,locadd) values('rd',11);

insert into tb1_dept(deptname,locadd) values('hr',12);

insert into tb1_dept(deptname,locadd) values('mk',13);

insert into tb1_dept(deptname,locadd) values('mis',14);

insert into tb1_dept(deptname,locadd) values('fd',15);

insert into tb1_emp(name,deptid) values('z3',1);

insert into tb1_emp(name,deptid) values('z4',1);

insert into tb1_emp(name,deptid) values('z5',1);

insert into tbl_emp(name,deptid) values('w5',2);

insert into tb1_emp(name,deptid) values('w6',2);

insert into tb1_emp(name,deptid) values('s7',3);

insert into tb1_emp(name,deptid) values('s8',4);

insert into tb1_emp(name,deptid) values('s9',51);

基於上面準備資料,我們通過構造不同join語句,說明mysql中存在的5種join用法和含義(全外鏈結和全鏈結mysql不支援)

內連線inner join是最常用的連線操作。從數學的角度講就是求兩個表的交集,從笛卡爾積的角度講就是從笛卡爾積中挑出on子句條件成立的記錄。

而實際sql執**況如下:

左鏈結(left join):

左鏈結left join的含義就是求兩個表的交集外加左表剩下的資料。依舊從笛卡爾積的角度講,就是先從笛卡爾積中挑出on子句條件成立的記錄,然後加上左表中剩餘的記錄。

而實際sql執**況:

右鏈結(right join):

右鏈結right join就是求兩個表的交集外加右表剩下的資料。再次從笛卡爾積的角度描述,右連線就是從笛卡爾積中挑出on子句條件成立的記錄,然後加上右表中剩餘的記錄

而實際sql執**況:

左外鏈結(left outter join):

左外鏈結left outter join就是求左表去除兩個表的交集部分剩下資料。

而實際sql執**況:

右外鏈結(right outter join):

右外鏈結right outter join就是求右表去除兩個表的交集部分剩下資料。

而實際sql執**況:

Mysql的幾個join用法

sql檔案 create table user id int 11 not null auto increment,name varchar 32 character set utf8 collate utf8 general ci not null comment 使用者名稱 registrati...

mysql 聯合查詢 join 用法舉例

最好在相同字段進行比較操作,在建立好的索引欄位上儘量減少函式操作 1 選取最適用的字段屬性,應該盡量把字段設定為not null,這樣在將來執行查詢的時候,資料庫不用去比較null值。2 使用連線 join 來代替子查詢 sub queries 3 盡量少使用 like 關鍵字和萬用字元 列出所用文...

MYSQL的limit的多種用法

這個知識點一直在用,但前兩天突然發現對limit的語法和各種表達方式,還是有點混淆,老是出現查不到分頁資料的情況,今天記錄一下limit的用法 limit 一般和limit聯合使用,用於資料的分頁查詢,當然也會用於資料的擷取,下面是limit的用法 select from table limit o...