利用圖形介面實作交叉合併、內部合併、外部合併、多項關連性的設定、自我合併

 

一、交叉合併

假設我們有一個測試資料庫,裡面有兩張資料表,並新增一檢視表利用圖形介面完成交叉合併

 

可以配合Shift鍵一次新增多張資料表

 

將table_a與table_b的所有屬性全部勾選,其功能相當於點選「*(所有資料行)」

 

後於上方工具列按下紅色驚嘆號執行SQL觀看執行結果

 

二、內部合併

承上例,將table_a與table_b的所有屬性全部勾選,其功能相當於點選「*(所有資料行)」

 

利用滑鼠左鍵將屬性id_a直接拖曳到id_b屬性內

 

拖曳完成後

 

來看執行結果

 

三、左外部合併

承上例,利用滑鼠左鍵將屬性id_a直接拖曳到id_b屬性內,但僅完成inner join

 

接著要在兩個資料表的關連線上面按右鍵,並點選「選取table_a中所有的資料列」

 

完成後如下圖

 

再來看執行結果

 

四、右外部合併

承上例,在兩個資料表的關連線上面按右鍵,並點選「選取table_b中所有的資料列」

 

完成後如下圖

 

再來看執行結果

 

五、完全外部合併

完全外部合併的作法就是left join與right join的聯集。

在兩個資料表的關連線上面按右鍵,並點選「選取table_a中所有的資料列」和

「選取table_b中所有的資料列」

 

完成後如下圖

 

再來看執行結果

 

六、多項關連性的設定

為了能夠更直覺體會多項關連性的設定,所以再舉個新例子

CREATE TABLE [dbo].[T02訂單](
    [訂單編號] [char](5) NULL,
    [經手人] [nvarchar](10) NULL,
    [產品編號] [char](5) NULL,
    [單價] [int] NULL
) ON [PRIMARY]

GO

CREATE TABLE [dbo].[T02產品](
    [產品編號] [nchar](10) NULL,
    [定價] [int] NULL,
    [產品名稱] [nvarchar](10) NULL
) ON [PRIMARY]

GO

-- dbo.[T02訂單]
INSERT dbo.[T02訂單] VALUES ('00001', N'陳元元', 'P001 ', 30000)
INSERT dbo.[T02訂單] VALUES ('00002', N'劉名', 'P001 ', 24000)
INSERT dbo.[T02訂單] VALUES ('00003', N'林森木', 'P002 ', 12000)
INSERT dbo.[T02訂單] VALUES ('00004', N'菜元園', 'P002 ', 15000)
INSERT dbo.[T02訂單] VALUES ('00005', N'何壁珠', 'P003 ', 18000)

-- dbo.[T02產品]
INSERT dbo.[T02產品] VALUES (N'P001      ', 30000, N'冷氣')
INSERT dbo.[T02產品] VALUES (N'P002      ', 15000, N'冰箱')
INSERT dbo.[T02產品] VALUES (N'P003      ', 20000, N'洗衣機')
INSERT dbo.[T02產品] VALUES (N'P004      ', 9000, N'微波爐')
INSERT dbo.[T02產品] VALUES (N'P005      ', 850, N'電風扇')

先列出訂單中每一筆產品編號的產品名稱與定價的所有資料

 

目地為撈出訂單單價小於產品定價者

在兩個資料表的關連線上面按右鍵,並點選「屬性」跳到屬性視窗

再來看執行結果

 

七、自我合併

為了能夠更直覺體會自我合併,所以再舉個新例子

CREATE TABLE [dbo].[T03員工](
    [員工編號] [int] NULL,
    [姓名] [nvarchar](10) NULL,
    [職稱] [nvarchar](10) NULL,
    [主管] [int] NULL
) ON [PRIMARY]

GO

--dbo.[T03員工]
INSERT dbo.[T03員工] VALUES (1, N'陳元元', N'總經理', NULL)
INSERT dbo.[T03員工] VALUES (2, N'劉名', N'工程師', 4)
INSERT dbo.[T03員工] VALUES (3, N'林森木', N'工程助理', 2)
INSERT dbo.[T03員工] VALUES (4, N'菜元園', N'工程協理', 1)
INSERT dbo.[T03員工] VALUES (5, N'何壁珠', N'業務助理', 12)
INSERT dbo.[T03員工] VALUES (6, N'劉逸萍', N'業務', 10)
INSERT dbo.[T03員工] VALUES (7, N'陳臆如', N'業務協理', 1)
INSERT dbo.[T03員工] VALUES (8, N'胡琪偉', N'業務', 10)
INSERT dbo.[T03員工] VALUES (9, N'吳志粱', N'業務', 10)
INSERT dbo.[T03員工] VALUES (10, N'林美滿', N'業務經理', 7)
INSERT dbo.[T03員工] VALUES (11, N'劉雯', N'業務', 10)
INSERT dbo.[T03員工] VALUES (12, N'張懷甫', N'業務經理', 7)

連續兩次加入員工資料表

我們會發現第二次加入的員工資料表會自動被加入新別名

我們目地想要找出員工的主管的姓名與職稱,因此整個自我合併的作法如下