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.