「UPDATE (SQL)」の版間の差分
表示
削除された内容 追加された内容
m ボット: 言語間リンク 14 件をウィキデータ上の d:q1076005 に転記 |
|||
10行目: | 10行目: | ||
テーブル "t" に対し、列 "c2" の値が a であれば、列 "c1" の値を 1 にセットする。 |
テーブル "t" に対し、列 "c2" の値が a であれば、列 "c1" の値を 1 にセットする。 |
||
< |
<syntaxhighlight lang="sql"> |
||
UPDATE t SET c1 = 1 WHERE c2 = 'a'; |
UPDATE t SET c1 = 1 WHERE c2 = 'a'; |
||
</syntaxhighlight> |
|||
</source> |
|||
テーブル "t" に対し、列 "c2" の値が a であれば、列 "c1" の値に 1 を加算する。 |
テーブル "t" に対し、列 "c2" の値が a であれば、列 "c1" の値に 1 を加算する。 |
||
< |
<syntaxhighlight lang="sql"> |
||
UPDATE t SET c1 = c1 + 1 WHERE c2 = 'a'; |
UPDATE t SET c1 = c1 + 1 WHERE c2 = 'a'; |
||
</syntaxhighlight> |
|||
</source> |
|||
1つのUPDATEステートメントで複数列を更新することも可能である。下の例では、テーブル "t" に対し、列 "c1" の値に 1 を、列 "c2" の値に 2 をセットする。 |
1つのUPDATEステートメントで複数列を更新することも可能である。下の例では、テーブル "t" に対し、列 "c1" の値に 1 を、列 "c2" の値に 2 をセットする。 |
||
< |
<syntaxhighlight lang="sql"> |
||
UPDATE test SET c1 = 1, c2 = 2; |
UPDATE test SET c1 = 1, c2 = 2; |
||
</syntaxhighlight> |
|||
</source> |
|||
=== 結合 === |
=== 結合 === |
||
30行目: | 30行目: | ||
'''サブクエリ''' |
'''サブクエリ''' |
||
< |
<syntaxhighlight lang="sql"> |
||
UPDATE t1 |
UPDATE t1 |
||
SET a1 = 2 |
SET a1 = 2 |
||
WHERE a2 IN (SELECT b2 FROM t2 WHERE b1 = 0); |
WHERE a2 IN (SELECT b2 FROM t2 WHERE b1 = 0); |
||
</syntaxhighlight> |
|||
</source> |
|||
'''結合''' |
'''結合''' |
||
< |
<syntaxhighlight lang="sql"> |
||
UPDATE t1 |
UPDATE t1 |
||
SET a1 = 2 |
SET a1 = 2 |
||
FROM t2 |
FROM t2 |
||
WHERE t1.a2 = t2.b2 AND t2.b1 = 0; |
WHERE t1.a2 = t2.b2 AND t2.b1 = 0; |
||
</syntaxhighlight> |
|||
</source> |
|||
{{Database}} |
{{Database}} |
2020年7月5日 (日) 22:47時点における版
UPDATEステートメントは、SQL におけるデータ操作言語 (DML) のステートメントの1つで、テーブル内の1つもしくは複数のレコードのデータを更新する。WHERE句が省略されている場合はすべてのレコードが、指定されている場合はその条件式を満たす一部のレコードだけが、一括して更新される。
構文
UPDATE テーブル名 SET 列名1 = 値1 [,列名2 = 値2...] [WHERE 条件式];
正常に更新が行われるためには、更新されるテーブルや列に対する更新権限をユーザが持っている必要がある。また、更新後の値がPRIMARY KEY制約、一意性制約、CHECK制約、NOT NULL制約などに違反しないことが必要である。
例
基本構文
テーブル "t" に対し、列 "c2" の値が a であれば、列 "c1" の値を 1 にセットする。
UPDATE t SET c1 = 1 WHERE c2 = 'a';
テーブル "t" に対し、列 "c2" の値が a であれば、列 "c1" の値に 1 を加算する。
UPDATE t SET c1 = c1 + 1 WHERE c2 = 'a';
1つのUPDATEステートメントで複数列を更新することも可能である。下の例では、テーブル "t" に対し、列 "c1" の値に 1 を、列 "c2" の値に 2 をセットする。
UPDATE test SET c1 = 1, c2 = 2;
結合
他のテーブルと結合した結果により更新を行う場合、サブクエリ(副次問い合わせ)を用いる方法と、SELECT ステートメントと類似の結合式を用いる方法がある。以下の例はどちらも、テーブル "t1" に対し、列 "a2" の値が、テーブル "t2" の列 "b1" の値が 0 であるすべてのレコードにおける列 "b2" の値のいずれかと一致すれば、列 "a1" に 2 をセットする。
サブクエリ
UPDATE t1
SET a1 = 2
WHERE a2 IN (SELECT b2 FROM t2 WHERE b1 = 0);
結合
UPDATE t1
SET a1 = 2
FROM t2
WHERE t1.a2 = t2.b2 AND t2.b1 = 0;