SQL 入門 (DMLの基本形式:UPDATE)
データの変更 ( UPDATE: 1レコードの更新、複数レコードの更新 )
オラクル・データベースの特定のレコードデータを選択し変更する。
指定した1レコードのみを更新
USER_ID '0001'の人のDEPT_NOを'0004'、更新日を現在日付に変更する。
UPDATE USER_MASTER
SET
DEPT_NO = '0004',
MODIFIED_ON = SYSDATE
WHERE
USER_ID = '0001'
複数レコード更新
DEPT_NOが '1001' 所属の全員の USER_NAME に 'さん'を加え、更新日を現在日付に変更する。
UPDATE USER_MASTER
SET
USER_NAME = USER_NAME || ' さん',
MODIFIED_ON = SYSDATE
WHERE
DEPT_NO = '1001'
ビューを使った更新(インラインビューを使った更新)
DEPT_NOが '1002' 所属の全員の USER_NAME に '氏' を加え、更新日を現在日付に変更する。
この例は単独表による簡単な UPDATE 例であるが、更新可能なビュー に属する問合せならば結合であっても良い。これは WHERE 句に同質の副問い合わせを繰り返し記述する事よりもスマートでかつパフォーマンスチューニングの観点からも優れた記述方法になる事が非常に多い。
UPDATE (
SELECT
DEPT_NO, USER_NAME
FROM USER_MASTER
WHERE DEPT_NO = '1002'
) -- [ ビューの別名 ]
SET
USER_NAME = USER_NAME || ' 氏',
MODIFIED_ON = SYSDATE
/*
WHERE
DEPT_NO = '1002'
*/
UPDATE の基本フォーマット
UPDATE
{
<表名> [ エイリアス名 ] |
<ビュー名> [ エイリアス名 ]
}
SET
{
<カラム名> = < 値 > |
<カラム名> = < 式 > |
<カラム名> = < SELECT文/問い合わせ >
}
[ WHERE < 条件 > ]
VIEW の場合にはテーブル結合, 集合演算子 (UNION / INTERSECT / MINUS), GROUP BY 句、
グループ関数、DISTINCT 演算子を含んでいないこと
SQL - UPDATE 関連