解析:內(nèi)聯(lián),左外聯(lián),右外聯(lián),全連接,交叉連接的區(qū)別_MySQL教程
推薦:mysql出現(xiàn)“Incorrect key file for table”處理方法最近服務(wù)器出現(xiàn)問(wèn)題,導(dǎo)致公司的網(wǎng)站數(shù)據(jù)丟了很多。智軟的也丟了不少。這幾天一直都在忙這 修復(fù)數(shù)據(jù)。 今天在恢復(fù)一個(gè)客戶數(shù)據(jù)的時(shí)候。發(fā)現(xiàn)了一貫問(wèn)題。有多個(gè)表?yè)p壞了。因?yàn)槎际侵苯影驯韽?fù)制進(jìn)去的。然后就出現(xiàn)了這個(gè)問(wèn)題問(wèn)題 如圖: dedecms Error Warnin! Error inf
本篇文章是對(duì)內(nèi)聯(lián),左外聯(lián),右外聯(lián),全連接,交叉連接的區(qū)別進(jìn)行了詳細(xì)的分析介紹,需要的朋友參考下連接分為:內(nèi)連接、外連接、交叉連接
一、內(nèi)連接——最常用
定義:僅將兩個(gè)表中滿足連接條件的行組合起來(lái)作為結(jié)果集。
在內(nèi)連接中,只有在兩個(gè)表中匹配的行才能在結(jié)果集中出現(xiàn)
關(guān)鍵詞:INNER JOIN
格式:SELECT 列名表 FROM 表名1 [INNER] JOIN 表名2 ON或WHERE 條件表達(dá)式
說(shuō)明:
(1)列名表中的列名可以出自后面的兩個(gè)表,但如果兩個(gè)表中有同名列,應(yīng)在列名前標(biāo)明出處,格式為:表名.列名
(2)若連接的兩個(gè)表名字太長(zhǎng),可以為它們起個(gè)別名。 格式為:表名 AS 別名
(3)INNER是默認(rèn)方式,可以省略
eg:
select *
from t_institution i
inner join t_teller t
on i.inst_no = t.inst_no
where i.inst_no = "5801"
其中inner可以省略。
等價(jià)于早期的連接語(yǔ)法
select *
from t_institution i, t_teller t
where i.inst_no = t.inst_no
and i.inst_no = "5801"
二、外連接
1、左(外)連接
定義:在內(nèi)連接的基礎(chǔ)上,還包含左表中所有不符合條件的數(shù)據(jù)行,并在其中的右表列填寫NULL
關(guān)鍵字:LEFT JOIN
eg:
select *
from t_institution i
left outer join t_teller t
on i.inst_no = t.inst_no
其中outer可以省略。
注意:
當(dāng) 在內(nèi)連接查詢中加入條件是,無(wú)論是將它加入到j(luò)oin子句,還是加入到where子句,其效果是完全一樣的,但對(duì)于外連接情況就不同了。當(dāng)把條件加入到 join子句時(shí),SQL Server、Informix會(huì)返回外連接表的全部行,然后使用指定的條件返回第二個(gè)表的行。如果將條件放到where子句 中,SQL Server將會(huì)首先進(jìn)行連接操作,然后使用where子句對(duì)連接后的行進(jìn)行篩選。下面的兩個(gè)查詢展示了條件放置位子對(duì)執(zhí)行結(jié)果的影響:
條件在join子句
select *
from t_institution i
left outer join t_teller t
on i.inst_no = t.inst_no
and i.inst_no = “5801”
結(jié)果是:
inst_no inst_name inst_no teller_no teller_name
5801 天河區(qū) 5801 0001 tom
5801 天河區(qū) 5801 0002 david
5802 越秀區(qū)
5803 白云區(qū)
條件在where子句
select *
from t_institution i
left outer join t_teller t
on i.inst_no = t.inst_no
where i.inst_no = “5801”
結(jié)果是:
inst_no inst_name inst_no teller_no teller_name
5801 天河區(qū) 5801 0001 tom
5801 天河區(qū) 5801 0002 david
2、右(外)連接
定義:在內(nèi)連接的基礎(chǔ)上,還包含右表中所有不符合條件的數(shù)據(jù)行,并在其中的左表列填寫NULL
關(guān)鍵字:RIGHT JOIN
3、完全連接
定義:在內(nèi)連接的基礎(chǔ)上,還包含兩個(gè)表中所有不符合條件的數(shù)據(jù)行,并在其中的左表、和右表列填寫NULL
關(guān)鍵字:FULL JOIN
三、交叉連接
定義:將兩個(gè)表的所有行進(jìn)行組合,連接后的行數(shù)為兩個(gè)表的乘積數(shù)。(笛卡爾積)
關(guān)鍵詞:CROSS JOIN
格式:FROM 表名1 CROSS JOIN 表名2
四, 自身連接
自身連接是指同一個(gè)表自己與自己進(jìn)行連接。這種一元連接通常用于從自反關(guān)系(也稱作遞歸關(guān)系)中抽取數(shù)據(jù)。例如人力資源數(shù)據(jù)庫(kù)中雇員與老板的關(guān)系。
下面例子是在機(jī)構(gòu)表中查找本機(jī)構(gòu)和上級(jí)機(jī)構(gòu)的信息。
select s.inst_no superior_inst, s.inst_name sup_inst_name, i.inst_no, i.inst_name
from t_institution i
join t_institution s
on i.superior_inst = s.inst_no
結(jié)果是:
superior_inst sup_inst_name inst_no inst_name
800 廣州市 5801 天河區(qū)
800 廣州市 5802 越秀區(qū)
800 廣州市 5803 白云區(qū)
分享:mysql重裝后出現(xiàn)亂碼設(shè)置為utf8可解決查看當(dāng)前連接系統(tǒng)參數(shù):SHOW VARIABLES LIKE '%char%'; mysql show variables like 'char%'; +--------------------------+---------------- | Variable_name | Value +--------------------------+---------------- | character_set_client | gbk | character_set_con
- MSSQL清空日志刪除日志文件
- 關(guān)于數(shù)據(jù)庫(kù)中保留小數(shù)位的問(wèn)題
- 解析mysql與Oracle update的區(qū)別
- mysql 導(dǎo)入導(dǎo)出數(shù)據(jù)庫(kù)以及函數(shù)、存儲(chǔ)過(guò)程的介紹
- MySQL——修改root密碼的4種方法(以windows為例)
- 解決MYSQL出現(xiàn)Can''t create/write to file ''#sql_5c0_0.MYD''的問(wèn)題
- 深入理解SQL的四種連接-左外連接、右外連接、內(nèi)連接、全連接
- mysql出現(xiàn)“Incorrect key file for table”處理方法
- mysql重裝后出現(xiàn)亂碼設(shè)置為utf8可解決
- 淺析一個(gè)MYSQL語(yǔ)法(在查詢中使用count)的兼容性問(wèn)題
- 解析MySQL中INSERT INTO SELECT的使用
- SQL分組排序去重復(fù)的小實(shí)例
MySQL教程Rss訂閱編程教程搜索
MySQL教程推薦
- MySQL:數(shù)據(jù)庫(kù)知識(shí)點(diǎn)
- MySQL筆記之修改數(shù)據(jù)的解決方法
- 解決bash: mysql: command not found 的方法
- MySql中把一個(gè)表的數(shù)據(jù)插入到另一個(gè)表中的實(shí)現(xiàn)代碼
- 基于ubuntu中使用mysql實(shí)現(xiàn)opensips用戶認(rèn)證的解決方法
- 解析如何使用Zend Framework 連接數(shù)據(jù)庫(kù)
- mysql導(dǎo)出數(shù)據(jù)庫(kù)幾種方法
- 如何用命令行進(jìn)入mysql具體操作步驟
- linux下mysql提示mysql deamon failed to start錯(cuò)誤的解決方法
- Ubuntu 11.04 x64 編譯安裝mysql
猜你也喜歡看這些
- 如何解決SQL Server不允許進(jìn)行遠(yuǎn)程連接的問(wèn)題
- 怎樣升級(jí)SQL Server 2008數(shù)據(jù)庫(kù)引擎
- SQL SERVER中易混淆的數(shù)據(jù)類型
- Sql server 2008 express遠(yuǎn)程登錄實(shí)例設(shè)置 圖文教程
- 比較SQL Server數(shù)據(jù)庫(kù)導(dǎo)入導(dǎo)出數(shù)據(jù)方式
- 解讀VB實(shí)現(xiàn)SQL Server 2000存儲(chǔ)過(guò)程調(diào)用
- 兩條經(jīng)典SQL語(yǔ)句
- 如何在應(yīng)用環(huán)境中構(gòu)造最優(yōu)的數(shù)據(jù)庫(kù)模式
- Sql學(xué)習(xí)第四天——SQL 關(guān)于with cube,with rollup和grouping解釋及演示
- SQL SERVER 2008數(shù)據(jù)庫(kù)引擎詳細(xì)介紹
- 相關(guān)鏈接:
復(fù)制本頁(yè)鏈接| 搜索解析:內(nèi)聯(lián),左外聯(lián),右外聯(lián),全連接,交叉連接的區(qū)別
- 教程說(shuō)明:
MySQL教程-解析:內(nèi)聯(lián),左外聯(lián),右外聯(lián),全連接,交叉連接的區(qū)別
。