Geekflare est soutenu par notre public. Nous pouvons gagner des commissions d'affiliation en achetant des liens sur ce site.
In Base de données Dernière mise à jour : 17 juillet 2023
Partager sur:
Scanner de sécurité des applications Web Invicti – la seule solution qui offre une vérification automatique des vulnérabilités avec Proof-Based Scanning™.

Apprenez à utiliser la commande SQL UPDATE pour mettre à jour des enregistrements dans une table de base de données.

En tant que développeur, vous devez être à l'aise avec les bases de données relationnelles. SQL (ou Structured Query Language) est un langage convivial pour les débutants, intuitif à apprendre et doté d'une syntaxe simple. SQL vous permet de créer des objets de base de données et d'interroger des tables de bases de données relationnelles.

Vous pouvez exécuter des requêtes SQL pour créer, lire, mettre à jour et supprimer des enregistrements dans une table de base de données. Vous savez peut-être que ces opérations sont collectivement appelées opérations CRUD. 

Pour mettre à jour les enregistrements stockés dans une table de base de données, vous pouvez exécuter le UPDATE commande en SQL. 

Dans ce didacticiel, vous apprendrez :

  • La syntaxe du UPDATE commander 
  • Comment mettre à jour des enregistrements en fonction d'une condition spécifique ou de plusieurs conditions enchaînées à l'aide d'opérateurs logiques 
  • Mise en garde commune à prendre en compte lors de l'exécution du SQL UPDATE commander 

Syntax of the SQL UPDATE Command

La syntaxe de la commande SQL UPDATE est :

UPDATE table_name
SET column = new_value
WHERE condition;

La requête ci-dessus est mise à jour column pour tous les enregistrements où le condition est vrai.

Pour mettre à jour plusieurs colonnes (ou champs), utilisez la commande SQL UPDATE comme suit :

UPDATE table_name
SET column_1 = new_value_1, column_2 = new_value_2, ..., column_k = new_value_k
WHERE condition;

Rappelons que dans une base de données relationnelle :

  • Les table représente un entité.
  • Les lignes du tableau sont les Articles et représentent une instance de l'entité.
  • Les colonnes sont aussi appelés les des champs ou attributs. Dans ce tutoriel, nous utiliserons colonnes et champs indifféremment.

SQL UPDATE Command Usage Examples

Prenons maintenant quelques exemples.

Pré-requis

Avant de commencer à coder :

  • Ce tutoriel utilise SQLite. Vous aurez donc besoin d'avoir SQLite et Navigateur de base de données SQLite (recommandé) pour coder en même temps. Notez que vous pouvez également utiliser MySQL ou PostgreSQL.
  • Si vous souhaitez reproduire l'exemple, vous avez besoin de Python et de Paquet Faker Python également.

Création d'une table de base de données avec des enregistrements

Si vous souhaitez coder avec ce didacticiel, vous pouvez exécuter l'extrait de code suivant pour créer et vous connecter à une base de données client customer_db.db. Notez que nous utilisons la bibliothèque Faker Python pour générer des données synthétiques à insérer dans le customers table:

# main.py

import sqlite3
from faker import Faker
import random

# connect to the db
conn = sqlite3.connect('customer_db.db')
cur = conn.cur()

# create a database table
cur.execute('''CREATE TABLE customers (
                  customerID INTEGER PRIMARY KEY,
                  name TEXT,
                  city TEXT,
                  email TEXT,
                  num_orders INTEGER,
                  discount INTEGER DEFAULT 2)''')


# create a Faker object 
fake = Faker()
Faker.seed(42)

for _ in range(15):
    name = fake.name()
    city = fake.city()
    d = fake.domain_name()
    email = f"{name[:2]}.{city[:2]}@{d}"
    num_orders = random.choice(range(200))
    db_cursor.execute('INSERT INTO customers (name, city, email, num_orders) \
    VALUES (?,?,?,?)', (name,city,email,num_orders))

# commit the transaction 
conn.commit()
cur.close()
conn.close()

📑 Pour que ce code fonctionne sans erreur, assurez-vous d'avoir Python 3.7 (ou une version ultérieure) et Faker installé dans votre environnement de développement. Vous pouvez installer le package Faker Python en utilisant pip :

pip install faker

Si vous disposez déjà d'une base de données à laquelle vous pouvez vous connecter et d'une table de base de données que vous pouvez interroger, vous pouvez également l'utiliser selon vos préférences.

Exécution de notre première requête SQL

Les customers table contient les champs suivants :

  • customerID: Les customerID est la clé primaire qui nous aide à identifier de manière unique un enregistrement dans une table de base de données.
  • name: Le nom du client
  • city: La ville à laquelle ils appartiennent.
  • email: Son adresse e-mail.
  • num_orders: Le nombre de commandes passées.
  • discount: Le pourcentage de remise, un entier avec une valeur par défaut de 2. Parce que le discount champ a une valeur par défaut, nous n'avons pas besoin d'insérer une valeur lors du remplissage de la table de base de données.

📝 Vous pouvez exécuter les requêtes et afficher les résultats à l'aide du client de ligne de commande SQLite. Ou vous pouvez utiliser le navigateur de base de données SQLite.

Je présenterai les sorties du navigateur SQLite DB car elles sont faciles à interpréter.

Exécutez la requête suivante pour obtenir tous les enregistrements du customers table:

SELECT * FROM customers;
image 78

En pratique, il faut éviter d'utiliser SELECT * sauf si c'est nécessaire. Mais pour cet exemple, nous l'utiliserons car nous n'avons que 15 enregistrements et peu de champs.

Mise à jour des enregistrements en fonction d'une seule condition

Maintenant que nous savons à quoi ressemble notre table, exécutons quelques UPDATE requêtes pour mettre à jour les enregistrements en fonction de la condition requise.

📋 Notes: Après avoir exécuté les instructions UPDATE, nous allons exécuter SELECT * FROM customers pour voir les enregistrements mis à jour.

Mise à jour d'un seul champ

Tout d'abord, mettons à jour le city champ de l'enregistrement avec customerID=7:

UPDATE customers
SET city='Codeshire'
WHERE customerID=7;

Sélectionnons toutes les colonnes et tous les enregistrements de la table clients :

SELECT * FROM customers;
sql-mise à jour-1

Nous voyons que le city domaine de Danielle Ford (customerID=7) a été mis à jour.

Mise à jour de plusieurs champs

Dans l'exemple précédent, nous avons mis à jour un seul champ, à savoir le city de l'enregistrement correspondant au customerID 7. Mais nous pouvons également mettre à jour plusieurs champs en utilisant la syntaxe que nous avons apprise.

Ici, nous mettons à jour à la fois le city les nouveautés email champ correspondant à la customerID 1:

UPDATE customers
SET city='East Carlisle',email='Al.Ea@isle.com'
WHERE customerID=1;

Ensuite, nous exécutons:

SELECT * FROM customers;

Et voici la sortie:

sql-mise à jour-2

Mise à jour de plusieurs enregistrements

Parce que nous avons utilisé le customerID qui est la clé primaire qui identifie de manière unique un enregistrement client, les requêtes que nous avons exécutées jusqu'à présent n'ont mis à jour qu'un seul des enregistrements.

Toutefois, si la condition est vraie pour plusieurs enregistrements de la table, l'exécution de la commande de mise à jour SQL met à jour tous les enregistrements correspondants.

Prenez cette requête par exemple :

UPDATE customers 
SET discount=10
WHERE num_orders > 170;

Exécutez maintenant cette requête :

SELECT * FROM customers;

Voici la sortie:

sql-mise à jour-3

L'exécution de la commande de mise à jour SQL ci-dessus modifie trois enregistrements. Elles ont toutes num_orders supérieur à 170 et ont maintenant un discount valeur de 10.

Mise à jour des enregistrements en fonction de plusieurs conditions 

Jusqu'à présent, le WHERE clause avait une condition simple, mais il est courant que le critère de filtrage ait plusieurs conditions enchaînées par des opérateurs logiques.

Pour comprendre cela, fixons la remise à 5 en fonction de deux conditions :

  • city LIKE 'New%' : cette condition vérifie et inclut les enregistrements dans lesquels le champ de la ville commence par Nouveau, et 
  • num_orders > 100 filtres basés sur le nombre de commandes pour n'inclure que les enregistrements pour lesquels le nombre de commandes est supérieur à 100.

L'instruction UPDATE ressemble à ceci :

UPDATE customers
SET DISCOUNT=5
WHERE city LIKE 'New%' AND num_orders>100;

Remarquez que nous avons maintenant deux conditions dans le WHERE clause—chaînées par l'opérateur logique ET. Et seuls les enregistrements pour lesquels les deux conditions sont vraies sont mis à jour.

Exécutez ensuite cette requête et observez le résultat :

SELECT * FROM customers;

Comme on le voit dans la sortie, le discount champ pour les enregistrements pour lesquels les deux conditions ci-dessus sont vraies sont mis à jour :

sql-mise à jour-4

Common Caveat When Using the SQL UPDATE Command

Dans toutes les instructions UPDATE exécutées jusqu'à présent, nous avons inclus la clause WHERE.

Par exemple, vous souhaitez mettre à jour la remise à 25 pour un client particulier. Et dans votre requête de mise à jour, vous oubliez d'inclure le WHERE clause avec le customerID filtrer sur :

UPDATE customers
SET DISCOUNT=25;

Maintenant, lancez:

SELECT * FROM customers;

Vous verrez que tous les enregistrements de la table sont mis à jour. Ce n'est peut-être pas le comportement que vous souhaiteriez.

sortie

⚠ Pensez donc à inclure le WHERE clause lorsque vous souhaitez mettre à jour un sous-ensemble d'enregistrements en fonction d'une condition. Si vous souhaitez mettre à jour un champ particulier pour tous les enregistrements, vous pouvez omettre la clause WHERE.

Dans cet exemple, supposons que la vente du Black Friday approche et que vous souhaitiez offrir à tous vos clients une remise de 25 %. Ensuite, exécuter la requête ci-dessus aura du sens.

Conclusion

Voici un résumé de ce que vous avez appris :

  • Lorsque vous souhaitez mettre à jour des enregistrements dans une table de base de données, vous pouvez utiliser la commande SQL UPDATE.
  • Le SQL UPDATE déclaration comprend généralement le WHERE clause avec la condition qui détermine le sous-ensemble d'enregistrements (lignes de la table) à mettre à jour. 
  • En omettant le WHERE clause dans le UPDATE La déclaration met à jour tous les enregistrements. Il faut donc faire attention à ne pas omettre WHERE clause si la mise à jour de toutes les lignes de la table n'est pas le comportement souhaité.

Ensuite, regardez ceci Aide-mémoire SQL pour référence rapide.

  • Bala Priya C
    Auteur
    Bala Priya est un développeur et rédacteur technique indien avec plus de trois ans d'expérience dans le domaine de la rédaction de contenu technique. Elle partage son apprentissage avec la communauté des développeurs en créant des didacticiels techniques, des guides pratiques, etc. lire la suite
  • Narendra Mohan Mittal
    Éditeur

    Narendra Mohan Mittal est stratège principal en stratégie de marque numérique et éditeur de contenu avec plus de 12 ans d'expérience polyvalente. Il est titulaire d'un M-Tech (médaillé d'or) et d'un B-Tech (médaillé d'or) en informatique et ingénierie.


    ... lire la suite
Merci à nos commanditaires
Plus de bonnes lectures sur la base de données
Alimentez votre entreprise
Certains des outils et services pour aider votre entreprise à se développer.
  • Invicti utilise Proof-Based Scanning™ pour vérifier automatiquement les vulnérabilités identifiées et générer des résultats exploitables en quelques heures seulement.
    Essayez Invicti
  • Web scraping, proxy résidentiel, proxy manager, web unlocker, moteur de recherche et tout ce dont vous avez besoin pour collecter des données Web.
    Essayez Brightdata
  • Monday.com est un système d'exploitation de travail tout-en-un pour vous aider à gérer les projets, les tâches, le travail, les ventes, le CRM, les opérations, workflowset plus encore.
    Essayez Monday
  • Intruder est un scanner de vulnérabilités en ligne qui détecte les failles de cybersécurité de votre infrastructure, afin d'éviter des violations de données coûteuses.
    Essayez Intruder