1. 程式人生 > >SQL連線查詢語句(內、外、交叉和合並查詢)

SQL連線查詢語句(內、外、交叉和合並查詢)

      接觸Sql語句時間挺長時間了,聽他人說過sql語句的連線查詢,但一直沒有認真研究和使用過!!最近在公司實習,需要用到一些連線的語句,我也從中體會到連線查詢帶來的方便。

下面總結一下SQL連線查詢語句。

1、內連線 (INNER JOIN)

  內連線也稱自然連線,它是根據兩個或多個表中的列之間的關係,從這些表中查詢資料。
注意: 內連線是從結果表中刪除與其他被連線表中沒有匹配行的所有行,所以內連線可能會丟失資訊。
重點:內連線,只查匹配行。
語法:(INNER可省略)

select dishname,dishcode,nums,catename from sn_dish_info inner join sn_dish_category   
on sn_dish_info.cateuuid=sn_dish_category.cateuuid
菜品類別表:


菜品表


結果表

  這樣我們就把兩張表中我們想要的資料查出來了。但同時招牌菜這個的資料就丟失了!!不過這對於我們好像不影響我們。我們只要菜品類別下有菜品的資料。

2、外連線(左,右,全連線)

  外連線分為三種:左外連線,右外連線,全外連線。對應SQL:LEFT/RIGHT/FULL OUTER JOIN。通常我們省略outer 這個關鍵字。寫成:LEFT/RIGHT/FULL JOIN。

  在左外連線和右外連線時都會以一張表為基表,該表的內容會全部顯示,然後加上兩張表匹配的內容。如果基表的資料在另一張表沒有記錄。那麼在相關聯的結果集行中列顯示為空值(NULL)。

(1)左連線

     以左表為基準,結果集保留左表的所有行,對於右表只包含左表匹配的行。如果右表不存在與左表相對應的資料,就將查詢結果集合對應的資料欄位放入NULL值。

Select  dishname,dishcode,nums,sn_dish_category.catename as carename   
from sn_dish_info  left join sn_dish_info.cateuuid sn_dish_category.cateuuid
結果:


(2)右連線

     與左連線正好相反。

Select  dishname,dishcode,nums,sn_dish_category.catename as carename   
from sn_dish_info right join sn_dish_category on sn_dish_info.cateuuid=sn_dish_category.cateuui

結果:


(3)全連線

將左右兩個表中的資料都查詢出來,如果兩個表中沒有相對應的資料,就將該欄位放入NULL值。

Select  dishname,dishcode,nums,sn_dish_category.catename as carename   
from sn_dish_info full join sn_dish_category on sn_dish_info.cateuuid=sn_dish_category.cateuuid  

3、交叉連線(Cross join)

 交叉連線也稱笛卡爾積,是將兩個表中的每一條資料都進行組合。

例:a(a,1),b(2,3,4)     交叉連線後c{(a,2) ,(a,3),(a,4)(1,2),(1,3),(1,4)}

Select  dishname,dishcode,nums,sn_dish_category.catename as   
carename from sn_dish_info cross join sn_dish_category  



他和用內連線進行查詢的結果一樣,就是太慢了,因為它得先進行組合,在進行篩選,導致查詢的效率很低。

4、UNION

UNION 操作符用於合併兩個或多個 SELECT 語句的結果集。

UNION 運算子通過組合其他兩個結果表(例如 TABLE1  TABLE2)並消去表中任何重複行而派生出一個結果表。

 ALL  UNION 一起使用時(即 UNION ALL),不消除重複行。兩種情況下,派生表的每一行不是來自 TABLE1 就是來自 TABLE2

SQL UNION 語法  
  
SELECT column_name(s) FROM table_name1  
UNION  
SELECT column_name(s) FROM table_name2  
  
註釋:預設地,UNION 操作符選取不同的值。如果允許重複的值,請使用 UNION ALL。  
  
SQL UNION ALL 語法  
  
SELECT column_name(s) FROM table_name1  
UNION ALL  
SELECT column_name(s) FROM table_name2 


相關推薦

SQL連線查詢語句交叉和合查詢

      接觸Sql語句時間挺長時間了,聽他人說過sql語句的連線查詢,但一直沒有認真研究和使用過!!最近在公司實習,需要用到一些連線的語句,我也從中體會到連線查詢帶來的方便。 下面總結一下SQ

多表連線查詢交叉連線

連線查詢實際上是通過各個表之間共同列的關聯性來查詢資料的,它是關係資料庫查詢最主要的特徵. select 表1.欄位名1,表2.欄位名2,...  from 表1,表2 where 連線條件 SQL-92標準所定義的FROM子句的連線語法格式為:  FROM 表名 join_type 表名 [ON (連線條

sql查詢語句將一個表的列變成行顯示

CREATE TABLE tb(name VARCHAR(10) , course VARCHAR(10) , score INT) INSERT INTO tb(name,course,score) VALUES ('張三' , '語文' , 74), ('張三' ,

Hibernate5中的3中查詢語句HQLSQLQBC

    User為類名,id userName,password為屬性;     t_user為表名,t_id,t_username,t_password為表字段名1、HQL語句:Hibernate的語句   String

多關係連線查詢,自身連線

先創兩張表做例子,一張部門表,一張員工表 部門表(dept): 員工表(emp): 1.內連線 一般格式: select[distinct/all]<目標列表達式[別名]清單> from<關係名1[別名1]>inne

【翻譯】SQL最近位置查詢語句MySQLPostgreSQLSQL Server

部落格地址:https://thans.cn 前言 我已經浪費了太多的時間在尋找定位軟體上了,因此這值得我去寫下如何去做。當然,在

SQL數據查詢語句

delete 紅色 cnblogs col mage 列名 http font 根據 本文所用數據庫為db_Test,數據表為Employee 一.SELECT語句基本結構 語句語法簡單歸納為: SELECT select_list [INTO new_table_name

MySQL學習——SQL查詢語句連接查詢&子查詢

例如 必須 創建 clas 在一起 另一個 記錄 any 操作 一:連接查詢:   連接查詢是將倆個或者倆個以上的表按照某個條件連接起來,從中選擇需要的數據,連接查詢同時查詢倆個或者倆個以上的表時使用,當不同的表中存在表示相同意義的字段時,可以通過該字段來連接這幾個表,例如

懲罰函式法點法點法求解約束優化問題最優值 matlab

1、 用外點法求下列問題的最優解 方法一:外點牛頓法: clc m=zeros(1,50);a=zeros(1,50);b=zeros(1,50);f0=zeros(1,50);%a b為最優點座標,f0為最優點函式值,f1 f2最優點梯度。 syms x1 x2 e;  &n

sql join 大彙總inner join full join 全連 left join 左連right join 右連 cross join 交叉連以及union

一、定義兩個表 ,結構如下 create table A (     id  nvarchar(50) null,     names nvarchar(50) null )  create table B (

sql join 大彙總inner join full join 全連 left join 左連right join 右連 cross join 交叉連以及union

一、定義兩個表 ,結構如下 create table A (     id  nvarchar(50) null,     names nvarchar(50) null )  create table B (     id  nvarchar(50) null,   

SQL 查詢語句inner join 與 left join 之間的區別

SQL查詢語句: 1. 查詢中用到的關鍵詞主要包含六個,書寫順序為 select--from--where--group by--having--order by 2. 但是他們的執行順序為  from--where--group by--having--select-

PL/SQL developer快速生成插入語句查詢語句

今天在使用plsql developer寫儲存過程中,當一個表字段過多,當要查詢部分欄位或者插入欄位,手敲欄位名特別辛苦而且容易出錯, 比如該表: 要寫一個插入語句的時候,可能需要這樣幹 insert into 表名(id, emp_id, entry_id, entry_type, i_e_type

總結3--- 知識總結存管理線程阻塞GIL鎖

操作系統 python2.x 文件 訪問 外觀 python多線程 16px 重新 singleton 一、Python中是如何進行內存管理的? 垃圾回收:Python不像C++,Java等語言一樣,他們可以不用事先聲明變量類型而直接對變量進行賦值。對Python而言,對

總結一下各種居中聯元素塊級元素浮動元素絕對定位元素*水平垂直

一個 常見 一是 -a flex 樣式 有一個 margin round   在平時寫網頁樣式的時候,元素居中應該是最常見不過的了,在這裏我們把常見居中的情況簡單總結一下。本文討論以下幾種情況:內聯元素、塊級元素、浮動元素、絕對定位元素。居中的情況分兩種情況:水平居中和垂直

sql 常用的語句sql 創建表結構 修改列 清空表

eight key perl ont ide class 一個 comm 表結構 1.創建表 create Table WorkItemHyperlink ( ID bigint primary key ,--主鍵 WorkItemID bigint identity(

PL/SQL批處理語句BULK COLLECT

數據 使用 for循環 差異 code 基於 name 從表 允許 我們知道PL/SQL程序中運行SQL語句是存在開銷的,因為SQL語句是要提交給SQL引擎處理,這種在PL/SQL引擎和SQL引擎之間的控制轉移叫做上下文卻換,每次卻換時,都有額外的開銷。然而,FORALL和

MySQL查詢語句重點分類

MySQL的查詢是一個重點,主要查詢操作包括以下內容(單表查詢重點) 查詢所有列 查詢指定列 查詢時新增常量列 查詢時合併 查詢時去除重複記錄 條件查詢 聚合查詢 分頁查詢 查詢排序 分組查詢 分組查詢後諮詢

ORACLE EBS常用表及查詢語句最終整理版

 轉自 :https://blog.csdn.net/cai_xingyun/article/details/38016687 建議去看參考二   參考一:                

mysql簡單的查詢語句一)

1、 查詢資料庫的版本 : mysql –-version 或者為 –V 2、 啟動服務: net start mysql 3、 關閉服務: net stop mysql 4、 連線資料庫:mysql –h(localhost或ip) –P(埠預設為3306) –uroot –p(密碼) 可