sql >> データベース >  >> RDS >> SQLite

SQLiteで既存のデータを更新する方法


    はじめに

    データの一部がデータベースに入ると、テーブルで費やされている間、データが静的なままになる可能性はほとんどありません。データは、関連性と最新性を維持するために表すシステムの変更を反映するように更新されます。 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の値を直接更新しています。 table1SELECTの戻り値になります table2のサブクエリ 、ただし、column2の行のみ table1column2に一致します 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の場合 テーブルはNULLbookで著者の最新の出版された本を入力できます 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 コマンドは、データベースへの最初の挿入後にデータを管理するために重要です。




    1. モデリングおよび正規化するときにnull値をどうするか?

    2. MySQLでデータを生成する方法は?

    3. MySQLで最大接続数を増やす方法

    4. SQL Server REPLACE()とTRANSLATE():違いは何ですか?