1. 程式人生 > >mysql的各種連線查詢

mysql的各種連線查詢

(left join, right join, inner join, cross join)

  • 宣告:

1.左連線 left join 是left outer join的簡寫,它的全稱是左外連線,是外連線中的一種,兩種寫法的效果一樣。

2.右連線 right join是right outer join的簡寫,它的全稱是右外連線,是外連線中的一種,兩種寫法的效果一樣。

3.mysql不支援全外連結 FULL OUTER JOIN,Oracle支援FULL OUTER JOIN全外連結。

  • 左連線left join

left join是以左表為基礎,左表(l_table)的記錄將會全部表示出來,而右表(r_table)只會顯示符合搜尋條件的記錄,右表記錄不足的地方均為NULL。

 select * from l_table a
    left join r_table b on a.aID = b.bID 
  • 右連線right join

right join和left join的結果剛好相反,這次是以右表(r_table)為基礎的,左表不足的地方用NULL填充。

select * from l_table a
    right join r_table b on a.aID = b.bID 
  • 內連線inner join

inner join只顯示符合條件的資料,並不以哪個表為基礎。

select * from l_table a
    inner join r_table b on a.aID = b.bID 

 等價於
    
select * from l_table a, r_table b 
    where a.aID = b.bID 
  • 交叉連線cross join

交叉連線生成笛卡爾積(純關係代數的乘運算),它不使用任何匹配或者選取條件,而是直接將一個數據源中的每個行與另一個數據源的每個行都一一匹配。比如l_table有3條記錄,r_table表中有7條記錄,則cross join會產生21條資料。交叉連線中沒有on條件子句。

select * from l_table a
    cross join r_table b
  • mysql如何實現全外連線full outer join        

包含兩個資料集合中的全部行,不管另外一邊的表中是否存在與它們匹配的行。

相當於將兩個資料集合分別進行左外連線和右外連線,然後再使用並操作將上述兩個結果集合併為一個結果集(消去重複行)。

根據功能上的描述,雖然mysql不支援全外連線,但我們可以使用“左外 UNION 右外”來實現全外連線。

select * from l_table a
    left join r_table b on a.aID = b.bID 
    union 
    select * from l_table a
    right join r_table b on a.aID = b.bID 

相關推薦

mysql各種連線查詢

(left join, right join, inner join, cross join) 宣告: 1.左連線 left join 是left outer join的簡寫,它的全稱是左外連線,是外連線中的一種,兩種寫法的效果一樣。 2.右連線 right joi

mysql連線查詢(多表查詢

  1      連線查詢(多表查詢) 1.1交叉連線 語法: from  表1  [cross]  join  表2  ;    //可見交叉連線只是沒有on條

mysql連線查詢和資料庫設計)

  --建立學生表 create table students ( id int unsigned not null auto_increment primary key, name varchar(20) default '',

Mysql連線查詢(交叉連線,內連線,外連線,using關鍵字使用場景)

連線查詢 連線查詢:將多張表連到一起進行查詢(會導致記錄數行和欄位數列發生改變) 連線查詢的意義 在關係型資料庫設計過程中,實體(表)與實體之間是存在很多聯絡的。在關係型資料庫表的設計過程中,遵循著關係來設計:一對一,一對多和多對多,通常在實際操作的過程中,需要利用這層

MySQL連線查詢,多表查詢(適合練習和初學)

Join連線圖 針對以上的多表查詢,我們嘗試做以下的實驗: Join實驗: CREATE TABLE `t_dept` ( `id` INT(11) NOT NULL AUTO_INCREMENT, `deptName` VARCHAR(30) DEFAULT

MySql資料庫連線查詢與自關聯(七)

先看個問題 問:查詢每個學生每個科目的分數 分析:學生姓名來源於students表,科目名稱來源於subjects,分數來源於scores表,怎麼將3個表放到一起查詢,並將結果顯示在同一個結果集中呢

MySql自身連線查詢

一直沒用到自身連線查詢,今天做習題,遇到了,不多說,上程式碼: *題目: 查詢和李軍同性別並同班的同學SNAME 這是用到的表 22 土辦法: Select sname from student where ssex=(select ssex fromstudent wh

mysql連線查詢

只說連線查詢,不說子查詢 內連線: 等值連線 非等值連線 交叉連線 A 表有n 行,B表有m 行 結果集中有n*m 行 自身連線(需要使用別名) 經典的查詢每門課的間接先修課 sel

SQL各種連線查詢詳解(左連線、右連線..)

一、交叉連線(cross join) 交叉連線(cross join):有兩種,顯式的和隱式的,不帶on子句,返回的是兩表的乘積,也叫笛卡爾積。 例如:下面的語句1和語句2的結果是相同的。 語句1:隱式的交叉連線,沒有cross join。 select o.id, o.

詳解MySQL的多表連線查詢

前期準備工作 在這裡我準備了一個簡單的省市縣的mysql資料庫,進行簡單的案例分析 create table province( pro_id int primary key, pro_name varchar(10) ); insert into provinc

MySQL的內外連線查詢

建立員工表 CREATE TABLE employees( id int primary key auto_increment, name varchar(255), age int, tel varchar(255), dep_id int ) 部門表 alter table

JDBC連線mysql各種問題?

程式碼中寫的是  Class.forName("com.mysql.jdbc.Driver"); 載入驅動時丟擲類沒有找到異常, 發現當前myeclipse中沒有mysql的JDBC驅動, 到官網下載mysql JDBC驅動        &n

mysql中的連線查詢

/* 含義:又稱多表查詢,當查詢的欄位來自於多個表時,就會用到連線查詢 笛卡爾乘積現象:表1 有m行,表2有n行,結果=m*n行 發生原因:沒有有效的連線條件 如何避免:新增有效的連線條件 分類: 按年代分類: sql92標準:僅僅支援內連線 sql99標準【推薦】:支援內連線+外連線(左外和

MySQL UNION 操作符 (全連線查詢

MySQL UNION 操作符 (全連線查詢) MySQL UNION 操作符用於連線兩個以上的 SELECT 語句的結果組合到一個結果集合中。多個 SELECT 語句會刪除重複的資料。 MySQL UNION 操作符語法格式: SELECT expression1, express

mysql連線查詢,子查詢,聯合查詢

一、連線查詢(多表查詢) emp表 dept表 1.交叉連線 實際上,交叉連線是將兩個表不設定任何條件的連線結果。 交叉連線通常也被叫做“笛卡爾積”——數學上可能比較多。 語法: from  表1  [cross]  join  表2  

MySQL多表連線查詢

多表查詢:當查詢結果來自多張資料表的時,就需要用到連線查詢。 多表連線查詢:會出現笛卡爾積的現象:a表有m行,b表有n行,查詢結果=m*n行,消除笛卡爾積現象就必須加上關聯條件,關聯條件的個數=n個表-1。 多表連線查詢按照能分類為: 1、內連線:      

mysql筆記五之分頁、連線查詢、自關聯、子查詢

1.-- 分頁     -- limit start, count     -- 表示獲取多少條資料     -- start 預設值為0 可以省略     -- 表示跳過多少

MySQL查詢和表連線查詢

SELECT * FROM grade; SELECT * FROM result; SELECT * FROM student; SELECT * FROM subject; SELECT s.StudentNo ,s.StudentName ,j.SubjectName ,r.Stude

(四)MySQL基礎——分組查詢連線查詢

分組查詢 GROUP BY語法:   SELECT  分組函式  ,列(要求出現在GROUP BY的後面)FROM  表  【WHERE  篩選條件】GROUP BY  分組的列表 【ORDER  BY  子句】 注意: 查詢列表比較特殊,要求是分組函式和GROUP

9、mysql三表連線查詢簡單語句

mysql 三表聯查: 左連線案例:(在兩表聯查的基礎上再加一層) select username,ps,name,tel from (t1 left join t2 on t1.t1_id=t2.t1_id) left join t3 on t1.t1_id=t3.t1_id 其他連結