SQLのUPDATE文は、表に存在する行を更新する。UPDATE文はDMLの一種であり、コミットすることで更新が確定される。更新対象がロックされている場合は、ロックが解除されるまで待つ。

目次

UPDATEの構文

社員表(emp)のすべてのレコードについて、部署番号列(deptno)を更新する。

UPDATE emp SET deptno = 10

社員表のすべてのレコードについて、歩合給(comm)と部署番号列を更新する。

UPDATE emp SET comm = NULL, deptno = 10

自分のスキーマ内以外にあるテーブルを更新するには、スキーマ名も指定する。

UPDATE schema1.emp SET deptno = 10

WHERE

UPDATEで更新するレコードに条件を指定したい場合は、WHERE句で条件を指定する。更新対象が複数行ある場合は、それらのすべてを更新する。更新対象が無い場合は、何も更新せず、エラーにもならない。

社員表のレコードのうち、社員番号(empno)が1004のレコードについて、社員名(ename)を更新する。

UPDATE emp SET ename = '堀内まり菜' WHERE empno = 1004

NULLのときは更新しない

NULLのときは更新しない場合、WHERE句でIS NOT NULLを使う。

UPDATE emp SET comm = comm * 2 WHERE comm IS NOT NULL

UPDATEに必要な権限

自分のスキーマ内にある表の行を更新するには、とくに権限は必要ない。

更新するテーブルが自分のスキーマ内にない場合は、更新するテーブルに対するUPDATEオブジェクト権限が必要である。

トランザクション制御

UPDATEで更新した内容は、まだ確定されていない。変更内容を確定するには、コミットする必要がある。

UPDATE emp SET deptno = 10
COMMIT

コミットする前であれば、UPDATEで更新した内容を元に戻すことができる。変更内容をキャンセルするには、ロールバックする。

UPDATE emp SET deptno = 10
ROLLBACK

関連SQL

SEO [PR] 爆速!無料ブログ 無料ホームページ開設 無料ライブ放送