コンテンツにスキップ

英文维基 | 中文维基 | 日文维基 | 草榴社区

「UPDATE (SQL)」の版間の差分

出典: フリー百科事典『ウィキペディア(Wikipedia)』
削除された内容 追加された内容
Addbot (会話 | 投稿記録)
m ボット: 言語間リンク 14 件をウィキデータ上の d:q1076005 に転記
Cewbot (会話 | 投稿記録)
m Bot作業依頼: sourceタグをsyntaxhighlightタグに置換 (Category:非推奨のsourceタグを使用しているページ) - log
10行目: 10行目:
テーブル "t" に対し、列 "c2" の値が a であれば、列 "c1" の値を 1 にセットする。
テーブル "t" に対し、列 "c2" の値が a であれば、列 "c1" の値を 1 にセットする。


<source lang="sql">
<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 を加算する。


<source lang="sql">
<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 をセットする。


<source lang="sql">
<syntaxhighlight lang="sql">
UPDATE test SET c1 = 1, c2 = 2;
UPDATE test SET c1 = 1, c2 = 2;
</syntaxhighlight>
</source>


=== 結合 ===
=== 結合 ===
30行目: 30行目:


'''サブクエリ'''
'''サブクエリ'''
<source lang="sql">
<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>


'''結合'''
'''結合'''
<source lang="sql">
<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;