Vous êtes sur la page 1sur 27

Ecole Supérieure des Ingénieurs Ministère de l’Enseignement

de Medjez El Bab Supérieur et de la


Recherche Scientifique
Année Universitaire: 2020-2021 -------**-------
Université de Jendouba

Module: Base de données spatiale


Langage SQL

Mekni Houssem
Introduction

Le langage SQL est l’un des éléments qui ont contribué au développement et au succès de
l’approche relationnelle dans le monde des bases de données. En effet, la normalisation
internationale du langage garantit la pérennité et la stabilité des données ainsi que des
développements qui leur sont associés, indépendamment du SGBD et du langage utilisés.
Ce chapitre aborde les concepts et la syntaxe du langage SQL, et présente les trois grandes familles
d’opérations que le langage permet d’exprimer:

- L’interrogation et la recherche dans les tables.


-La gestion de tables et de vues munies des contraintes associées. Ces instructions concernent la
table et sa structure et constituent la partie LDD (Langage de Description des Données) de SQL.
- La manipulation de données. Ces instructions concernent les données contenues dans la table et
constituent la partie LMD (Langage de Manipulation des Données) de SQL.
1 Concepts du langage SQL

Le langage SQL manipule l’objet fondamental de l’approche relationnelle: la relation représentée par une table.
SQL est un langage dit « non procédural » ou « déclaratif », c’est-à-dire que l’on ne décrit pas la manière
d’effectuer les opérations pas à pas: c’est le SGBD qui choisit la méthode utilisée pour y parvenir. C’est ce qui
explique que des concours de rapidité de résolution de requête soient organisés chaque année pour tester les
différentes stratégies des éditeurs. Par conséquent, il ne dispose pas d’instructions de structuration, telles que
des boucles.

Les instructions SQL sont alors intégrées dans le langage via une interface spécifique. Les résultats de la requête
SQL sont alors stockés dans des structures de données propres au langage employé (par exemple un tableau)
afin de pouvoir les manipuler. C’est typiquement ce procédé qui est employé pour construire une interface
d’accès à une base de données par le Web.
Le langage de programmation qui intègre le langage SQL est alors appelé langage hôte (voir figure.1). De
petites différences de syntaxe peuvent apparaître entre une requête SQL exprimée interactivement et la version
« intégrée» dans un langage de programmation.

Figure:1 Interface entre SQL et les langages de programmation


2. Opérations relationnelles avec SQL
NumVoit Marque Type Couleur
1 Peugeot 404 Rouge
2 Citroen SM Noire
les opérations relationnelles utilisent la base 3 Opel GT Blanche
Voiture 4 Peugeot 403 Blanche
de données « casse» 5 Renault Alpine Rose
A310
6 Renault Floride Bleue

NumAc Nom Age Ville Sexe


h
1 Nestor 96 Paris M
2 Irma 20 Lille F
personne 3 Henri 45 Paris M
4 Josette 34 Lyon F
5 Jacques 50 Bordea M
ux

DateVente Prix NumVoit NumAch

1985-12-03 10 000 1 1

1996-03-30 70 000 2 4
Vente
1998-06-14 30 000 4 1

2000-04-02 45 000 5 2
2.1 PROJECTION
(SELECT)

L’opération de projection consiste à sélectionner la (les) colonne(s) que l’on veut voir figurer
dans la table « résultat ». On spécifie la liste des colonnes à inclure dans cette table derrière
l’instruction SELECT en les séparant par des virgules. Si l’on désire afficher toutes les colonnes,
on les désigne par le caractère « * ».

Nom Ville
Nestor Paris
SELECT Nom, Ville Irma Lille
FROM personne ; Henri Paris

Josette Lyon

Jacques Bordeaux
NumAch Nom Age Ville Sexe
Projection sur tous les champs de la table ‘Personne’. 1 Nestor 96 Paris M
2 Irma 20 Lille F
SELECT * 3 Henri 45 Paris M
FROM personne ; 4 Josette 34 Lyon F
5 Jacques 50 Bordeaux M

Les colonnes de la table « résultat » peuvent être renommées par le mot clé AS.
City
SELECT Ville AS City Paris
FROM personne ; Lille
Paris
Lyon
Bordeaux
Valeurs distinctes d’une colonne

Une colonne « Salutations» ne devrait contenir que les valeurs normalisées « Madame », « Monsieur », «
Mademoiselle ». L’affichage des valeurs distinctes permet de lister les différentes valeurs prises par la colonne
pour repérer d’éventuelles incohérences comme la présence d’une valeur « Mr. », « M. », etc. Afin d’éliminer les
doublons éventuels des valeurs d’une colonne de la table « résultat », on fait précéder le nom de la colonne par le
mot clé DISTINCT.
Marque
Projection sur les valeurs distinctes du champ Peugeot
SELECT DISTINCT Marque Citroen
‘Marque’ de la table ‘voiture’. Opel
FROM voiture ;
Renault
+ Addition
- Soustraction
Opérateurs d’expressions de SQL * Multiplication
/ Division
% Modulo

Création d’une colonne ’Prix_Euros’ dans la table ‘vente’ contenant


le Prix DateVente Prix_Euros
10 000 1985-12-03 1 524.483 200
prix de vente en euros 70 000 1996-03-30 10 671.382 401
SELECT Prix, DateVente, (Prix / 6.5596) AS Prix_Euros
30 000 1998-06-14 4 573.449 601
FROM vente ; 45 000 2000-04-02 6 860.174 401

SQL dispose de nombreuses autres fonctions intégrées, parfois dépendantes du SGBD utilisé, qui permettent
par exemple le traitement des colonnes de types caractères, date...

Exemple: Transformation d’une colonne ‘Nom’ de la table ‘Personne’ en majuscules ou Extraction du mois de
la colonne 'DateVente' de la table 'Vente'. NomMajuscule
NESTOR
SELECT UPPER(Nom) AS NomMajuscule IRMA
FROM personne ;
HENRI
JOSETTE
JACQUES
Mois
12

SELECT MONTH(DateVente) AS Mois 03


FROM vente; 06
04
Comptage du nombre d’éléments (lignes)
COUNT
Opérateurs statistiques de SQL. de la table
MAX Maximum des éléments d’une colonne
MIN Minimum des éléments d’une colonne
AVG •

Moyenne des éléments d’une colonne


SUM Somme des éléments d’une colonne
• Remarque

Les fonctions statistiques s’appliquent à l’ensemble des données d’une colonne (sauf pour la fonction COUNT qui s’applique aux lignes de la
table entière). Pour toutes ces opérations, la table « résultat » contiendra une seule ligne et souvent une seule colonne.

Calcul de la moyenne Prix_moyen


SELECT AVG(Prix) AS Prix_Moyen
des prix de vente pour FROM vente ; 38 750.0000
la table ‘vente’.

Nombre_Personne
Calcul du nombre de personnes
SELECT COUNT(*) AS Nombre_Personne 5
(le nombre de lignes en réalité) de FROM personne ;
la table ‘personne’.

Remarque:

Dans le cas de la fonction COUNT, on ne spécifie pas la colonne sur laquelle s’applique la fonction puisqu’il s’agit
de la table entière.
2.2 SÉLECTION OU RESTRICTION (WHERE)

L’opération de sélection (ou restriction) consiste à indiquer un ou plusieurs critères pour choisir les
lignes à inclure dans la table « résultat ». Ces critères utilisent évidemment le contenu des valeurs des
colonnes. Le critère de sélection est indiqué à la suite du mot clé WHERE. Il est constitué d’expressions
de conditions composées à l’aide d’opérateurs de comparaison et combinées à l’aide de connecteurs
logiques.
= Egal
<> Différent
< Inférieur
Opérateurs de comparaison de SQL. > Supérieur
Inférieur ou
<=
égal
Supérieur ou
>=
égal

Exemple: Extraction des enregistrements de la table vente dont le prix est supérieur à 50 000.

SELECT *
DateVente Prix NumVoit NumAch
FROM vente
WHERE Prix > 50
1996-03-30 70 000 2 4
000 ;
BETWEEN <valeur> AND <valeur> Appartient à un intervalle
Opérateurs de comparaison spécifiques à IN <liste de valeurs> Appartient à un ensemble de valeurs
Teste si la colonne n’est pas
SQL permettant de constituer des IS NULL
renseignée
expressions. LIKE Compare des chaînes de caractères

Exemple: Extraction des SELECT *


FROM voiture NumVoit Marque Type Couleur
voitures rouges.
WHERE Couleur IN ("Rouge") ; 1 Peugeot 404 Rouge

Extraction des personnes SELECT * NumAch Nom Age Ville Sexe


3 Henri 45 Paris M
dont l’âge est compris en 40 FROM personne 5 Jacques 50 Bordeaux M
et 60. WHERE Age BETWEEN 40 AND
60;

Opérateurs et connecteurs AND Et : les deux conditions sont vraies simultanément


OR Ou : l’une des deux conditions est vraie
logiques de SQL permettant de NOT Inversion de la condition
constituer des expressions.

SELECT * NumVoit Marque Type Couleur


Extraction des voitures de FROM voiture 1 Peugeot 404 Rouge
couleur « Blanche » ou WHERE Couleur="Blanche" OR 3 Opel GT Blanche
Marque="Peugeot"; 4 Peugeot 403 Blanche
de marque « Peugeot ».
Extraction des personnes SELECT * NumAch Nom Age Ville Sexe
2 Irma 20 Lille F
n’habitant pas Paris. FROM personne 4 Josette 34 Lyon F
5 Jacques 50 Bordeaux M
WHERE NOT (Ville=‘Paris’);

2.3 AGRÉGATS OU GROUPAGE (GROUP BY)


Les opérations d’« agrégation» ou de « groupage» regroupent les lignes d’une table par valeurs contenues dans
une colonne. On applique généralement des opérations de type statistique sur les « sous-tables» ainsi créées. Pour
réaliser cette opération avec SQL, on utilise le mot clé GROUP BY suivi du nom de la colonne sur laquelle
s’effectue l’agrégat.
Marque
SELECT Marque Citroen
Affichage des différentes FROM voiture Opel
marques de voitures de la table Peugeot
GROUP BY Marque Renault
;
Marque Compte
Calcul du nombre de SELECT Marque, COUNT(*) AS Citroen 1
voitures des différentes
Compte FROM voiture Opel 1
marques de la table ’voiture’. Peugeot 2
GROUP BY Marque ; Renault 2

On obtient dans ce cas le même résultat que si l’on avait utilisé le mot clé DISTINCT vu précédemment.
L’utilisation courante de cette opération est d’appliquer en une seule instruction les fonctions statistiques déjà
abordées aux différents sous-ensembles d’une table ainsi constitués.
Calcul de la moyenne d’âge par SELECT Ville, AVG(Âge) AS Ville Moyenne_Age
ville à partir de la table ‘personne’. Bordeaux 50.0000
Moyenne_Age FROM personne
Lille 20.0000
GROUP BY Ville ; Lyon 34.0000
Paris 70.5000
Restriction sur le résultat

Le résultat de l’opération de groupage peut lui-même être filtré: c’est-à-dire que l’on effectue une
sélection des lignes par rapport au contenu des colonnes obtenues dans la table « résultat» précédente.
En pratique, on filtre sur le résultat des opérations statistiques appliquées aux sous-ensembles définis par
le groupage.
On reprend l’exemple précédent qui a permis de calculer le nombre de voitures par marques. On
suppose que l’on élimine du résultat les marques dont on possède moins de deux voitures en considérant
que ces marques ne sont pas représentatives du parc.

SELECT Marque, COUNT(*) AS Marque Compte


Calcul du nombre de Citroen 1
Compte FROM voiture
voitures par marque de la Opel 1
table ‘voiture’ dont le GROUP BY Marque
Peugeot 2
nombre est supérieur à 1. HAVING Compte > Renault 2
1; Marque Compte
Peugeot 2
Renault 2
Remarque
Le mot clé HAVING permet d’effectuer une sélection sur le résultat de l’opération de groupage. Le
mot clé WHERE opère une sélection sur les éléments (lignes) de la table avant l’opération de
groupage..

Supposons que l’on veuille éliminer les voitures


rouges de notre calcul.
SELECT Marque, COUNT(*) AS
Compte FROM voiture
WHERE NOT (Couleur=‘Rouge’)
GROUP BY Marque;

NumVoit Marque Type Type


1 Peugeot 404 Rouge Marque Compte
2 Citroen SM Noire
Citroen 1
3 Opel GT Blanche
Opel 1
4 Peugeot 403 Blanche
5 Renault Alpine A310 Rose Peugeot 1

6 Renault Floride Bleue Renault 2


2.4 REQUÊTES SUR PLUSIEURS TABLES

Lorsque l’on utilise plusieurs tables dans une requête SQL, il peut exister une ambiguïté dans les
expressions sur les noms de colonnes. En effet, deux tables peuvent avoir une colonne de nom identique.
Pour cette raison, on préfixera le nom de la colonne par le nom.

Marque Couleur
Qualification des Peugeot Rouge
SELECT voiture. Marque, voiture. Couleur
attributs par leur table Citroen
Opel
Noire
Blanche
d’appartenance FROM voiture ; Peugeot Blanche
Renault Rose
Renault Bleue

Cette notation peut devenir rapidement fastidieuse si le nombre de tables est élevé et si leurs noms sont
longs. Dans ce cas, on désigne la table par un alias plus commode, qui peut être réduit à une simple
lettre, plutôt que par son nom complet. L’alias est indiqué simplement à la suite du nom de la table ou à
l’aide du mot clé AS qui est optionnel.
Marque Couleur
Peugeot Rouge
Citroen Noire
Opel Blanche
SELECT Vo.Marque,
Peugeot Blanche
Vo.Couleur FROM voiture Renault Rose
Renault Bleue
AS Vo;
Produit cartésien
Le produit cartésien est la combinaison de toutes les lignes d’une table avec toutes les lignes d’une autre
table sans tenir aucun compte du « sens» associé aux données. C’est une opération qui n’a guère d’intérêt
en pratique. En SQL, cette opération s’écrit simplement.

SELECT *
FROM personne, voiture ;

Le nombre de lignes de la table « résultat» est égal au produit


du nombre de lignes des deux tables. Les colonnes sont celles
des deux tables simplement juxtaposées.
Jointure interne (INNER JOIN)

Il s’agit de l’opération de base de l’algèbre relationnelle. Elle permet de lier deux tables entre elles en
introduisant un critère de « sens des données issu du monde réel » par opposition à l’opération
précédente. Elle peut s’exprimer de plusieurs manières en SQL. La première est semblable à la restriction
du produit cartésien précédent, mais dans ce cas la requête n’est généralement pas traitée de manière
optimale par le SGBD.

SELECT voiture.Marque, voiture.Couleur, vente.Prix


Construction de la FROM voiture, vente
jointure tables WHERE voiture. NumVoit=vente . NumVoit;
‘voiture’ et
des
sur le ‘vente’ Marque
Peugeot
Couleur
Rouge
Prix
10 000
d’égalité de Citroen Noire 70 000
la colonne critère Peugeot
Renault
Blanche
Rose
30 000
45 000
‘NumVoit’.

Une autre manière d’exprimer la jointure interne passe par un opérateur de jointure spécifique JOIN. Il
faut bien sûr spécifier la colonne sur laquelle s’effectue la jointure.
SELECT voiture.Marque, voiture.Couleur, vente.Prix
FROM vente JOIN voiture ON voiture.NumVoit=vente.NumVoit ;
2.5 Tri du résultat d’une requête

On utilise le mot clé ORDER BY pour spécifier la (les) colonne(s) sur


laquelle (lesquelles) on souhaite trier le résultat.
Marque Type
SELECT Marque, Type Citroen SM
Opel GT
FROM voiture Peugeot 404
Tri par Marque de la table ‘voiture’. ORDER BY Peugeot 403
Marque ; Alpine A3 10
Renault
Renault Floride

Il est possible de préciser l’ordre de tri par les mots clés ASC (croissant
par défaut) ou DESC (décroissant).

Prix DateVente
Tri par Marque de la table ‘voiture’ SELECT Prix, DateVente
70 000 1996-03-30
FROM vente
en ordre décroissant. ORDER BY Prix DESC ;
45 000 2000-04-02
30 000 1998-06-14
10 000 1985-12-03

On peut indiquer plusieurs


critères de tri, qui sont lus et SELECT Nom, Age, Ville Nom Age Ville
traités de gauche à droite (ici, FROM personne Jacques 50 Bordeaux
ORDER BY Ville, Age ; Irma 20 Lille
on trie d’abord par villes puis Josette 34 Lyon
par âges). Henri 45 Paris
Nestor 96 Paris
3 Gestion de tables

Le langage SQL comprend une partie manipulation de données pour gérer les tables. Les
opérations de création, de suppression et de modification des tables mettent à jour le dictionnaire
de données du SGBD. On rappelle que le dictionnaire de données est une structure propre au
SGBD qui contient la description des objets du SGBD (base de données, tables, colonnes, droits,
etc.).

Création

La création d’une table est une opération importante qu’il faut entreprendre avec soin. C’est lors
de cette étape que l’on définit le type de données, la clé, les index éventuels et qu’il convient
d’imposer des contraintes de validation garantissant la bonne qualité des informations entrées
dans la table. La forme générale de l’instruction de création de table est la suivante:

CREATE TABLE <Nom de la table> ( liste des colonnes avec leur type séparé
par ,) ;

Remarque CREATE TABLE voiture


Le nom de la table ou d’une colonne ne doit pas (NumVoit INT,
Marque CHAR(40),
dépasser 128 caractères. Attention de même à ne Type CHAR(30),
pas utiliser un mot clé SQL. Couleur CHAR(20) );
INT Entier standard (32 bits)
Types de données numériques de SQL. SMALLINT Entier « petit » (16 bits)
REAL Réel (taille spécifique au SGBD)
FLOAT(n) Réel (représenté sur « n » bits)

CHAR(n) Chaîne de caractères de longueur « n » (codage ASCII


1 octet)
Types de données chaînes de VARCHAR(n) Chaîne de caractères de longueur maximale « n » (codage
caractères de SQL ASCII 1 octet)
NCHAR(b) Chaîne de caractères de longueur « n » (codage
Unicode sur 2 octets)

NVAR- Chaîne de caractères de longueur maximale « n » (codage
CHAR(b) Unicode sur 2 octets)

DATE Date
Types de données date de SQL. Heure, n (optionnel) est le nombre de décimales
TIME[(n)]
représentant la fraction de secondes

BOOLEAN Booléen
Binary Large Object : permet de stocker tout type
Types de données binaires de SQL. BLOB
binaire (photo, fichier traitement de texte...)
Suppression
La commande DROP TABLE permet de supprimer une table.
DROP TABLE voiture

Modification

La commande ALTER TABLE permet de modifier la structure de la table, c’est-à-dire d’ajouter,


de supprimer ou modifier des colonnes.

Ajout d’une colonne de nom ‘enplus’ de type ‘INT’ à la table


‘voiture’ (ADD COLUMN).

NumVoit Marque Type Couleur enplus


ALTER TABLE voiture ADD COLUMN enplus INT 1 Peugeot 404 Rouge NULL
; 2 Citroen SM Noire NULL
Blanch
3 Opel GT e NULL
Affichage de la table Blanch
‘voiture’ modifiée. 4 Peugeot 403 e NULL
Alpine
5 Renault Rose NULL
A310
SELECT * FROM 6 Renault Floride Bleue NULL
voiture;
Suppression de la colonne de nom ‘Couleur’ de la table ‘voiture’ (DROP COLUMN).
NumVoit Marque Type enplus
ALTER TABLE voiture 1 Peugeot 404 NULL
DROP COLUMN Couleur; 2 Citroen SM NULL
3 Opel GT NULL
4 Peugeot 403 NULL
Affichage de la table 5 Renault Alpine A3 10 NULL
‘voiture’ modifiée. 6 Renault Floride NULL

SELECT * FROM
voiture ;

Ajout de la colonne ‘Teinte’. NumVoit Marque Type Couleur Teinte


1 Peugeot 404 Rouge NULL
2 Citroen SM Noire NULL
ALTER TABLE voiture 3 Opel GT Blanche NULL
ADD COLUMN Teinte CHAR(60); 4 Peugeot 403 Blanche NULL
Alpine
5 Renault Rose NULL
A310
6 Renault Floride Bleue NULL

Recopie des données de ‘Couleur’ NumVoit Marque Type Couleur Teinte


dans ‘Teinte’. 1 Peugeot 404 Rouge Rouge
2 Citroen SM Noire Noire
3 Opel GT Blanche Blanche
UPDATE voiture 4 Peugeot 403 Blanche Blanche
Alpine
SET 5 Renault Rose Rose
A3 10
Teinte=Couleur ;
6 Renault Floride Bleue Bleue
CONTRAINTES D’INTÉGRITÉ

Lors de l’étape de conceptualisation, on a défini la notion de « domaine », qui décrira l’ensemble des
valeurs que peut prendre un attribut. Au niveau de SQL, une première approche du domaine est établie
par le choix du type de la colonne, mais cela n’est pas assez restrictif en général.
SQL vous permet de définir des conditions de validité plus fines lors de la création de la table, que l’on
nomme contraintes d’intégrité. C’est le SGBD qui applique ces conditions au moment de l’insertion, de la
modification ou même de la suppression de données dans le cas ou ces dernières sont liées à d’autres
tables. Cette étape est parfois fastidieuse, mais elle garantit la cohérence des données et évite de se
retrouver avec des bases de données, conceptuellement correctes, mais inutilisables faute de données
valides.
On peut distinguer différents types de contraintes sur les colonnes:

- les propriétés générales comme l’unicité;

- les restrictions d’appartenance à un ensemble;

- les dépendances entre plusieurs colonnes.


Propriétés générales

La valeur de la colonne doit être renseignée absolument (NOT NULL).


La valeur doit être unique comparée à toutes les valeurs de la colonne de la table (UNIQUE).

Lorsque les deux conditions précédentes sont réunies, la colonne peut servir à identifier un
enregistrement et constitue donc une « clé primaire ». On rappelle qu’il ne peut y avoir qu’une seule clé
que l’on désignera en SQL par le mot clé PRIMARY KEY.

Ici, on indique que la colonne ‘NumAch’ est choisie comme clé de la table (donc implicitement unique et
non nulle) et que la colonne ‘Nom’ doit toujours être renseignée.

CREATE TABLE personne


( NumAch INT PRIMARY
KEY, Nom CHAR(20) NOT
NULL,
Age INT
);
Si aucune mention n’est précisée comme pour la colonne ‘Age’, elle peut être renseignée ou
non. Attention, une colonne non renseignée (c’est-à-dire qui contient la valeur NULL pour SQL) signifie
qu’elle ne contient aucune donnée, et non pas, par exemple, qu’elle contient « 0 » pour une colonne de
type « entier » ou un espace pour une colonne de type « caractère ».
Si la clé est constituée de plusieurs colonnes (elle est dite composite) ; on indique la liste des colonnes
constitutives de la clé à la suite du mot clé PRIMARY KEY.

CREATE TABLE vente (


DateVente DATE,
PRIX INT,
NumAch INT,
NumVoit INT,
PRIMARY
KEY
(NumAch,
Condition d’appartenance
NumVoit) ); à un ensemble

Il s’agit de décrire le domaine dans lequel la colonne pourra prendre


ses valeurs. Un ensemble peut être écrit:
En donnant la liste de tous ses éléments constitutifs (IN). L’ensemble des jours de la semaine ne peut être
exprimé que de cette manière : « lundi », « mardi », etc. On vérifie que la colonne ‘couleur’ ne peut
prendre que des valeurs « normalisées»: ‘Rouge’ ‘Vert’ ou ‘Bleu’.

CREATE TABLE
voiture( NumVoit INT
PRIMARY KEY, Marque
CHAR(30) NOT NULL, Type
CHAR(20),
Couleur CHAR(40),
CHECK Couleur IN
(‘Rouge’,’Vert’,’Bleu’));
Par une expression (>, < , BETWEEN...).
Par exemple, On vérifie que l’âge est compris entre 1 et 80.

CREATE TABLE personne


(NumAch INT PRIMARY KEY,
Nom CHAR(20) NOT NULL,
Ville CHAR(40),
AGE INT NOT NULL,
CHECK (Age BETWEEN 1
AND 80) );
Gestion des données

Les commandes SQL sont présentées dans cette section concernent non plus la gestion
qui de la structure
tables, mais celle des contenus. On dispose classiquement de trois
opérations
des : l’insertion, la suppression et la mise à jour, pour gérer les données d’une table.

L’insertion se fait enregistrement par enregistrement, mais cela peut se révéler fastidieux. Cependant,
l’insertion de données est possible également à partir de la lecture d’un fichier externe dont le format
est accepté par le SGBD. Ces instructions dépendent donc du SGBD utilisé.
Les opérations de suppression et de modification des données se font à partir de critères de sélection des
enregistrements (lignes) à modifier ou à supprimer. Par exemple, on peut décider de supprimer toutes les
personnes qui habitent Paris. Autre exemple : on actualise le prix en euros de l’ensemble des ventes qui ont
eu lieu après la date du passage à l’euro.

Ces critères s’expriment de la même manière que pour les opérations de sélection vues précédemment. Il est
également possible d’utiliser le résultat d’une requête pour déterminer l’ensemble des valeurs d’une colonne
afin d’effectuer cette sélection.
INSERTION (INSERT INTO)

L’insertion d’enregistrements dans une table peut se réaliser de plusieurs manières:


- enregistrement par enregistrement (INSERT INTO);
- en insérant la réponse à une requête SQL (INSERT INTO).
La commande pour insérer des données est de la forme générale suivante:
INSERT INTO <nom de la table> [ liste des colonnes ] VALUES <liste des valeurs>

NumVoit Marque Type Couleur


1 Peugeot 404 Rouge
2 Citroen SM Noire
3 Opel GT Blanche
INSERT INTO voiture 4 Peugeot 403 Blanche
(NumVoit, Marque, Couleur) VALUES (10,’Triumph’,’Bleue’) ; Alpine
5 Renault A3 10 Rose

6 Renault Floride Bleue


10 Triumph NULL Bleue

Si certaines colonnes sont omises, elles prendront la valeur ‘NULL’.


Si la liste des colonnes est omise, on considère qu’il s’agit de la liste de celles prises dans l’ordre défini lors
de la création de la table.

Vous aimerez peut-être aussi