【DB】SELECT文(結合)

DBの勉強の続きをしていきます!!
今回のテーマも前回に引き続きSELECT文について!!



SELECT文

今までに[DML(データ操作言語)][SELECT文(条件)][SELECT文(集約関数とグループ化)][SELECT文(並べ替え)]について勉強してきました。今回も前回に引き続き、SELECT(参照)文に関わるもの、「結合」について勉強していきたいと思います。


[基本構文]

SELECT 列名,列名,,,, もしくは「*」で列全指定
FROM テーブル名
WHERE 検索条件




結合とは

結合とは、大きく「内部結合」「外部結合」の2つに分けられている。どちらも複数のテーブルを条件を指定し結合することで、外部参照で持っている値を参照しながらテーブルに対して操作を行うことができます。




内部結合(INNER JOIN)

内部結合とは、結合するテーブルの結合条件が一致するもののみを抽出する結合です。「INNER JOIN」句で結合するテーブル名を指定し「ON」句の後に結合条件を指定します。


[構文]

SELECT 列名,列名,,,,
FROM テーブル名
INNER JOIN 結合テーブル名
ON テーブル名.列名 = 結合テーブル名.列名
WHERE 抽出条件



[例]
USE [TestDB]
GO

--[Store_ID]を条件に結合した抽出結果を出力する
SELECT [User_ID]
      ,[User_Name]
      ,[User_Age]
      ,[Adress]
      ,[Tell]
      ,[E_Mail]
      ,[Store_ID]
FROM [USERMANAGE] AS USERM
INNER JOIN [STOREMANAGE] AS STOREM
ON USERM.Store_ID = STOREM.Store_ID
GO




外部結合(OUTER JOIN)

外部結合とは、結合するテーブルに対して片方でも条件に一致する場合に抽出する結合です。外部結合には「左外部結合」「右外部結合」「全外部結合」存在し、内部結合と同様に「OUTER JOIN」句で結合するテーブル名を指定し「ON」句の後に結合条件を指定します。 「左外部結合」は左(最初に指定した)の値全てが抽出対象で、「右外部結合」は右(後に指定した)の値全てが抽出対象、「全外部結合」はどちらか一方にあれば全てが対象になります。値が存在しない列には「NULL」が適用されます。


[構文]

●左外部結合
SELECT 列名,列名,,,,
FROM テーブル名
LEFT OUTER JOIN 結合テーブル名
ON テーブル名.列名 = 結合テーブル名.列名
WHERE 抽出条件


●右外部結合
SELECT 列名,列名,,,,
FROM テーブル名
RIGHT OUTER JOIN 結合テーブル名
ON テーブル名.列名 = 結合テーブル名.列名
WHERE 抽出条件


●全外部結合
SELECT 列名,列名,,,,
FROM テーブル名
FULL OUTER JOIN 結合テーブル名
ON テーブル名.列名 = 結合テーブル名.列名
WHERE 抽出条件



[例]
USE [TestDB]
GO

/*
[STOREMANAGE] のテータは全て抽出し、[USERMANAGE]のデータは結合条件
に一致するデータを抽出する。
*/
SELECT STOREM.[Store_id]
      ,[Store_name]
      ,[Store_adress]
      ,[USER_NAME]
FROM [STOREMANAGE] AS STOREM
LEFT OUTER JOIN USERMANAGE AS USERM
ON STOREM.Store_ID = USERM.Store_ID

/*
[STOREMANAGE] のデータは結合条件に一致するデータを抽出し、
[USERMANAGE]のデータは全てを抽出する。
*/
SELECT STOREM.[Store_id]
      ,[Store_name]
      ,[Store_adress]
      ,[USER_NAME]
FROM [STOREMANAGE] AS STOREM
RIGHT OUTER JOIN USERMANAGE AS USERM
ON STOREM.Store_ID = USERM.Store_ID

/*
どちらか一方でも値が存在すれば抽出する。
*/
SELECT STOREM.[Store_id]
      ,[Store_name]
      ,[Store_adress]
      ,[USER_NAME]
FROM [STOREMANAGE] AS STOREM
FULL OUTER JOIN USERMANAGE AS USERM
ON STOREM.Store_ID = USERM.Store_ID
GO



以上!!


【ブログを始めるなら】

コメントを残す

メールアドレスが公開されることはありません。

CAPTCHA