SQLite
 sql >> Base de données >  >> RDS >> SQLite

Comment mettre à jour des données existantes avec SQLite


Introduction

Une fois qu'une donnée entre dans une base de données, il est très peu probable qu'elle reste statique tout au long de son temps passé dans une table. Les données sont mises à jour pour refléter les changements dans les systèmes qu'elles représentent afin de rester pertinentes et à jour. SQLite vous permet de modifier les valeurs dans les enregistrements à l'aide de la UPDATE Commande SQL.

UPDATE fonctions similaires à INSERT (en ce sens que vous spécifiez les colonnes et leurs valeurs souhaitées) et DELETE (en ce sens que vous fournissez les critères nécessaires pour cibler des enregistrements spécifiques). Vous pouvez également modifier les données une par une ou en masse. Dans cet article, nous allons plonger dans l'utilisation de UPDATE efficacement pour gérer vos données déjà stockées dans des tables.



Utilisation de UPDATE modifier les données

La syntaxe de base de la UPDATE commande ressemble à ceci :

UPDATE my_tableSET        column1 = value1,        column2 = value2,WHERE        id = 1;

La structure de base implique trois clauses distinctes :

  • spécifier une table sur laquelle agir
  • fournir les colonnes que vous souhaitez mettre à jour ainsi que leurs nouvelles valeurs
  • définir tous les critères que SQLite doit évaluer pour déterminer les enregistrements à faire correspondre

Bien que vous puissiez attribuer des valeurs directement aux colonnes comme nous l'avons fait ci-dessus, vous pouvez également utiliser la syntaxe de liste de colonnes, comme on le voit souvent dans INSERT commandes.

Par exemple, nous pouvons modifier l'exemple ci-dessus pour qu'il ressemble à ceci :

UPDATE my_tableSET (column1, column2) =        (value1, value2)WHERE        id = 1;


Renvoyer les enregistrements modifiés par la UPDATE commande

Par défaut, SQLite n'affiche pas le nombre de lignes impactées par un UPDATE déclaration. Cependant, SQLite a ajouté le RETURNING clause modélisée après PostgreSQL dans la version 3.35.0 . Cette clause fait que les commandes retournent tout ou partie des enregistrements qui ont été modifiés.

Vous pouvez utiliser l'astérisque * symbole pour renvoyer toutes les colonnes des lignes modifiées un peu comme un SELECT déclaration :

UPDATE my_tableSET        column1 = value1,        column2 = value2,WHERE        id = 1RETURNING *;

De plus, vous pouvez également spécifier les colonnes exactes que vous souhaitez afficher avec/sans alias en utilisant AS :

UPDATE my_tableSET        column1 = value1,        column2 = value2WHERE        id = 1RETURNING column1 AS 'first column';


Mettre à jour les enregistrements en fonction des valeurs d'une autre table

La mise à jour des données sur la base de nouvelles données externes est un processus relativement simplifié. Il vous suffit de fournir le tableau, les colonnes, les nouvelles valeurs et les critères de ciblage.

Cependant, avec SQLite, vous pouvez également utiliser UPDATE pour mettre à jour conditionnellement les valeurs de table en fonction des informations d'une autre table de votre base de données. La syntaxe de base ressemblera à ceci :

UPDATE table1SET table1.column1 =(    SELECT table2.column1    FROM table2    WHERE table1.column2 = table2.column2);

Ici, nous mettons directement à jour la valeur de column1 dans table1 être le retour d'un SELECT sous-requête sur table2 , mais uniquement dans les lignes où column2 de table1 correspond à column2 de table2 . Le FROM la clause indique une connexion entre les deux tables et WHERE précise les conditions.

Par exemple, supposons que nous ayons deux tables appelées book et 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');

Ces deux tables ont une relation avec book.author_id faisant référence à author.id . Actuellement la last_publication pour l'author la table est NULL . Nous pouvons le remplir avec le dernier livre publié de l'auteur dans notre book table en utilisant FROM et WHERE clauses pour réunir les deux tables.

Ici, nous montrons un exemple mettant à jour last_publication :

UPDATE author SET last_publication=(  SELECT title   FROM book   WHERE author_id = author.id  ORDER BY author_id, publication_year DESC);

Si vous interrogez l'author tableau maintenant, il vous montrera le titre de leur publication la plus récente dans la base de données :

SELECT * FROM author;
+------------+------------+-----------+--------------------------+      id       first_name  last_name      last_publication     +-------------+------------+-----------+--------------------------+       1       Leo          Tolstoy        Anna Karenina              2       James         Joyce             Ulysses                3       Jean-Paul     Sarte             Nausea          +-------------+------------+-----------+--------------------------+


Conclusion

Dans ce guide, nous avons examiné les méthodes de base permettant de modifier les données existantes dans une table à l'aide de la commande UPDATE commande. L'exécution de ces concepts de base vous permet de spécifier les critères exacts nécessaires pour identifier les lignes existantes dans une table, mettre à jour les noms de colonnes avec des valeurs et éventuellement renvoyer les lignes qui ont été impactées par RETURNING . La UPDATE La commande est essentielle pour gérer vos données après l'insertion initiale dans vos bases de données.