はじめに
データの一部がデータベースに入ると、テーブルで費やされている間、データが静的なままになる可能性はほとんどありません。データは、関連性と最新性を維持するために表すシステムの変更を反映するように更新されます。 SQLiteでは、UPDATE
を使用してレコードの値を変更できます SQLコマンド。
UPDATE
INSERT
と同様の機能 (列とその目的の値を指定するという点で)およびDELETE
(特定のレコードをターゲットにするために必要な基準を提供するという点で)。データを1つずつまたは一括で変更することもできます。この記事では、UPDATE
の使用方法について詳しく説明します。 すでにテーブルに保存されているデータを効果的に管理します。
UPDATE
の使用 データを変更するには
UPDATE
の基本構文 コマンドは次のようになります:
UPDATE my_tableSET column1 = value1, column2 = value2,WHERE id = 1;
基本的な構造には、3つの別個の句が含まれます。
- 動作するテーブルを指定する
- 更新する列とその新しい値を提供する
- 一致するレコードを決定するためにSQLiteが評価する必要のある基準を定義する
上記のように列に直接値を割り当てることができますが、INSERT
でよく見られるように、列リスト構文を使用することもできます。 コマンド。
たとえば、上記の例を次のように変更できます。
UPDATE my_tableSET (column1, column2) = (value1, value2)WHERE id = 1;
UPDATE
によって変更されたレコードを返す コマンド
デフォルトでは、SQLiteはUPDATE
の影響を受ける行数を表示しません 声明。ただし、SQLiteはRETURNING
を追加しました バージョン3.35.0
のPostgreSQLをモデルにした句 。この句により、コマンドは変更されたレコードのすべてまたは一部を返します。
アスタリスク*
を使用できます SELECT
のように、変更された行のすべての列を返す記号 ステートメント:
UPDATE my_tableSET column1 = value1, column2 = value2,WHERE id = 1RETURNING *;
さらに、AS
を使用して、エイリアスの有無にかかわらず表示したい正確な列を指定することもできます。 :
UPDATE my_tableSET column1 = value1, column2 = value2WHERE id = 1RETURNING column1 AS 'first column';
別のテーブルの値に基づいてレコードを更新する
新しい外部データに基づいてデータを更新することは、比較的合理化されたプロセスです。テーブル、列、新しい値、およびターゲティング基準を提供する必要があります。
ただし、SQLiteではUPDATE
を使用することもできます データベース内の別のテーブルの情報に基づいてテーブル値を条件付きで更新します。基本的な構文は次のようになります。
UPDATE table1SET table1.column1 =( SELECT table2.column1 FROM table2 WHERE table1.column2 = table2.column2);
ここでは、column1
の値を直接更新しています。 table1
で SELECT
の戻り値になります table2
のサブクエリ 、ただし、column2
の行のみ table1
の column2
に一致します table2
の 。 FROM
句は、2つのテーブルとWHERE
の間の接続を示します 条件を指定します。
例として、book
という2つのテーブルがあるとします。 およびauthor
。
CREATE TABLE author ( id INTEGER PRIMARY KEY, first_name TEXT, last_name TEXT, last_publication TEXT);CREATE TABLE book ( id INTEGER PRIMARY KEY, author_id INT REFERENCES author.id title TEXT, publication_year INTEGER);INSERT INTO author (first_name, last_name)VALUES ('Leo', 'Tolstoy'), ('James', 'Joyce'), ('Jean-Paul', 'Sarte'); INSERT INTO book (author_id, title, publication_year)VALUES (1, 'Anna Karenina', '1877'), (1, 'War and Peace', '1867'), (2, 'Ulysses', '1920'), (2, 'Dubliners', '1914'), (3, 'Nausea', '1938');
これらの2つのテーブルは、book.author_id
と関係があります。 author.id
を参照する 。現在、last_publication
author
の場合 テーブルはNULL
。 book
で著者の最新の出版された本を入力できます FROM
を使用したテーブル およびWHERE
2つのテーブルをまとめるための句。
ここでは、last_publication
を更新する例を示します。 :
UPDATE author SET last_publication=( SELECT title FROM book WHERE author_id = author.id ORDER BY author_id, publication_year DESC);
author
にクエリを実行する場合 表を見ると、データベース内の最新の出版物のタイトルが表示されます:
SELECT * FROM author;
+------------+------------+-----------+--------------------------+ id first_name last_name last_publication +-------------+------------+-----------+--------------------------+ 1 Leo Tolstoy Anna Karenina 2 James Joyce Ulysses 3 Jean-Paul Sarte Nausea +-------------+------------+-----------+--------------------------+
結論
このガイドでは、UPDATE
を使用してテーブル内の既存のデータを変更する基本的な方法について説明しました。 指図。これらの基本概念を実行すると、テーブル内の既存の行を識別し、列名を値で更新し、オプションでRETURNING
の影響を受けた行を返すために必要な正確な基準を指定できます。 。 UPDATE
コマンドは、データベースへの最初の挿入後にデータを管理するために重要です。