mysql通過集合查詢 連線查詢與集合查詢

2021-10-18 12:05:03 字數 3598 閱讀 5574

4.外連線查詢

在前面講述的連線操作中,返回的結果都是滿足連線條件的記錄。有些時候,開發人員或者使用者對於不滿足連線條件的部分記錄也感興趣,這個時候就需要使用外連線查詢。外連線查詢不僅可以返回滿足連線條件的記錄,對於乙個資料表中在另乙個資料表中不匹配的記錄也可以返回。外連線查詢主要包括三種:左外連線、右外連線和全外連線。

左外連線

左外連線中查詢的結果中不僅將顯示滿足連線條件的記錄,而且還包括左側表中不滿足查詢條件的記錄。在oracle資料庫中,可以使用加號運算子(+)來表示左外連線。當該加號運算子(+)出現在連線條件的左邊時,就稱之為左外連線。其語法格式如下:

select 表名1.欄位, 表名2.欄位 ….

from 表名1,表名2

where 表名1.欄位1(+)=表名2.欄位2

其中,select 語句中表名1.欄位和表名2.欄位表示指定資料表1和資料表2中要查詢的列;from語句中表名1和表名2表示指定連線的資料表的名字;where子句中表名1.欄位1(+)=表名2.欄位2表示左外連線。此時,表名1.欄位1所在的列的值將會被全部查詢出來。

在mysql資料庫和microsoft sql server資料庫中可以使用left[outer] join關鍵字實現,其中outer關鍵字是可選的。使用left[outer] join關鍵字實現左外連線的語法規則如下:

select 表名1.欄位, 表名2.欄位 ….

from 表名1 left join表名2

on 表名1.欄位1=表名2.欄位2

這裡使用left join關鍵字代替sql語句中from語句裡的逗號,使用on子句代替標準sql語句中的where子句,並將sql語句中表示左外連線的加號運算子(+)去除。

右外連線

在oracle資料庫中,當該加號運算子(+)出現在連線條件的右邊時,就稱之為右外連線。其語法格式如下:

select 表名1.欄位, 表名2.欄位 ….

from 表名1,表名2

where 表名1.欄位1=表名2.欄位2(+)

在mysql和microsoft sql server資料庫中可以使用right [outer] join關鍵字實現,其中outer關鍵字是可選的。使用right [outer] join關鍵字實現左外連線的語法規則如下:

select 表名1.欄位, 表名2.欄位 ….

from 表名1 right join表名2

on 表名1.欄位1=表名2.欄位2

全外連線

全外連線中查詢的結果中不僅將顯示左側表中不滿足連線條件的記錄,而且還會顯示右側表中不滿足查詢條件的記錄。全外連線可以認為是左外連線與右外連線的合集(不包括重複行)。

全外連線可以使用full [outer] join關鍵字實現,其中outer關鍵字是可選的。使用full [outer] join關鍵字實現左外連線的語法規則如下:

select 表名1.欄位, 表名2.欄位 ….

from 表名1 full join表名2

on 表名1.欄位1=表名2.欄位2

5.集合查詢

在sql的連線查詢語句中,還有一種查詢方式就是結合查詢。集合查詢主要包括三種:並操作、交操作和差操作。其中交操作和差操作並不是對目前主流的所有的資料庫的適用。

並操作(union)

執行並操作使用的關鍵字是union。並操作返回的結果集是包括了兩個查詢語句中查詢出來的所有不同的行,不包含重複行。其語法格式如下:

select 語句1

union

select 語句2

其中語句1和語句2表示的是兩個用於查詢的select語句。union關鍵字表示對這兩個查詢語句查詢出來的結果進行並操作。這裡需要保證select 語句1和select 語句2中查詢出的列數必須相同,而且對應的列的資料型別必須一致。

交操作(intersect)

執行交操作使用的關鍵字是intersect。交操作返回的結果集包括了連線查詢結果的公共行。交操作中不會出現重複行。其語法格式如下:

select 語句1

intersect

select 語句2

其中語句1和語句2表示的是兩個用於查詢的select語句。intersect關鍵字表示對這兩個查詢語句查詢出來的結果進行交操作。這裡需要保證select 語句1和select 語句2中查詢出的列數必須相同,而且對應的列的資料型別必須一致。

差操作(minus)

執執行交操作使用的關鍵字是minus。差操作返回的記錄結果集是只在第乙個select語句**現存在,但不存在於第二個select語句的查詢結果中。在其語法格式如下:

select 語句1

minus

select 語句2bitscn.com

php join() 函式獲取由陣列元素組合成的字串。本文章向碼農介紹php join() 函式的使用方法和基本例項,感興趣的碼農可以參考一下。定義和用法join() 函式返回由陣列元素組合成的字串。join() 函式是 implode() 函...

一.join語法概述join 用於多表中字段之間的聯絡,語法如下:... from table1 inner|left|right join table2 on conditionatable1:左表;table2:右表。join 按照功能大致分為如下三類:inner join(內連線,...

hash join(hj)是一種用於equi-join(而anti-join就是使用not in時的join)的技術。在oracle中,它是從7.3開始引入的,以代替sort

一、 hash join概念

hash join(hj)是一種用於equi-join(而anti-

這篇文章主要介紹了mysql join操作的相關資料,需要的朋友可以參考下 join的型別1. 內聯結:將兩個表中存在聯結關係的字段符合聯結關係的那些記錄形成記錄集的聯結。2. 外聯結:分為...

這篇文章主要介紹了mysql join操作的相關資料,需要的朋友可以參考下 join的型別1. 內聯結:將兩個表中存在聯結關係的字段符合聯結關係的那些記錄形成記錄集的聯結。2. 外聯結:分為...

一.先看一些最簡單的例子

例子table aaid adate 1 a1 2 a2 3 a3

tableb

bid bdate 1 b1 2

join是關係型資料庫系統的重要操作之一,sql server中包含的常用join:內聯接、外聯接和交叉聯接等1.1.1 摘要 join是關係型資料庫系統的重要操作之一,sql server中包含的常用join:內聯接、外聯接和交叉聯...

...。mysql資料庫支援如下的聯接查詢:

cross join(交叉聯接)

inner join(內聯接)

outer join(外聯接)

其它在進行各種聯接操作時,一定要回憶一下在《sql邏輯查詢語句執...

資料庫常見的join方式有三種:inner join, left outter join, right outter join(還有一種full join,因不常用,本文不討論)。這三種連線方式都是將兩個以上的表通過on條件語句,拼成乙個大表。

以下是它們的共同點:...

...)中,表連線的語法可以參見mysql官方手冊:mysql官方手冊-join在查詢中,連線的語法類似select select_expr from table_referencestable_references(對錶的引用)的定義如下(也可以看成

連線查詢和集合查詢

在對資料庫查詢過程中,有些時候一張表中的資料不能滿足我們的需求,這時候就須要把多張表連線起來,如以下的兩張表所看到的,一張表涵蓋了學生的資訊,一張表表示學院的資訊,假設我想知道某個學生是哪個學院的話,那麼就須要把這兩張表連線起來。stuid deptid stuname age 1109024103...

mysql 集合 MySql集合查詢

select語句的查詢結果是元組的集合,所以多個select語句的結果可進行集合操作。集合操作主要包括並操作union 交操作intersect 差操作except。注意,參加集合操作的各查詢結果的列數必須相同 對應的資料型別也必須相同。本示例中的資料表有student,sc,course三個,資料...

mysql連線查詢例項 MySQL連線查詢例項詳解

建立表suppliers create table suppliers s id int not null auto increment,s name char 50 not null,s city char 50 null,s zip char 10 null,s call char 50 not...