【DB】SELECT文(副問合わせ)

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



SELECT文

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



[基本構文]

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




副問合わせ

副問合わせは、「SELECT」「INSERT」「UPDATE」「DELETE」のDMLの中で、さらに他のSELECT文を実施することである。



[構文]

SELECT 列名,列名,,,,
FROM テーブル名
WHERE 条件 (SELECT 条件に関わる列、または関数
      FROM テーブル名
      WHERE 条件)



[例]
USE [TestDB]
GO

--条件を指定した副問合わせ
SELECT [User_ID]
      ,[User_Name]
FROM  [USERMANAGE]
WHERE [User_ID] = (  SELECT [User_ID]
                     FROM [USERMANAGE]
		     WHERE [User_ID] = '1')
			

--関数を使用した副問い合わせ
SELECT [User_ID]
      ,[User_Name]
FROM  [USERMANAGE]
WHERE [User_ID] IN (SELECT [User_ID]
                    FROM [USERMANAGE])
GO




相関副問合わせ

相関副問合わせは、副問い合わせで指定するテーブルの列と外側の列を結合して1行ずつ処理していく問い合わせです。主に「EXISTS」や「NOT EXISTS」を使用し、「EXISTS」とは副問合わせの内容がテーブルに含まれるものを抽出するために使用します。


[構文]

SELECT 列名,列名,,,,
FROM テーブル名
WHERE EXISTS または NOT EXISTS (SELECT 条件に関わる列、または関数
      FROM テーブル名2
      WHERE テーブル名.列名 = テーブル名2.列名)



[例]
USE [TestDB]
GO


--副問合わせに一致する列を抽出
SELECT [User_ID]
      ,[User_Name]
FROM  [USERMANAGE]
WHERE EXISTS (SELECT [User_ID]
                FROM [STOREMANAGE]
		WHERE [USERMANAGE].[Store_ID] =  [STOREMANAGE].[Store_id]
		AND [User_ID] = '1')
			

--副問合わせに一致しない列を抽出
SELECT [User_ID]
      ,[User_Name]
FROM  [USERMANAGE]
WHERE NOT EXISTS (SELECT [User_ID]
                   FROM [STOREMANAGE]
		   WHERE [USERMANAGE].[Store_ID] =  [STOREMANAGE].[Store_id]
		   AND [User_ID] = '1')
GO



以上!!




【ブログを始めるなら】

コメントを残す

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

CAPTCHA