亚洲免费在线-亚洲免费在线播放-亚洲免费在线观看-亚洲免费在线观看视频-亚洲免费在线看-亚洲免费在线视频

SQL連接(內連接,左連接,右連接,自連接)詳解

系統 2154 0
    
create table department( id number primary key, name varchar2(30));

create table employee(  id number primary key,  name varchar2(30) not null,  salary number(6,2),  title varchar2(30),  manager number,  deptid number);
  
insert into department values(1,'人力資源');
insert into department values(2,'開發中心');
insert into department values(3,'總裁室');

insert into employee values(4,'趙六',9000,'項目經理',null,2);
insert into employee values(3,'王五',7000,'項目組長',4,2);
insert into employee values(1,'張三',6000,'程序員',3,2);
insert into employee values(2,'李四',7000,'HR',4,1);

  


不同的 SQL JOIN
??? * JOIN: 如果表中有至少一個匹配,則返回行
??? * LEFT JOIN: 即使右表中沒有匹配,也從左表返回所有的行
??? * RIGHT JOIN: 即使左表中沒有匹配,也從右表返回所有的行
??? * FULL JOIN: 只要其中一個表中存在匹配,就返回行

INNER JOIN 關鍵字在表中存在至少一個匹配時返回行。如果 "employee" 中的行在 "department" 中沒有匹配,就不會列出這些行。

LEFT JOIN 關鍵字會從左表 (employee) 那里返回所有的行,即使在右表 (department) 中沒有匹配的行。

RIGHT JOIN 關鍵字會從右表 (department) 那里返回所有的行,即使在左表 (employee) 中沒有匹配的行。

FULL JOIN 關鍵字會從左表 (employee) 和右表 (department) 那里返回所有的行。如果 "employee" 中的行在表 "department" 中沒有匹配,或者如果 "department" 中的行在表 "employee" 中沒有匹配,這些行同樣會列出。

注釋:INNER JOIN 與 JOIN 是相同的。
注釋:在某些數據庫中, LEFT JOIN 稱為 LEFT OUTER JOIN。
注釋:在某些數據庫中, RIGHT JOIN 稱為 RIGHT OUTER JOIN。
注釋:在某些數據庫中, FULL JOIN 稱為 FULL OUTER JOIN。


內連接:是最常用的鏈接,也叫等值鏈接
不管限制條件在on中還是在where中,內連接都得到笛卡爾積中滿足所有條件的記錄。對于inner join, on和where的效果是一樣的。

1)當沒有限制條件,此時為笛卡爾積:
      select * from employee , department ;
  select * from employee inner join department on 1=1;
  

得到的效果是一樣的.

SQL連接(內連接,左連接,右連接,自連接)詳解

2)此時如果加上where限制條件,則對上面笛卡爾積的每一條記錄看它是否滿足限制條件,如果滿足,則它在結果集中。
    select * from employee emp , department dept where emp.deptid= dept.id;
select * from employee emp inner join department dept on emp.deptid= dept.id;
  


SQL連接(內連接,左連接,右連接,自連接)詳解


外連接
? 則分為"左外連接(左連接)","右外連接(右連接)"兩種情況: left join / right join

交叉連接(完全連接)cross join 不帶 where 條件的

左連接(left join):
1)當沒加限制條件時,得到笛卡爾積,同內連接沒加限制條件一樣
?
    select * from employee left join department on 1=1;
  


2)當添加特定條件時:
? oracle數據庫中可以用(+)來實現,?
    select * from employee emp , department dept where emp.deptid= dept.id(+);
  

即“(+)”所在位置的另一側為連接的方向,左連接說明等號左側的所有記錄均會被顯示,無論其在右側是否得到匹配;
等同于:
    select * from employee emp left join department dept on emp.deptid= dept.id;
  


SQL連接(內連接,左連接,右連接,自連接)詳解


右連接:
? oracle數據庫中可以用(+)來實現,?
    select * from employee emp , department dept where emp.deptid(+)= dept.id;
  

即“(+)”所在位置的另一側為連接的方向,右連接說明等號右側的所有記錄均會被顯示,無論其在左側是否得到匹配;
等同于:
    select * from employee emp right join department dept on emp.deptid= dept.id;
  


SQL連接(內連接,左連接,右連接,自連接)詳解

全連接:會從左表 (employee) 和右表 (department) 那里返回所有的行。如果 "employee" 中的行在表 "department" 中沒有匹配,或者如果 "department" 中的行在表 "employee" 中沒有匹配,這些行同樣會列出
?

連接分為三種:內連接、外連接、交叉連接??
?
1、等值連接:在連接條件中使用等于號(=)運算符比較被連接列的列值,其查詢結果中列出被連接表中的所有列,包括其中的重復列。

2、不等連接: 在連接條件使用除等于運算符以外的其它比較運算符比較被連接的列的列值。這些運算符包括>、>=、<=、<、!>、!<和<>。

3、自然連接(僅僅是一種特的等值連接):在連接條件中使用等于(=)運算符比較被連接列的列值,但它使用選擇列表指出查詢結果集合中所包括的列,并刪除連接表中的重復列。
??????
外連接:??
分為三種:左外連接(LEFT OUTER JOIN或LEFT JOIN)、右外連接(RIGHT OUTER JOIN或RIGHT JOIN)和全外連接(FULL OUTER JOIN或FULL JOIN)三種??
?
交叉連接(CROSS JOIN)???
沒有WHERE 子句,它返回連接表中所有數據行的笛卡爾積?
先返回 左表所有行,左表行在與右表行一一組合,等于兩個表相乘

    select * from employee emp cross join department dept
  


SQL連接(內連接,左連接,右連接,自連接)詳解

如果需要加條件,則使用where

    select * from employee emp cross join department dept where emp.deptid= dept.id; 
--等同于
select * from employee emp inner join department dept on emp.deptid= dept.id;
  


SQL連接(內連接,左連接,右連接,自連接)詳解


兩個主要的連接類型是內連 接和外連 接。到目前為止,所有示例中使用的都是內連 接。內連 接只保留交叉積中滿足連接條件的那些行。如果某行在一個表中存在,但在另一個表中不存在,則結果表中不包括該信息。
外連 接是內連 接和左表和/或右表中未包括內連 接中的那些行的并置。當對兩個表執行外連 接時,可任意將一個表指定為左表而將另一個表指定為右表。外連 接有三種類型:

左外連 接包括內連 接和左表中未包括在內連 接中的那些行。

右外連 接包括內連 接和右表中未包括在內連 接中的那些行。

全外連 接包括內連 接以及左表和右表中未包括在內連 接中的行。
內連 接一般是檢索兩個表里連接字段都存在的數據。
左連接的意思是,查詢左(語句前面)表里的所有內容,無論右邊表里有沒有。右邊表里沒有的內容用NULL代替。
右連接和左連接相反。

數據表的連接有:
1、內連 接(自然連接): 只有兩個表相匹配的行才能在結果集中出現
2、外連 接: 包括
(1)左外連 接(左邊的表不加限制)
(2)右外連 接(右邊的表不加限制)
(3)全外連 接(左右兩表都不加限制)
3、自連接(連接發生在一張基表內)



SQL連接(內連接,左連接,右連接,自連接)詳解


更多文章、技術交流、商務合作、聯系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號聯系: 360901061

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對您有幫助就好】

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長會非常 感謝您的哦!!!

發表我的評論
最新評論 總共0條評論
主站蜘蛛池模板: 日日夜夜操天天干 | 99精品高清不卡在线观看 | 美女18隐私羞羞视频网站 | 免费看成人频视在线视频 | 婷婷激情片 | 日本一级大毛片a一 | 中文字幕亚洲综合 | 久久精品久久久久久久久人 | 黄色网在线 | 日本a∨在线播放高清 | 成人国产精品一级毛片了 | 九色91精品国产网站 | 成人在线亚洲 | 国产成人精品在视频 | 好好的日com欧美 | 五月婷激情 | 欧美日韩亚洲国产精品 | 深夜啪啪网站 | 在线播放免费一级毛片欧美 | 久久久精品午夜免费不卡 | 国产精品原创巨作无遮挡 | 综合欧美日韩 | 曰韩三级 | 国产精品久久久久久久久久影院 | 亚洲精品一区二区三区香蕉在线看 | 无遮挡一级毛片性视频不卡 | 亚洲专区第一页 | 欧美色综合久久 | 亚洲人体视频 | 日韩成人免费视频 | 欧美日韩国产高清视频 | 午夜视频色 | 国产品精人成福利视频 | 欧美一区二区久久精品 | 五月婷婷在线免费观看 | 国产精品女仆装在线播放 | 国产精品日韩欧美久久综合 | 久久亚 | 日韩在线一区二区三区 | 一区二区视频在线观看免费的 | 九九视频九九热 |