Cours : SQL
1- Types de données SQL :
Numériques :
o INT : Entier sur 4 octets, utilisé pour stocker des valeurs
numériques entières.
o TINYINT : Entier sur 1 octet (de -128 à 127 ou 0 à 255 pour les
valeurs non signées).
o SMALLINT : Entier sur 2 octets.
o MEDIUMINT : Entier sur 3 octets.
o BIGINT : Entier sur 8 octets, pour les très grandes valeurs
numériques.
o DECIMAL(p, s) : Nombre décimal avec précision, pour stocker
des valeurs avec des décimales.
o FLOAT et DOUBLE : Nombres à virgule flottante, de
précisions différentes.
Caractères et chaînes :
o CHAR(n) : Chaîne de caractères de longueur fixe.
o VARCHAR(n) : Chaîne de caractères de longueur variable,
jusqu'à un maximum de n caractères.
o TEXT : Chaîne de texte de longueur variable, pour stocker de
grandes quantités de texte. Jusqu'à 65,535 caractères (ou 64
Ko).
o TINYTEXT : Idéal pour de très petites quantités de texte,
comme un court résumé ou une description très succincte.
Jusqu'à 255 caractères (ou 255 octets).
o MEDIUMTEXT : Approprié pour des champs qui contiennent
de grandes quantités de texte, comme des articles de blog, des
From BLUE LIFE TECH - LAPTOP 01 ~ ALLADAYE Sarlas
descriptions complètes de produits ou des documents. Jusqu'à
16,777,215 caractères (ou 16 Mo).
o LONGTEXT : Conçu pour des données textuelles extrêmement
volumineuses, comme le contenu complet de livres, des
journaux de données (logs), ou des articles très longs. Jusqu'à
4,294,967,295 caractères (ou 4 Go).
Date et heure :
o DATE : Stocke les dates au format YYYY-MM-DD.
o DATETIME : Stocke date et heure au format YYYY-MM-DD
HH:MM:SS.
o TIMESTAMP : Date et heure pour les horodatages, souvent
utilisé pour les enregistrements automatiques de date/heure.
o TIME : Stocke uniquement l’heure.
o YEAR : Stocke l'année sur 2 ou 4 chiffres.
Booléens et valeurs logiques :
o BOOLEAN ou BOOL : Représente une valeur vraie ou fausse
(généralement stocké sous forme de TINYINT).
Autres types :
o ENUM : Liste de valeurs possibles, utile pour les choix limités
(ENUM('Option1', 'Option2', ...)).
o SET : Liste de valeurs qui permet de sélectionner plusieurs
valeurs dans un ensemble défini.
o BLOB (Binary Large Object) : Utilisé pour stocker des données
binaires, comme des images ou des fichiers.
2- Gestion des contraintes de colonne :
o NOT NULL : Empêche une colonne de contenir des valeurs
nulles.
o DEFAULT : Définit une valeur par défaut pour une colonne,
utilisée si aucune valeur n'est fournie lors de l'insertion.
From BLUE LIFE TECH - LAPTOP 01 ~ ALLADAYE Sarlas
o AUTO_INCREMENT : Incrémente automatiquement la valeur
d’une colonne, souvent utilisé pour les identifiants uniques.
o PRIMARY KEY : Définit une colonne (ou un ensemble de
colonnes) comme clé primaire de la table, assurant l'unicité de
chaque enregistrement.
o FOREIGN KEY : Utilisée pour établir des relations entre deux
tables, en reliant une colonne de la table actuelle à une clé
primaire d'une autre table.
o UNIQUE : Garantit que toutes les valeurs d'une colonne sont
uniques.
o CHECK : Définit une condition qui doit être satisfaite par les
valeurs d’une colonne.
o INDEX : Utilisé pour optimiser les performances des requêtes
sur une colonne spécifique.
o CONSTRAINT : Utilisé pour définir des contraintes nommées,
particulièrement pour les clés étrangères et les vérifications.
3- CREATE DATABASE
La commande CREATE DATABASE est utilisée pour créer une
nouvelle base de données dans un système de gestion de base de
données. Une base de données contient des tables, des vues, des
procédures stockées, et d'autres objets utilisés pour stocker et
manipuler les données.
Syntaxe de base : CREATE DATABASE nom_de_la_base;
nom_de_la_base : Le nom de la base de données à créer. Il doit être
unique dans le SGBDR pour éviter les conflits.
Exemple 1 : Création d'une base de données simple
CREATE DATABASE ma_base;
From BLUE LIFE TECH - LAPTOP 01 ~ ALLADAYE Sarlas
Exemple 2 : Création d'une base de données avec des options
supplémentaires (MySQL)
Dans MySQL, vous pouvez spécifier le jeu de caractères et le
collationnement :
CREATE DATABASE ma_base CHARACTER SET utf8mb4
COLLATE utf8mb4_general_ci;
CHARACTER SET : Définit le jeu de caractères (comme UTF-8)
pour les données dans la base de données.
COLLATE : Définit le collationnement (méthode de tri des données),
ce qui affecte l'ordre des résultats dans les requêtes.
Exemple 3 : Création d'une base de données tout en évitant les
conflits ou erreurs d’exécution
Avant de créer une base de données, il est souvent judicieux de
vérifier si une base de données du même nom existe déjà pour éviter
les erreurs. Certains SGBDR, comme MySQL, permettent d'utiliser
l'option IF NOT EXISTS :
CREATE DATABASE IF NOT EXISTS ma_base;
4- DROP DATABASE
La commande DROP DATABASE permet de supprimer une base de
données si vous n'en avez plus besoin.
Attention : cette commande est irréversible et supprimera toutes
les tables et données de la base.
DROP DATABASE ma_base;
5- Exercices pratiques
a. Créer une base de données : Créez une base de données
nommée test_db.
From BLUE LIFE TECH - LAPTOP 01 ~ ALLADAYE Sarlas
b. Ajoutez un jeu de caractères et un collationnement : Créez une
base de données nommée commerce_db avec le jeu de
caractères UTF-8 et le collationnement utf8_general_ci.
c. Vérification de l'existence : Créez une base de données
nommée ecole_db, mais uniquement si elle n'existe pas.
SOLUTIONS :
-- Exercice a.
CREATE DATABASE test_db;
-- Exercice b.
CREATE DATABASE commerce_db CHARACTER SET utf8
COLLATE utf8_general_ci;
-- Exercice c.
CREATE DATABASE IF NOT EXISTS ecole_db;
6- CREATE TABLE
La commande CREATE TABLE est utilisée pour définir une
nouvelle table dans une base de données. Elle spécifie les colonnes
de la table, leurs types de données, les contraintes (comme les clés
primaires), et d'autres options.
From BLUE LIFE TECH - LAPTOP 01 ~ ALLADAYE Sarlas
Syntaxe de base :
CREATE TABLE nom_de_la_table (
nom_colonne1 type_donnees [contrainte],
nom_colonne2 type_donnees [contrainte],
...
);
nom_de_la_table : Le nom de la table que vous souhaitez créer.
nom_colonne : Le nom de chaque colonne dans la table.
type_donnees : Le type de données de la colonne (comme INT,
VARCHAR, DATE, etc.).
contrainte : Les contraintes appliquées à la colonne, comme
PRIMARY KEY, NOT NULL, UNIQUE, etc.
Autres contraintes courantes
Voici d'autres contraintes que vous pouvez utiliser dans CREATE
TABLE :
o FOREIGN KEY : Spécifie qu'une colonne est une clé étrangère,
pointant vers une colonne clé primaire d'une autre table.
o CHECK : Contraint les valeurs d'une colonne en fonction d'une
condition. Par exemple, CHECK (salaire >= 0) garantit que le
salaire est positif.
o AUTO_INCREMENT : Utilisé dans MySQL pour augmenter
automatiquement la valeur d'une colonne INT. Par exemple, id
INT AUTO_INCREMENT.
From BLUE LIFE TECH - LAPTOP 01 ~ ALLADAYE Sarlas
Exemple 1 : Table simple sans contrainte
CREATE TABLE employes (
id INT,
nom VARCHAR(50),
prenom VARCHAR(50),
salaire DECIMAL(10, 2),
date_embauche DATE
);
Ce code crée une table employes avec les colonnes suivantes :
id : Identifiant de l'employé (entier).
nom : Nom de l'employé (jusqu'à 50 caractères).
prenom : Prénom de l'employé (jusqu'à 50 caractères).
salaire : Salaire de l'employé (nombre décimal avec 10 chiffres au
total, dont 2 après la virgule).
date_embauche : Date d'embauche de l'employé.
Exemple 2 : Table avec contraintes
CREATE TABLE employes (
id INT PRIMARY KEY,
nom VARCHAR(50) NOT NULL,
prenom VARCHAR(50) NOT NULL,
email VARCHAR(100) UNIQUE,
salaire DECIMAL(10, 2) DEFAULT 0.00,
date_embauche DATE
);
From BLUE LIFE TECH - LAPTOP 01 ~ ALLADAYE Sarlas
Dans cet exemple :
PRIMARY KEY : id est défini comme clé primaire, ce qui signifie
qu'il doit être unique pour chaque employé et ne peut pas être
nul.
NOT NULL : nom et prenom sont obligatoires, ils ne peuvent pas
être laissés vides.
UNIQUE : email doit être unique dans la table.
DEFAULT : salaire a une valeur par défaut de 0.00 si aucun
salaire n'est spécifié.
Exemple 3 : Table avec clé étrangère
CREATE TABLE departements (
id INT PRIMARY KEY,
nom VARCHAR(50) NOT NULL
);
CREATE TABLE employes (
id INT PRIMARY KEY,
nom VARCHAR(50) NOT NULL,
prenom VARCHAR(50) NOT NULL,
id_departement INT,
FOREIGN KEY (id_departement) REFERENCES departements(id)
);
Dans cet exemple :
La table departements contient les informations sur chaque
département avec id comme clé primaire.
From BLUE LIFE TECH - LAPTOP 01 ~ ALLADAYE Sarlas
La table employes a une colonne id_departement qui est une
clé étrangère pointant vers id dans la table departements,
établissant ainsi une relation entre les deux tables.
7- DROP TABLE
La commande DROP TABLE permet de supprimer une table si vous
n'en avez plus besoin.
Attention : cette commande est irréversible et supprimera toutes
les données contenues dans la table.
DROP TABLE employes;
8- Exercices pratiques
a. Créer une table simple : Créez une table clients avec des
colonnes id (clé primaire), nom, prenom, email (unique), et
telephone.
b. Ajouter une contrainte de clé étrangère : Créez une table
commandes avec les colonnes id_commande (clé primaire),
id_client (clé étrangère vers clients(id)), date_commande, et
montant.
SOLUTIONS
From BLUE LIFE TECH - LAPTOP 01 ~ ALLADAYE Sarlas
-- Exercice 1
CREATE TABLE clients (
id INT PRIMARY KEY,
nom VARCHAR(50) NOT NULL,
prenom VARCHAR(50) NOT NULL,
email VARCHAR(100) UNIQUE,
telephone VARCHAR(20)
);
-- Exercice 2
CREATE TABLE commandes (
id_commande INT PRIMARY KEY,
id_client INT,
date_commande DATE,
montant DECIMAL(10, 2),
FOREIGN KEY (id_client) REFERENCES clients(id)
);
9- ALTER TABLE
ALTER TABLE est une commande SQL qui modifie la structure
d'une table déjà créée. Elle est utile pour ajouter de nouvelles
colonnes, modifier des colonnes existantes, changer des types de
données, ajouter des contraintes, et plus encore.
Syntaxe de base : ALTER TABLE nom_de_la_table action;
From BLUE LIFE TECH - LAPTOP 01 ~ ALLADAYE Sarlas
nom_de_la_table : Le nom de la table que vous souhaitez
modifier.
action : L'opération que vous souhaitez effectuer, comme ADD
COLUMN, DROP COLUMN, MODIFY COLUMN, etc.
a. Ajouter une colonne (ADD COLUMN)
ALTER TABLE nom_de_la_table
ADD COLUMN nom_colonne type_donnees [contrainte];
-- Exemple
ALTER TABLE employes
ADD COLUMN age INT;
Cela ajoute une colonne age de type INT à la table employes.
b. Supprimer une colonne (DROP COLUMN)
ALTER TABLE nom_de_la_table
DROP COLUMN nom_colonne;
-- Exemple
ALTER TABLE employes
DROP COLUMN age;
Cela supprime la colonne age de la table employes.
c. Modifier le type de données d'une colonne (MODIFY COLUMN
ou ALTER COLUMN selon le SGBD)
From BLUE LIFE TECH - LAPTOP 01 ~ ALLADAYE Sarlas
ALTER TABLE nom_de_la_table
MODIFY COLUMN nom_colonne nouveau_type_donnees;
-- Exemple
ALTER TABLE employes
MODIFY COLUMN salaire DECIMAL(12, 2);
Cela modifie le type de données de la colonne salaire pour qu'elle
puisse contenir jusqu'à 12 chiffres au total, dont 2 après la
virgule.
d. Renommer une colonne (RENAME COLUMN)
ALTER TABLE nom_de_la_table
RENAME COLUMN ancien_nom TO nouveau_nom;
-- Exemple
ALTER TABLE employes
RENAME COLUMN prenom TO first_name;
Cela renomme la colonne prenom en first_name dans la table
employes.
e. Renommer une table (RENAME TO)
From BLUE LIFE TECH - LAPTOP 01 ~ ALLADAYE Sarlas
ALTER TABLE ancien_nom_table
RENAME TO nouveau_nom_table;
-- Exemple
ALTER TABLE employes
RENAME TO personnel;
Cela renomme la table employes en personnel.
f. Ajouter une contrainte (ADD CONSTRAINT)
ALTER TABLE nom_de_la_table
ADD CONSTRAINT nom_contrainte type_contrainte (nom_colonne);
-- Exemple
ALTER TABLE employes
ADD CONSTRAINT fk_id_departement FOREIGN KEY
(id_departement) REFERENCES departements(id);
Cela ajoute une contrainte de clé étrangère fk_id_departement qui
lie la colonne id_departement de la table employes à la colonne id
de la table departements.
g. Supprimer une contrainte (DROP CONSTRAINT)
From BLUE LIFE TECH - LAPTOP 01 ~ ALLADAYE Sarlas
ALTER TABLE nom_de_la_table
DROP CONSTRAINT nom_contrainte;
-- Exemple
ALTER TABLE employes
DROP CONSTRAINT fk_id_departement;
Cela supprime la contrainte fk_id_departement de la table
employes.
Exemple :
ALTER TABLE employes
ADD COLUMN adresse VARCHAR(100),
ADD COLUMN telephone VARCHAR(20);
ALTER TABLE employes
MODIFY COLUMN nom VARCHAR(100) NOT NULL;
ALTER TABLE employes
DROP COLUMN age;
ALTER TABLE employes
RENAME TO personnel;
From BLUE LIFE TECH - LAPTOP 01 ~ ALLADAYE Sarlas
10- Exercices pratiques
a. Ajouter une colonne : Ajoutez une colonne date_naissance de
type DATE à la table clients.
b. Modifier un type de données : Modifiez la colonne telephone
de VARCHAR(20) à VARCHAR(15) dans la table clients.
c. Supprimer une colonne et ajouter une contrainte : Supprimez
la colonne adresse de la table employes et ajoutez une
contrainte UNIQUE sur email.
SOLUTIONS
-- Exercice a
ALTER TABLE clients
ADD COLUMN date_naissance DATE;
-- Exercice b
ALTER TABLE clients
MODIFY COLUMN telephone VARCHAR(15);
-- Exercice c
ALTER TABLE employes
DROP COLUMN adresse;
ALTER TABLE employes
11- INSERT INTO
ADD CONSTRAINT unique_email UNIQUE (email);
La commande INSERT INTO en SQL est utilisée pour ajouter de
nouvelles lignes (ou enregistrements) dans une table. Elle permet
From BLUE LIFE TECH - LAPTOP 01 ~ ALLADAYE Sarlas
d'injecter des valeurs dans chaque colonne d'une table ou seulement
dans certaines d'entre elles.
Syntaxe de base :
INSERT INTO nom_de_la_table (colonne1, colonne2, ...)
VALUES (valeur1, valeur2, ...);
nom_de_la_table : Le nom de la table dans laquelle vous voulez
insérer des données.
colonne1, colonne2, ... : Les noms des colonnes dans lesquelles
vous allez insérer des valeurs.
valeur1, valeur2, ... : Les valeurs à insérer dans chaque
colonne spécifiée.
Syntaxe simplifiée :
INSERT INTO nom_de_la_table
VALUES (valeur1, valeur2, ...);
Si vous insérez une valeur pour chaque colonne dans l'ordre exact
de la table, vous pouvez omettre la liste des colonnes.
Attention : Cette méthode suppose que vous connaissez l'ordre
exact des colonnes dans la table. Cela peut causer des erreurs si la
structure de la table change.
Exemple 1 : Insérer une ligne dans toutes les colonnes
Supposons une table employes avec les colonnes id, nom, et poste.
From BLUE LIFE TECH - LAPTOP 01 ~ ALLADAYE Sarlas
INSERT INTO employes (id, nom, poste)
VALUES (1, 'Alice', 'Développeur');
Exemple 2 : Insérer une ligne sans spécifier les colonnes (ordre
exact requis)
INSERT INTO employes
VALUES (2, 'Bob', 'Analyste');
Cela insère une nouvelle ligne avec les valeurs dans le même ordre
que les colonnes de la table employes.
Exemple 3 : Insérer des valeurs dans certaines colonnes seulement
Si certaines colonnes peuvent rester vides ou prendre une valeur
par défaut, vous pouvez omettre ces colonnes dans l’insertion.
INSERT INTO employes (nom, poste)
VALUES ('Charlie', 'Manager');
Exemple 4 : Insérer plusieurs lignes en une seule commande
INSERT INTO employes (nom, poste)
VALUES
('David', 'Consultant'),
('Emma', 'Designer'),
('Frank', 'Chef de projet');
From BLUE LIFE TECH - LAPTOP 01 ~ ALLADAYE Sarlas
Exemple 5 : Insérer des valeurs issues d’une autre table
INSERT INTO anciens_employes (id, nom, poste)
SELECT id, nom, poste
FROM employes
WHERE date_depart < '2024-01-01';
12- Exercices pratiques
a. Ajouter un nouvel employé avec les informations suivantes : nom
= "Isabelle", poste = "Marketing".
b. Insérer plusieurs enregistrements dans la table produits pour
des produits : "Chaise", "Table", et "Canapé", avec une colonne
prix.
c. Insérer des données à partir d'une autre table : Insérer tous les
produits avec un prix inférieur à 100 de la table produits_temp
dans la table produits_promo.
SOLUTIONS
From BLUE LIFE TECH - LAPTOP 01 ~ ALLADAYE Sarlas
-- Exercice a
INSERT INTO employes (nom, poste)
VALUES ('Isabelle', 'Marketing');
-- Exercice b
INSERT INTO produits (nom, prix)
VALUES
('Chaise', 49.99),
('Table', 89.99),
('Canapé', 299.99);
-- Exercice c
INSERT INTO produits_promo (nom, prix)
SELECT nom, prix
FROM produits_temp
WHERE prix < 100;
13- SELECT
La commande SELECT en SQL est utilisée pour extraire des
données d'une ou plusieurs tables d'une base de données. C'est
l'instruction la plus couramment utilisée pour interroger les
informations dans une base de données.
From BLUE LIFE TECH - LAPTOP 01 ~ ALLADAYE Sarlas
Syntaxe de base :
SELECT colonne1, colonne2, ...
FROM nom_de_la_table
WHERE conditions;
colonne1, colonne2, ... : Les colonnes que vous voulez extraire.
Utiliser * sélectionne toutes les colonnes.
nom_de_la_table : Le nom de la table d'où les données sont
extraites.
WHERE : (optionnel) Spécifie les conditions pour filtrer les
résultats.
Exemple 1 : Sélectionner toutes les colonnes
Pour récupérer toutes les colonnes d'une table employes.
SELECT * FROM employes;
Exemple 2 : Sélectionner des colonnes spécifiques
Pour récupérer seulement le nom et le poste des employés
SELECT nom, poste FROM employes;
Exemple 3 : Filtrer les données avec WHERE
Le mot-clé WHERE permet de filtrer les résultats selon certaines
conditions.
Vous pouvez combiner plusieurs conditions avec AND et OR.
From BLUE LIFE TECH - LAPTOP 01 ~ ALLADAYE Sarlas
SELECT nom FROM employes
WHERE poste = 'Développeur';
SELECT nom FROM employes
WHERE poste = 'Développeur' AND ville = 'Paris';
SELECT nom FROM employes
WHERE poste = 'Développeur' OR ville = 'Paris';
Exemple 4 : Tri des résultats avec ORDER BY
La clause ORDER BY permet de trier les résultats selon une ou
plusieurs colonnes, en ordre croissant (ASC) ou décroissant (DESC).
SELECT nom, salaire FROM employes
ORDER BY salaire DESC;
Exemple 5 : Limiter le nombre de résultats avec LIMIT
SELECT nom FROM employes
LIMIT 5;
Cela retourne les 5 premiers résultats.
Exemple 6 : Limiter le nombre de résultats avec LIMIT
Les alias permettent de renommer temporairement les colonnes ou
tables dans le résultat.
From BLUE LIFE TECH - LAPTOP 01 ~ ALLADAYE Sarlas
SELECT nom AS "Nom de l'employé", poste AS "Poste"
FROM employes;
14- Fonctions d'agrégation
Les fonctions d'agrégation permettent d’effectuer des calculs sur les
données.
COUNT : Compter le nombre de lignes
SUM : Somme des valeurs
AVG : Moyenne des valeurs
MAX : Valeur maximale
MIN : Valeur minimale
Exemple : Compter le nombre d’employés
SELECT COUNT(*) AS nombre_employes
FROM employes;
Exemple : Somme des salaires
SELECT SUM(salaire) AS total_salaires
FROM employes;
15- Combiner les tables avec JOIN
Les jointures (JOIN) permettent de combiner des lignes de deux
tables ou plus en fonction d’une condition commune.
INNER JOIN : Retourne les lignes avec correspondance dans les
deux tables.
LEFT JOIN : Retourne toutes les lignes de la table de gauche et
les correspondances de la table de droite.
From BLUE LIFE TECH - LAPTOP 01 ~ ALLADAYE Sarlas
RIGHT JOIN : Retourne toutes les lignes de la table de droite et
les correspondances de la table de gauche.
FULL JOIN : Retourne toutes les lignes lorsque des
correspondances existent dans l'une ou l'autre des tables.
Exemples avec JOIN
Table employes
id nom post id_departement
1 Alice Développeur 1
2 Bob Designer 2
3 Charlie Gestionnaire NULL
4 David Développeur 3
Table departements
id nom
1 Informatique
2 Création
3 Ressources Humaines
4 Marketing
INNER JOIN retourne uniquement les lignes ayant une
correspondance dans les deux tables.
SELECT [Link] AS nom_employe, [Link] AS
nom_departement
FROM employes
INNER JOIN departements ON employes.id_departement =
[Link];
From BLUE LIFE TECH - LAPTOP 01 ~ ALLADAYE Sarlas
LEFT JOIN retourne toutes les lignes de la table de gauche
(employes), et les lignes correspondantes de la table de droite
(departements). Si aucune correspondance n’est trouvée, les
valeurs de la table de droite seront NULL.
SELECT [Link] AS nom_employe, [Link] AS
nom_departement
FROM employes
LEFT JOIN departements ON employes.id_departement =
[Link];
RIGHT JOIN retourne toutes les lignes de la table de droite
(departements), et les lignes correspondantes de la table de
gauche (employes). Si aucune correspondance n’est trouvée,
les valeurs de la table de gauche seront NULL.
SELECT [Link] AS nom_employe, [Link] AS
nom_departement
FROM employes
RIGHT JOIN departements ON employes.id_departement =
[Link];
FULL JOIN retourne toutes les lignes lorsque des
correspondances existent dans l'une ou l'autre des tables. Si
une ligne de l’une des tables n’a pas de correspondance dans
l’autre, les valeurs manquantes seront NULL.
SELECT [Link] AS nom_employe, [Link] AS
nom_departement
FROM employes
From BLUE LIFE TECH - LAPTOP 01 ~ ALLADAYE Sarlas
FULL JOIN departements ON employes.id_departement =
[Link];
16- UPDATE
La commande UPDATE en SQL est utilisée pour modifier les
données existantes dans une table. Elle vous permet de mettre à
jour une ou plusieurs colonnes pour une ou plusieurs lignes d'une
table.
Syntaxe de base :
UPDATE nom_de_la_table
SET colonne1 = nouvelle_valeur1, colonne2 = nouvelle_valeur2, ...
WHERE conditions;
nom_de_la_table : Le nom de la table où vous voulez mettre à jour
les données.
SET : Spécifie les colonnes à mettre à jour et les nouvelles
valeurs.
WHERE : (optionnel mais recommandé) Spécifie quelles lignes
mettre à jour. Si WHERE est omis, toutes les lignes de la table
seront mises à jour !
Exemple 1 : Mettre à jour une colonne pour des lignes spécifiques
Dans cet exemple, mettons à jour le poste de l'employé nommé
"Alice" pour qu'il devienne "Chef de projet".
UPDATE employes
SET poste = 'Chef de projet'
WHERE nom = 'Alice';
From BLUE LIFE TECH - LAPTOP 01 ~ ALLADAYE Sarlas
Exemple 2 : Mettre à jour plusieurs colonnes
Mettons à jour le poste et le salaire de "Bob".
UPDATE employes
SET poste = 'Directeur de création', salaire = 5500
WHERE nom = 'Bob';
Exemple 3 : Mettre à jour plusieurs lignes
Supposons que nous souhaitons augmenter de 10 % le salaire de tous
les employés dans le département "Informatique".
UPDATE employes
SET salaire = salaire * 1.10
WHERE id_departement = (SELECT id FROM departements WHERE
nom = 'Informatique');
Exemple 4 : Mettre à jour toutes les lignes (avec précaution)
Si vous souhaitez mettre à jour une colonne pour toutes les lignes de
la table, omettez la clause WHERE. Attention, cette approche peut
impacter toutes les données !
UPDATE employes
SET poste = 'Employé temporaire';
From BLUE LIFE TECH - LAPTOP 01 ~ ALLADAYE Sarlas
17- DELETE
La commande DELETE en SQL est utilisée pour supprimer des
lignes d'une table. Elle permet de retirer une ou plusieurs lignes en
fonction de critères spécifiés.
Syntaxe de base :
DELETE FROM nom_de_la_table WHERE conditions;
nom_de_la_table : Le nom de la table d’où l’on souhaite supprimer
des lignes.
WHERE : Spécifie les lignes à supprimer. Attention : Si la clause
WHERE est omise, toutes les lignes de la table seront supprimées
!
Exemple 1 : Supprimer une ligne spécifique
Imaginons que nous souhaitons supprimer l'employé nommé
"Alice" de la table employes.
DELETE FROM employes
WHERE nom = 'Alice';
Exemple 2 : Supprimer plusieurs lignes selon une condition
Pour supprimer tous les employés du département "Informatique",
on peut utiliser la commande suivante :
DELETE FROM employes
WHERE id_departement = (SELECT id FROM departements WHERE
nom = 'Informatique');
From BLUE LIFE TECH - LAPTOP 01 ~ ALLADAYE Sarlas
Cette requête utilise une sous-requête pour sélectionner l'id du
département Informatique et supprime ensuite tous les employés
liés à ce département.
Exemple 3 : Supprimer toutes les lignes d'une table
DELETE FROM employes;
Cette commande supprime toutes les lignes une par une, mais laisse
la structure de la table intacte.
TRUNCATE TABLE employes;
TRUNCATE est souvent plus rapide que DELETE car il libère
l'espace de stockage sans journaliser chaque suppression de ligne.
From BLUE LIFE TECH - LAPTOP 01 ~ ALLADAYE Sarlas
Exercice Globale sur SQL
Contexte de l'exercice
Vous travaillez pour une bibliothèque municipale qui souhaite créer une
base de données pour gérer ses livres, ses auteurs, ses membres, et leurs
emprunts de livres.
Votre mission : Créer et manipuler les tables nécessaires pour stocker les
informations sur les livres, les auteurs, les membres de la bibliothèque et
les emprunts. L’exercice vous guidera pour créer et remplir cette base de
données avec des exemples d'utilisation des différentes commandes SQL.
Étapes de l'exercice
1. Créer la base de données :
o Créez une base de données nommée Bibliotheque.
2. Créer les tables nécessaires :
Créez les tables suivantes avec leurs colonnes respectives :
o Auteurs : pour stocker les informations sur les auteurs.
id_auteur (clé primaire, entier, auto-incrémenté)
nom (texte, non nul)
prenom (texte)
nationalite (texte)
o Livres : pour stocker les informations sur les livres.
id_livre (clé primaire, entier, auto-incrémenté)
titre (texte, non nul)
From BLUE LIFE TECH - LAPTOP 01 ~ ALLADAYE Sarlas
annee_publication (entier)
genre (texte)
id_auteur (clé étrangère référant Auteurs(id_auteur))
o Membres : pour stocker les informations sur les membres de
la bibliothèque.
id_membre (clé primaire, entier, auto-incrémenté)
nom (texte, non nul)
prenom (texte)
date_inscription (date)
o Emprunts : pour enregistrer les emprunts de livres par les
membres.
id_emprunt (clé primaire, entier, auto-incrémenté)
id_livre (clé étrangère référant Livres(id_livre))
id_membre (clé étrangère référant
Membres(id_membre))
date_emprunt (date)
date_retour (date)
3. Modifier une table :
o Ajoutez une colonne email (texte) dans la table Membres pour
stocker l’email des membres.
4. Insérer des données dans les tables :
o Ajoutez des enregistrements dans chaque table.
o Voici un exemple pour chaque table :
From BLUE LIFE TECH - LAPTOP 01 ~ ALLADAYE Sarlas
5. Utiliser les requêtes SELECT avec des JOIN :
o Récupérez la liste de tous les livres empruntés, avec les
informations du livre, de l'auteur et du membre qui a
emprunté le livre.
6. Mettre à jour les informations d’un membre :
o Supposons que Jean Dupont a changé son email. Mettez à jour
son adresse email avec la nouvelle adresse
[Link]@[Link].
7. Supprimer un emprunt spécifique :
o Supposons que Sophie Martin a rendu le livre qu’elle avait
emprunté. Supprimez cet emprunt de la table Emprunts.
From BLUE LIFE TECH - LAPTOP 01 ~ ALLADAYE Sarlas