Vous êtes sur la page 1sur 20

08/06/2021

Langage SQL (Structured Query Language)

J. ANTARI

Langage de Définition de Données 2

La commande CREATE :
Création d’une base de donnée:
Pour créer une base de données qui sera appelée ≪ma_base≫ il suffit d’utiliser
la requête suivante qui est très simple : CREATE DATABASE ma_base
Création d’une Table :
CREATE TABLE nom_de_la_table
(
colonne1 type_donnees,
colonne2 type_donnees,
colonne3 type_donnees,
colonne4 type_donnees
);

4 colonnes ont été définies.


Le mot-cle ≪ type_donnees ≫ sera a remplacer par un mot-cle pour définir
le type de données (INT, DATE, TEXT …).

Langage de Définition de Données 3

La commande CREATE :
Création d’une Table : Exemple 1
CREATE TABLE Internaute (
email VARCHAR (50) NOT NULL,
nom VARCHAR (20) NOT NULL,
prenom VARCHAR (20),
motDePasse VARCHAR (60) NOT NULL,
Exemple 2 anneeNaiss DECIMAL (4));

CREATE TABLE utilisateur


(
id INT PRIMARY KEY NOT NULL,
nom VARCHAR(100),
prenom VARCHAR(100),
email VARCHAR(255),
date_naissance DATE,
pays VARCHAR(255),
ville VARCHAR(255),
code_postal VARCHAR(5),
nombre_achat INT);

1
08/06/2021

Langage de Définition de Données 4

Les Clés: Clé primaire « PRIMARY KEY » (autre méthode)


CREATE TABLE Internaute (
email VARCHAR (50) NOT NULL,
nom VARCHAR (20) NOT NULL,
prenom VARCHAR (20),
motDePasse VARCHAR (60) NOT NULL,
anneeNaiss DECIMAL (4),
PRIMARY KEY (email)
);

Clé primaire (Clé constituée de plusieurs attributs)


CREATE TABLE Notation (
idFilm INTEGER NOT NULL,
email VARCHAR (50) NOT NULL,
note INTEGER DEFAULT 0,
titre VARCHAR(80) NOT NULL,
PRIMARY KEY (titre, email)
);

Langage de Définition de Données 5

Les Clés:
Clé secondaire : On spécifie que la valeur d’un attribut est unique pour
l’ensemble de la colonne.

CREATE TABLE Artiste (


id INTEGER NOT NULL,
nom VARCHAR (30) NOT NULL,
prenom VARCHAR (30) NOT NULL,
anneeNaiss INTEGER,
PRIMARY KEY (ID),
UNIQUE (nom, prenom)
);

Langage de Définition de Données 6

La commande ALTER:

Modification d’une Table :


permet de modifier une table existante. Il est ainsi possible
d’ajouter une colonne, d’en supprimer une ou de modifier une
colonne existante, par exemple pour changer le type.
Syntaxe :ALTER TABLE nom_table instruction ;

Ou instruction peut etre ADD, MODIFY, DROP ou


RENAME

2
08/06/2021

7
Langage de Définition de Données
La commande ALTER:
Modification d’une Table :

Différents types d’instructions sont possibles :

Ajout d’une colonne (ADD COLUMN)

Modification de la définition d’une colonne (MODIFY COLUMN)

Suppression d’une colonne (DROP COLUMN)

Modification du nom de la table ou d’une colonne (RENAME TO, RENAM


COLUMN).

Langage de Définition de Données 8

La commande ALTER:
Modification d’une Table :
ADD COLUMN (Ajouter colonne)
ALTER TABLE Internaute ADD COLUMN region VARCHAR(10);

DROP COLUMN (Supprimer une colonne)


ALTER TABLE Internaute DROP COLUMN region VARCHAR(10);

MODIFY COLUMN (modifier une colonne)


ALTER TABLE Internaute MODIFY COLUMN anneeNaiss VARCHAR(30) NOT
NULL;

RENAME (Renommer une table ou une colonne)


ALTER TABLE Livre RENAME TO Livre2;
ALTER TABLE Livre RENAME COLUMN Titre TO Titre2;

Langage de Définition de Données 9

La commande DROP:
Suppression d’une Table :
permet de supprimer définitivement une table d’une base de données. Cela
supprime en même temps les éventuels index, relations, contraintes et
permissions associées a cette table.
Syntaxe : DROP TABLE nom_table

S’il y a une dépendance avec une autre table, il est recommande de les
supprimer avant de supprimer la table. C’est le cas par exemple s’il y a des clés
étrangères.
Exemple : DROP TABLE Internaute

3
08/06/2021

10
Langage de Manipulation des Données
Le LMD :
- Partie de SQL qui permet la manipulation et la mise à jour des tables.
- Cette partie contient les commandes :
La commande SELECT
La commande UPDATE
La commande INSERT
La commande DELETE

La commande INSERT INTO :


Insertion d’un tuple dans une table :
permet au choix d’inclure une seule ligne a la base existante ou plusieurs lignes
d’un coup.
Syntaxe :
INSERT INTO table
VALUES ('valeur 1', 'valeur 2', ...) ;

INSERT INTO Livre


Exemple : VALUES (‘HUGO’, ‘HERNANT’, 1830, ‘THEATRE’, 120.00);

11
Langage de Manipulation des Données
La commande INSERT INTO :
Insertion d’un tuple dans une table :
Exemple :
INSERT INTO Livre
VALUES (‘HUGO’, ‘HERNANT’, 1830, ‘THEATRE’, 120.00);

Insère un nouveau tuple en utilisant un ordre différent de l’ordre de définition.


INSERT INTO Livre (Auteur, Titre, Année, Prix, Genre)
VALUES (‘Balzac, ‘Le père Goriot’, 1834, 148.5, ‘Roman’);

Insère un nouveau tuple sans initialiser une colonne (colonne prix).


INSERT INTO Livre (Auteur, Titre, Année, Genre)
VALUES (‘Balzac, ‘Le père Goriot’, 1834, ‘Roman’);

12
Langage de Manipulation des Données
La commande SELECT:
L’utilisation la plus courante de SELECT consiste a lire des données
issues de la base de données. Cela s’effectue grâce a la commande
SELECT, qui retourne des enregistrements dans un tableau de
résultat. Cette commande peut sélectionner une ou plusieurs
colonnes d’une table. SELECT nom_du_champ
Syntaxe : FROM nom_du_tableau ;

Exemple : SELECT ville


FROM client ;
Table client

4
08/06/2021

13
Langage de Manipulation des Données
La commande SELECT:
Obtenir plusieurs colonnes :

Exemple : SELECT prenom, nom


FROM client ;

Table client

14
Langage de Manipulation des Données
La commande SELECT:
Obtenir toutes les colonnes d’un tableau (*):
Exemple : SELECT *
FROM client ;

La commande DISTINCT:
Cette requête sélectionne le champ ≪ma_colonne≫ de la table
≪nom_du_tableau≫ en évitant de retourner des doublons (en évitant la
redondance).
Syntaxe: SELECT DISTINCT ma_colonne
FROM nom_du_tableau ;

15
Langage de Manipulation des Données
La commande DISTINCT:
Exemple SELECT DISTINCT prenom
FROM client ;

5
08/06/2021

16
Langage de Manipulation des Données
La commande WHERE:
Permet d’extraire les lignes d’une base de données qui respectent une condition.
Cela permet d’obtenir uniquement les informations désirées.
Syntaxe: SELECT nom_colonnes
FROM nom_table
WHERE condition ;

Exemple : SELECT *
FROM client
Table client WHERE ville = 'paris' ;

17
Langage de Manipulation des Données
La commande WHERE:
Opérateurs de comparaisons: Il existe plusieurs operateurs de comparaisons. La
liste ci-jointe présente quelques uns :

18
Langage de Manipulation des Données

La commande AND et OR:


Les operateurs sont à ajoutés dans la condition WHERE. Ils peuvent être combinés a
l’infini pour filtrer les données comme souhaités.
AND : permet de s’assurer que la condition1 ET la condition2 sont vrai.
OR : vérifie quant a lui que la condition1 OU la condition2 est vrai.
Ces operateurs peuvent être combines a l’infini et mélangés. L’exemple ci-
dessous filtre les résultats de la table ≪ nom_table ≫ si condition1 ET
condition2 OU condition3 est vrai :

SELECT nom_colonnes
FROM nom_table
WHERE condition1 AND condition2;

SELECT nom_colonnes FROM nom_table


WHERE condition1 OR condition2;

SELECT nom_colonnes FROM nom_table


WHERE condition1 AND (condition2 OR condition3);

6
08/06/2021

19
Langage de Manipulation des Données
La commande IN:
S’utilise avec la commande WHERE pour vérifier si une colonne est
égale à une des valeurs comprise dans set de valeurs déterminés, c’est
une méthode simple pour vérifier si une colonne est égale a une valeur
OU une autre valeur OU une autre valeur et ainsi de suite, sans avoir a
utiliser de multiple fois l’operateur OR
Syntaxe: SELECT nom_colonne
FROM table
WHERE nom_colonne IN ( valeur1, valeur2, valeur3, ... );
Exemple :
SELECT prenom
FROM utilisateur
WHERE prenom = 'Maurice' OR prenom = 'Marie' OR prenom = 'Thimote' ;

SELECT prenom
FROM utilisateur
WHERE prenom IN ( 'Maurice', 'Marie', 'Thimote' );

20
Langage de Manipulation des Données

La commande IN:
Exemple :
SELECT *
FROM adresse
WHERE addr_ville IN ( 'Paris', 'Graimbouville' );

Table adresse

21
Langage de Manipulation des Données

La commande IN:
Exemple : (résultat de la requête)
SELECT *
FROM adresse
WHERE addr_ville IN ( 'Paris', 'Graimbouville' );

Table adresse

7
08/06/2021

22
Langage de Manipulation des Données
La commande BETWEEN:
L’operateur BETWEEN est utilisé pour sélectionner un intervalle de données dans
une requête utilisant WHERE. L’intervalle peut être constitue de chaines de
caractères, de nombres ou de dates. L’exemple le plus concret consiste par
exemple a récupérer uniquement les enregistrements entre 2 dates définies.
Syntaxe: SELECT *
FROM table
WHERE nom_colonne BETWEEN 'valeur1' AND 'valeur2' ;

Exemple :
SELECT *
FROM utilisateur
WHERE date_inscription BETWEEN #2012/04/01# AND #2012/04/20# ;

23
Langage de Manipulation des Données
La commande GROUP BY:
Est utilisée pour grouper plusieurs résultats et utiliser une fonction de totaux sur un groupe
de résultat. Sur une table qui contient toutes les ventes d’un magasin, il est par exemple
possible de liste regrouper les ventes par clients identiques et d’obtenir le coût total des
achats pour chaque client.
SELECT colonne1, fonction(colonne2)
Syntaxe: FROM table
GROUP BY colonne1 ;

Exemple :
SELECT client, SUM(tarif)
FROM achat
GROUP BY client ;

24
Langage de Manipulation des Données

La commande GROUP BY:


Utilisation d’autres fonctions de statistiques :
AVG() pour calculer la moyenne d’une colonne. Permet de connaitre
le prix du panier moyen pour de chaque client
COUNT() pour compter le nombre de lignes concernées. Permet de
savoir combien d’achats a été effectue par chaque client
MAX() pour récupérer la plus haute valeur. Pratique pour savoir
l’achat le plus cher
MIN() pour récupérer la plus petite valeur. Utile par exemple pour
connaitre la date du premier achat d’un client
SUM() pour calculer la somme de plusieurs lignes. Permet par
exemple de connaitre le total de tous les achats d’un client

8
08/06/2021

25
Langage de Manipulation des Données
La commande HAVING:
La condition HAVING est presque similaire à WHERE à la seule différence que HAVING
permet de filtrer en utilisant des fonctions telles que SUM(), COUNT(), AVG(), MIN() ou
MAX(). SELECT colonne1, fonction(colonne2)
Syntaxe: FROM nom_table
GROUP BY colonne1
HAVING fonction(colonne2) operateur valeur ;

Exemple :
SELECT client, SUM(tarif)
FROM achat
GROUP BY client
HAVING SUM(tarif) > 40 ;

26
Langage de Manipulation des Données
La commande ORDER BY :
La commande ORDER BY permet de trier les lignes dans un résultat
d’une requête. SELECT colonne1, colonne2
Syntaxe: FROM table
ORDER BY colonne1 ;

Exemple :
SELECT id, nom, prenom
FROM utilisateur
ORDER BY nom ;

27
Langage de Manipulation des Données
La commande UPDATE:
Cette commande permet d’effectuer des modifications sur des lignes
existantes UPDATE nom_table
Syntaxe: SET nom_colonne_1 = 'nouvelle valeur'
WHERE condition ;

UPDATE client
SET rue = '49 Rue Ameline',
Exemple : ville = 'Saint-Eustache-la-Foret',
code_postal = '76210'
WHERE id = 2 ;

9
08/06/2021

28
Langage de Manipulation des Données
La commande DELETE:
La commande DELETE en SQL permet de supprimer des lignes dans
une table. En utilisant cette commande associe a WHERE il est
possible de sélectionner les lignes concernées qui seront supprimées.
Syntaxe: DELETE FROM table
WHERE condition ;

Exemple : DELETE FROM utilisateur


WHERE date_inscription < '2012-04-10' ;

29
Langage de Manipulation des Données
La commande CASE:
La commande ≪ CASE … WHEN … ≫ permet d’utiliser des conditions de type ≪ si /
sinon ≫ (cf. if / else) similaire à un langage de programmation pour retourner un
résultat disponible entre plusieurs possibilités
Syntaxe: CASE
WHEN a=b THEN 'A egal a B'
WHEN a>b THEN 'A superieur a B'
ELSE 'A inferieur a B'
END

SELECT id, nom, surcharge, prix_unitaire, quantite,


CASE
WHEN surcharge =1 THEN 'Prix ordinaire'
WHEN surcharge >1 THEN 'Prix superieur a la normale'
ELSE 'Prix inferieur a la normale'
END
FROM `achat` ;

30
Langage de Manipulation des Données
La commande CASE :
Exemple : SELECT id, nom, surcharge, prix_unitaire, quantite,
CASE
WHEN surcharge =1 THEN 'Prix ordinaire'
WHEN surcharge >1 THEN 'Prix superieur a la normale'
ELSE 'Prix inferieur a la normale'
END
FROM `achat` ;
Table achat

10
08/06/2021

31
Langage de Manipulation des Données
La commande CASE :
Exemple : SELECT id, nom, surcharge, prix_unitaire, quantite,
CASE
WHEN surcharge =1 THEN 'Prix ordinaire'
WHEN surcharge >1 THEN 'Prix superieur a la normale'
ELSE 'Prix inferieur a la normale'
END
FROM `achat` ;

Table achat

32

Langage de Manipulation des Données


• La commande CASE :
UPDATE avec CASE :

Le CASE peut être utilisé dans n’importe quelle instruction ou clause, telle que
SELECT, UPDATE, DELETE, WHERE, ORDER BY ou HAVING.

UPDATE `achat`
SET `quantite` = (
CASE
WHEN `surcharge` < 1 THEN `quantite` + 1
WHEN `surcharge` > 1 THEN `quantite` - 1
ELSE quantite
END
);

33

Langage de Manipulation des Données


• La commande CASE :
Question : Réfléchissez au résultat de cette requête

UPDATE `achat`
SET `quantite` = (
CASE
WHEN `surcharge` < 1 THEN `quantite` + 1
WHEN `surcharge` > 1 THEN `quantite` - 1
ELSE quantite
END
);

11
08/06/2021

34

Langage de Manipulation des Données


• La commande UNION:
Elle permet de concaténer les résultats de 2 requêtes ou plus. Pour l’utiliser il est
nécessaire que chacune des requêtes à concaténer retournes le même nombre de
colonnes, avec les mêmes types de données et dans le même ordre.
Syntaxe:

SELECT * FROM table1


UNION
SELECT * FROM table2;

Union de 2 ensembles :
A = Résultat de la première requête
B = Résultat de la deuxième requête

35

Langage de Manipulation des Données


• La commande UNION:
Exemple :
SELECT * FROM magasin1_client
UNION
SELECT * FROM magasin2_client;
Table magasin1_client

Table magasin2_client

36

Langage de Manipulation des Données


• La commande UNION:
Resultat de :
SELECT * FROM magasin1_client
UNION
SELECT * FROM magasin2_client;

Union des deux tables : magasin1_client et table magasin2_client

12
08/06/2021

37

Langage de Manipulation des Données


• La commande INTERSECT
Elle permet donc de récupérer les enregistrements communs a 2 requêtes. Cela
peut être utile lorsqu’il faut trouver s’il y a des données similaires sur 2 tables
distinctes.
Syntaxe:

SELECT * FROM table1


INTERSECT
SELECT * FROM table2;

Intersection de 2 ensembles :
A = Résultat de la première requête
B = Résultat de la deuxième requête

38

Langage de Manipulation des Données


• La commande INTERSECT :
Exemple :
SELECT * FROM magasin1_client
INTERSECT
SELECT * FROM magasin2_client;
Table magasin1_client

Table magasin2_client

39

Langage de Manipulation des Données


• La commande INTERSECT :
Resultat de :
SELECT * FROM magasin1_client
INTERSECT
SELECT * FROM magasin2_client;

Intersection des deux tables : magasin1_client et table magasin2_client

13
08/06/2021

40

Langage de Manipulation des Données


• La commande EXCEPT :
Elle s’utilise entre 2 instructions pour récupérer les enregistrements de la première
instruction sans inclure les résultats de la seconde requête.

Syntaxe:

SELECT * FROM table1


EXCEPT
SELECT * FROM table2 ;

Exception entre 2 ensembles :


A = Résultat de la première requête
B = Résultat de la deuxième requête

41

Langage de Manipulation des Données


• La commande EXCEPT :
Exemple :
SELECT * FROM magasin1_client
EXCEPT
SELECT * FROM magasin2_client;
Table magasin1_client

Table magasin2_client

42

Langage de Manipulation des Données


• La commande EXCEPT :
Resultat de :
SELECT * FROM magasin1_client
EXCEPT
SELECT * FROM magasin2_client;

Exception entre deux tables : magasin1_client et table magasin2_client

14
08/06/2021

43

Les Jointures entre tables

44

Plan
• Les Jointures entre tables
– Introduction
– Modélisation d’une relation
– Qu’est ce qu’une jointure?
– Les Jointures Internes
– Les Jointures Externes

45

Les Jointures entre tables


Introduction

• Une Base de donnée est constituée d’un ensemble des tables.


Nécessité d’introduire une communication entre les tables, une
relation entre les tables.
• Pour le moment, nous n'avons travaillé que sur une seule table à la fois.
Dans la pratique, vous aurez certainement plusieurs tables dans votre
base, dont la plupart seront interconnectée.
Tout ça permet de mieux découper vos informations, d'éviter
des répétitions et de rendre ainsi vos données plus faciles à gérer.

15
08/06/2021

Théorie des bases


de données

46

Concepts du modèle relationnel

Domaine : Ensemble des valeurs d’un attribut.

Attribut : Une colonne d’une relation, caractérisé par un nom.

Relation : Sous ensemble du produit cartésien d’une liste de domaines.


C’est en fait un tableau à deux dimensions dont les colonnes
correspondent aux domaines et dont les lignes contiennent des tuples.
On associe un nom à chaque colonne.

Tuple : Liste des valeurs d’une ligne d’une relation.

47

48

16
08/06/2021

Les relations
Une relation est une table comportant des colonnes (appelées aussi
attributs) dont le nom et le type caractérisent le contenu qui sera
inséré dans la table.
Exemple:
Relation: Personnes
Attributs : nom, prénom, adresse, téléphone. Autrement dit, c’est
une table nommée Personne possédant les colonnes : nom, prénom,
adresse, téléphone.
Les lignes que contiendra cette table seront appelées
enregistrements ou tuples.
Personnes
nom prénom adresse téléphone
Dupond Marc 8 rue 00212666

49

Algèbre relationnelle
L’algèbre relationnelle regroupe toutes les opérations possibles sur les relations.
La liste des opérations possibles :
Projection: on ne sélectionne qu’un ou plusieurs attributs d’une relation (on ignore
les autres). Par exemple n’afficher que les colonnes nom et prénom de la table
Personnes.
Jointure: on fabrique une nouvelle relation à partir de 2 ou plusieurs autres en
prenant comme pivot 1 ou plusieurs attributs. Par exemple, on concatène la table du
carnet d’adresse et celle des inscrits à la bibliothèque en fonction du nom de
famille (c’es typiquement du recoupement de fichiers).
Sélection: on sélectionne tous les tuples ou bien seulement une partie en fonction de
critères de sélection qui portent sur les valeurs des attributs. Par exemple n’afficher
que les lignes de la table Personnes qui vérifient la condition suivante : le nom ne
commence pas par la lettre ‘C’.

Cette algèbre est facilement possible avec les commandes de MySQL (SELECT…
FROM… WHERE…).

50

Projection

Personnes
nom prénom adresse téléphone
Martin Pierre 7 allée des vers 0258941236
Dupond Jean 32 allé Poivrot 0526389152
Dupond Marc 8 rue de l’octet 0123456789

On projette la table Personnes


SELECT nom, prénom sur les colonnes nom et prénom.
FROM Personnes
nom prénom
Martin Pierre
Dupond Jean
Dupond Marc

51

17
08/06/2021

Jointure

Personnes Bibliothèque
nom prénom adresse téléphone nom Dernierlivre
Martin Pierre 7 allée des vers 0258941236 Dupond Robinson
Dupond Jean 32 allé Poivrot 0526389152 Jospin Faust
Martin Misère

SELECT Personnes.prénom, dernierlivre On joint les deux tables, grâce à la


FROM Personnes, Bibliothèque colonne nom.
WHERE Personnes.nom = Bibliothèque.nom

prénom Dernierlivre
Jean Robinson
Pierre Misère
52

Sélection

Personnes
nom prénom adresse téléphone
Martin Pierre 7 allée des vers 0258941236
Dupond Jean 32 allé Poivrot 0526389152
Dupond Marc 8 rue de l’octet 0123456789

On ne sélectionne que les


SELECT * tuples dont l’attribut nom
FROM Personnes
est égale à ‘Dupond’.
WHERE nom = "Dupond"

nom prénom adresse téléphone


Dupond Jean 32 allé Poivrot 0526389152
Dupond Marc 8 rue de l’octet 0123456789
53

Sélectionner des enregistrements (III)

Pour sélectionner tous les enregistrements d’une relation :


SELECT * FROM relation
Pour sélectionner toutes les valeurs d’un seul attribut :
SELECT attribut FROM relation
Pour éliminer les doublons :
SELECT DISTINCT attribut FROM relation
Pour trier les valeurs en ordre croissant :
SELECT DISTINCT attribut FROM relation ORDER BY attribut
ASC
DESC:
SELECT DISTINCT attribut FROM relation ORDER BY attribut
DESC
Pour se limiter aux num premiers résultats :
LIMIT num
SELECT DISTINCT attribut FROM relation WHERE condition ORDER
BY attribut ASC LIMIT num
54

18
08/06/2021

Sélectionner des enregistrements (IV)

Relation de départ Gens:


SELECT * FROM Gens (Pour sélectionner tous les enregistrements d’une relation)

Gens
Nom Prenom Age
Dupond Pierre 24
SELECT Nom FROM Gens
Martin Marc 48
Gens
Dupont Jean 51 2
Nom
Martin Paul 36
Dupond
Dupond Lionel 68
Martin
3 Gens
Dupont
Nom
Martin
Dupond
Dupond
Martin
Dupont

SELECT DISTINCT Nom FROM Gens


Permet d’ignorer les doublons de ligne
55

Sélectionner des enregistrements (V)

Gens SELECT DISTINCT Nom


FROM Gens
Nom
ORDER BY Nom ASC
Dupond
Dupont 4
Martin Gens SELECT DISTINCT Nom
5 FROM Gens
Nom
Dupond ORDER BY Nom ASC
Dupont LIMIT 2

6 Gens SELECT DISTINCT Nom


FROM Gens
Nom
WHERE Nom <> ‘Dupont’
Dupond
ORDER BY Nom ASC
LIMIT 2
56

Exemples

SELECT nom Liste du nom des produits dont le prix


FROM produits est inférieur ou égale à 100.5 EUR.
WHERE prix <= 100.5

SELECT nom, prénom Liste des nom et prénom des élèves dont
FROM élèves l’âge est compris entre 12 et 16 ans.
WHERE age BETWEEN 12 AND 16

SELECT modèle Liste des modèles de voiture dont la


FROM voitures couleur est dans la liste : rouge, blanc,
WHERE couleur IN (‘rouge’, ‘blanc’, ’noir’) noir.

SELECT modèle Liste des modèles de voiture dont la


FROM voitures couleur n’est pas dans la liste : rose,
WHERE couleur NOT IN (‘rose’, ‘violet’) violet.

57

19
08/06/2021

Fonctions de comparaison de chaînes


Le mot clé LIKE permet de comparer deux chaînes.
Le caractère ‘%’ est spécial et signifie : 0 ou plusieurs caractères.
Le caractère ‘_’ est spécial et signifie : 1 seul caractère, n’importe lequel.
L’exemple suivant permet de rechercher tous les clients sont le prénom commence par
‘Jean’, cela peut être ‘Jean-Pierre’, etc… :
SELECT nom
FROM clients
WHERE prénom LIKE ‘Jean%’
Pour utiliser les caractères spéciaux ci-dessus en leur enlevant leur fonction spéciale, il
faut les faire précéder de l’antislash : ‘\’.
Exemple, pour lister les produit dont le code commence par la chaîne ‘_XE’ :
SELECT *
FROM produit
WHERE code LIKE ‘\_XE%’

LIKE ‘a_c’ : peu utilisé, le caractère “_” (underscore) peut être remplacé par n’importe
quel caractère, mais un seul caractère uniquement (alors que le symbole pourcentage
“%” peut être remplacé par un nombre incalculable de caractères . Ainsi, ce modèle
permet de retourner les lignes “aac”, “abc”
58

20

Vous aimerez peut-être aussi