ぱそくま ろご
Windows > SQL Server > SELECT、INSERT、UPDATE、DELETEの例

SELECT、INSERT、UPDATE、DELETEの例

SELECT文

社員マスタ(TM_MEMBER)から全てのレコードを選択
SELECT * FROM TM_MEMBER;
テーブル TEST_TABLEとTEST_TABLE_BのID列の値が同じレコードを選択
SELECT A.*
  FROM TEST_TABLE AS A
 INNER JOIN TEST_TABLE_B AS B
    ON (A.ID = B.ID)
;
テーブル TEST_TABLEにあってTEST_TABLE_Bにないレコードを選択
SELECT A.*
  FROM TEST_TABLE AS A
  LEFT JOIN TEST_TABLE_B AS B
    ON (A.ID = B.ID)
 WHERE B.ID IS NULL
;


INSERT文

テーブル TM_MEMBERにデータを1つ挿入
INSERT INTO TM_MEMBER
  (ID, NAME_SEI, NAME_MEI)
VALUES
  (1, '田中', '太郎')
;
テーブル TM_MEMBERにデータを複数挿入
INSERT INTO TM_MEMBER
  (ID, NAME_SEI, NAME_MEI)
VALUES
  (1, '田中', '太郎'),
  (2, '田中', '次郎'),
  (3, '田中', '花子')
;
IDENTITY列のあるTM_MEMBERにデータを挿入
-- IDENTITY列に値の挿入を許可する
SET IDENTITY_INSERT TM_MEMBER ON;

/*
 * 注意) SET IDENTITY_INSERT を使用した場合、
 * INSERT文に挿入先テーブルの列リストは省略することができません。
 *
 * NG:INSERT INTO TM_MEMBER VALUES ....
 * OK:INSERT INTO TM_MEMBER (ID ....) VALUES ....
 *
 */
INSERT INTO TM_MEMBER
  (ID, NAME_SEI, NAME_MEI)
VALUES
  (1, '田中', '太郎')
;

-- IDENTITY列に値の挿入を許可しない(念のため)
SET IDENTITY_INSERT TM_MEMBER OFF;
テーブル TT_BACKUPにTT_EMPのデータを挿入
INSERT INTO TT_BACKUP
(ID, NAME)
SELECT ID, NAME
  FROM TT_EMP
;

DELETE文

テーブル TT_REPORTの更新日(MOD_DATE)が1年以上前のデータを削除
DELETE FROM TT_REPORT
 WHERE MOD_DATE < DATEADD(year, -1, GETDATE())
;
テーブル TT_REPORTのうち、TM_MEMBERに存在しないレコードを削除

-- 残念ながらDELETE文のテーブル名に別名(エイリアス)は使用できません。

DELETE REP FROM TT_REPORT
 WHERE NOT EXISTS
 (SELECT * FROM TM_MEMBER AS MEM
   WHERE TT_REPORT.MEM_ID = MEM.MEM_ID
 )
;

UPDATE文

吉田さんが田中さんと結婚して、田中になったので社員テーブル(TM_MEMBER)を更新
UPDATE TM_MEMBER
   SET NAME_SEI = '田中',   /* 名前を田中に */
       IS_MARIG = 1         /* 既婚に1をセット */
 WHERE MEM_ID = 10
;
テーブル TEST_TABLEのFIELD_1にTEST_TABLE_BのB_FIELDをセット
UPDATE A
   SET A.FIELD_1 = B.B_FIELD
  FROM TEST_TABLE AS A
 INNER JOIN TEST_TABLE_B AS B
    ON (A.UNIQUE_KEY_1 = B.UNIQUE_KEY_1);