SQL est un langage standard pour stocker, manipuler et récupérer des données dans des bases de données.
dans mon cours SQL vous apprendra à utiliser SQL dans : MySQL, SQL Server, MS Access, Oracle, Sybase, Informix, Postgres et d'autres systèmes de base de données.
1. SQL
SQL est un langage standard pour stocker, manipuler et récupérer
des données dans des bases de données.
Notre cours SQL vous apprendra à utiliser SQL dans : MySQL,
SQL Server, MS Access, Oracle, Sybase, Informix, Postgres et
d'autres systèmes de base de données.
Formateur Jaouad Assabbour
2. Qu'est-ce que SQL ?
• SQL signifie langage de requête structuré
• SQL vous permet d'accéder et de manipuler des bases de données
• SQL est devenu une norme de l'American National Standards
Institute (ANSI) en 1986 et de l'Organisation internationale de
normalisation (ISO) en 1987
Que peut faire SQL ?
• SQL peut exécuter des requêtes sur une base de données
• SQL peut récupérer des données d'une base de données
• SQL peut insérer des enregistrements dans une base de données
• SQL peut mettre à jour des enregistrements dans une base de données
• SQL peut supprimer des enregistrements d'une base de données
• SQL peut créer de nouvelles bases de données
• SQL peut créer de nouvelles tables dans une base de données
• SQL peut créer des procédures stockées dans une base de données
• SQL peut créer des vues dans une base de données
• SQL peut définir des autorisations sur les tables, les procédures et les
vues
Formateur Jaouad Assabbour
3. SQL est une norme – MAIS.…
Bien que SQL soit une norme ANSI/ISO, il existe différentes versions du
langage SQL.
Cependant, pour être conformes à la norme ANSI, ils prennent tous en
charge au moins les principales commandes (telles que SELECT,
UPDATE, DELETE, INSERT, WHERE) de la même manière.
Utilisation de SQL dans votre site Web
Pour créer un site Web qui affiche les données d'une base de données, vous
aurez besoin :
• Un programme de base de données RDBMS
• Pour utiliser un langage de script côté serveur, comme PHP ou JAVA
• Pour utiliser SQL pour obtenir les données souhaitées
• Utiliser HTML / CSS pour styliser la page
Formateur Jaouad Assabbour
4. SGBDR
RDBMS signifie système de gestion de base de données relationnelle.
RDBMS est la base de SQL et de tous les systèmes de bases de données
modernes tels que MS SQL Server, IBM DB2, Oracle, MySQL et
Microsoft Access.
Les données du SGBDR sont stockées dans des objets de base de données
appelés tables. Une table est une collection d'entrées de données connexes
et se compose de colonnes et de lignes.
Regardez le tableau "Customer":
Formateur Jaouad Assabbour
5. Chaque table est divisée en entités plus petites appelées champs. Les
champs de la table Customers sont composés de CustomerID,
CustomerName, ContactName, Address, City, PostalCode et Country.
Un champ est une colonne dans une table conçue pour conserver des
informations spécifiques sur chaque enregistrement de la table.
Un enregistrement, également appelé ligne, est chaque entrée individuelle
qui existe dans une table. Par exemple, il y a 11 enregistrements dans la
table Customers ci-dessus. Un enregistrement est une entité horizontale
dans une table.
Une colonne est une entité verticale dans une table qui contient toutes les
informations associées à un champ spécifique dans une table.
Syntaxe SQL
Une base de données contient le plus souvent une ou plusieurs tables.
Chaque table est identifiée par un nom (par exemple "Clients" ou
"Commandes"). Les tableaux contiennent des enregistrements (lignes)
avec des données.
Dans ce cours, nous utiliserons la célèbre base de données d'exemple
Northwind (incluse dans MS Access et MS SQL Server).
Formateur Jaouad Assabbour
6. Instructions SQL
La plupart des actions que vous devez effectuer sur une base de données
sont effectuées avec des instructions SQL.
L'instruction SQL suivante sélectionne tous les enregistrements de la table
"Clients" :
Garde en tête que...
• Les mots-clés SQL ne sont PAS sensibles à la casse select : est
identique à SELECT
Dans ce tutoriel, nous écrirons tous les mots-clés SQL en majuscules.
Point-virgule après les instructions SQL ?
Certains systèmes de base de données nécessitent un point-virgule
à la fin de chaque instruction SQL.
Le point-virgule est le moyen standard de séparer chaque
instruction SQL dans les systèmes de base de données qui
permettent d'exécuter plusieurs instructions SQL dans le même
appel au serveur.
Formateur Jaouad Assabbour
7. Dans ce didacticiel, nous utiliserons un point-virgule à la fin de
chaque instruction SQL.
Certaines des commandes SQL les plus importantes
• SELECT- extrait des données d'une base de données
• UPDATE- met à jour les données dans une base de données
• DELETE- supprime les données d'une base de données
• INSERT INTO- insère de nouvelles données dans une base de
données
• CREATE DATABASE- crée une nouvelle base de données
• ALTER DATABASE- modifie une base de données
• CREATE TABLE- crée un nouveau tableau
• ALTER TABLE- modifie un tableau
• DROP TABLE- supprime une table
• CREATE INDEX- crée un index (clé de recherche)
• DROP INDEX- supprime un index
Formateur Jaouad Assabbour
8. L'instruction SQL SELECT
L' SELECT instruction est utilisée pour sélectionner des données dans une
base de données.
Les données renvoyées sont stockées dans une table de résultats, appelée
ensemble de résultats.
Syntaxe SELECT
Ici, colonne1, colonne2, ... sont les noms de champ de la table à partir de
laquelle vous souhaitez sélectionner des données. Si vous souhaitez
sélectionner tous les champs disponibles dans le tableau, utilisez la syntaxe
suivante :
Formateur Jaouad Assabbour
9. SELECT Exemple sans DISTINCT
L'instruction SQL suivante sélectionne toutes les valeurs (y compris les
doublons) de la colonne "Pays" de la table "Clients" :
Maintenant, utilisons l' instruction SELECT DISTINCT et voyons le
résultat.
SELECT DISTINCT Exemples
Formateur Jaouad Assabbour
10. L'instruction SQL suivante répertorie le nombre de pays clients différents
(distincts) :
Resultats :
L'instruction SQL suivante répertorie le nombre de pays clients différents
(distincts) :
resultats :
Formateur Jaouad Assabbour
11. Clause WHERE SQL
La clause WHERE est utilisée pour filtrer les enregistrements.
Il est utilisé pour extraire uniquement les enregistrements qui remplissent
une condition spécifiée.
Syntaxe WHERE
Exemple :
Resultats :
Formateur Jaouad Assabbour
12. Opérateurs dans la clause WHERE
Between exemples :
Like exemple :
In exemple :
Formateur Jaouad Assabbour
13. Opérateurs SQLAND, OR et NOT
La clause WHERE peut être combinée avec les opérateurs AND, OR et .
NOT
Les opérateurs AND et OR sont utilisés pour filtrer les enregistrements en
fonction de plusieurs conditions :
• L' opérateur AND affiche un enregistrement si toutes les conditions
séparées par AND sont VRAIES.
• L' opérateur OR affiche un enregistrement si l'une des conditions
séparées par OR est VRAIE.
L' opérateur NOT affiche un enregistrement si la ou les conditions
ne sont PAS VRAIES.
Syntaxe AND
OR Syntaxe
Formateur Jaouad Assabbour
15. Combiner ET, OU et NON
Vous pouvez également combiner les opérateurs AND, OR et NOT
L'instruction SQL suivante sélectionne tous les champs de "Clients" où le
pays est "Allemagne" ET la ville doit être "Berlin" OU "München"
(utilisez des parenthèses pour former des expressions complexes) :
Formateur Jaouad Assabbour
16. Le mot-clé SQL ORDER BY
Le mot-clé ORDER BY est utilisé pour trier le jeu de résultats dans
l'ordre croissant ou décroissant.
Le mot- clé ORDER BY trie les enregistrements par ordre croissant par
défaut. Pour trier les enregistrements par ordre décroissant, utilisez le mot-
clé DESC.
Trier par Syntaxe
ORDER BY Plusieurs colonnes Exemple
L'instruction SQL suivante sélectionne tous les clients de la table
"Customers", triés par ordre croissant de "Country" et décroissant
par la colonne "CustomerName" :
Formateur Jaouad Assabbour
17. Instruction SQL INSERT INTO
L' instruction INSERT INTO est utilisée pour insérer de nouveaux
enregistrements dans une table.
Syntaxe INSÉRER DANS
Il est possible d'écrire l' INSERT INTO énoncé de deux manières :
1. Spécifiez à la fois les noms de colonne et les valeurs à insérer :
Si vous ajoutez des valeurs pour toutes les colonnes de la table,
vous n'avez pas besoin de spécifier les noms de colonne dans la
requête SQL. Cependant, assurez-vous que l'ordre des valeurs est
dans le même ordre que celui des colonnes du tableau. Ici, la
syntaxe INSERT INTO serait la suivante :
Formateur Jaouad Assabbour
18. INSÉRER DANS Exemple
L'instruction SQL suivante insère un nouvel enregistrement dans la table
"Clients" :
Valeurs NULL SQL
Un champ avec une valeur NULL est un champ sans valeur.
Si un champ d'une table est facultatif, il est possible d'insérer un nouvel
enregistrement ou de mettre à jour un enregistrement sans ajouter de
valeur à ce champ. Ensuite, le champ sera enregistré avec une valeur
NULL.
Formateur Jaouad Assabbour
19. L'instruction SQL UPDATE
L'instruction UPDATE est utilisée pour modifier les enregistrements
existants dans une table.
MISE À JOUR Syntaxe
L'instruction SQL suivante met à jour le premier client (CustomerID = 1)
avec un nouveau contact et une nouvelle ville.
C'est la clause WHERE qui détermine combien d'enregistrements seront mis
à jour.
L'instruction SQL suivante mettra à jour ContactName sur "Juan" pour
tous les enregistrements où le pays est "Mexique":
Formateur Jaouad Assabbour
20. L'instruction SQL DELETE
L'instruction DELETE est utilisée pour supprimer des enregistrements
existants dans une table.
Syntaxe DELETE
Formateur Jaouad Assabbour
21. La clause SQL SELECT TOP
La clause SELECT TOP est utilisée pour spécifier le nombre
d'enregistrements à retourner.
La clause SELECT TOP est utile sur les grandes tables avec des milliers
d'enregistrements. Le renvoi d'un grand nombre d'enregistrements peut
avoir un impact sur les performances.
Remarque : Tous les systèmes de base de données ne prennent
pas en charge la clause SELECT TOP. MySQL prend en charge la
clause LIMIT permettant de sélectionner un nombre limité
d'enregistrements, tandis qu'Oracle utilise FETCH FIRST n ROWS
ONLY et ROWNUM
Syntaxe SQL
Syntaxe MySQL :
Formateur Jaouad Assabbour
22. Syntaxe Oracle 12 :
SQL TOP, LIMIT et FETCH FIRST Exemples
L'instruction SQL suivante sélectionne les trois premiers enregistrements
de la table "Clients" (pour SQL Server/MS Access) :
L'instruction SQL suivante montre l'exemple équivalent pour
MySQL :
L'instruction SQL suivante montre l'exemple équivalent pour
Oracle :
Formateur Jaouad Assabbour
23. Les fonctions SQL MIN() et MAX()
La fonction MIN() renvoie la plus petite valeur de la colonne
sélectionnée.
La fonction MAX() renvoie la plus grande valeur de la colonne
sélectionnée.
Syntaxe MIN()
L'instruction SQL suivante trouve le prix du produit le moins cher :
Syntaxe MAX()
L'instruction SQL suivante trouve le prix du produit le plus cher :
Formateur Jaouad Assabbour
24. Les fonctions SQL COUNT(), AVG() et SUM()
La fonction COUNT() renvoie le nombre de lignes correspondant à un
critère spécifié.
Syntaxe COUNT()
L'instruction SQL suivante trouve le nombre de produits :
La fonction AVG() renvoie la valeur moyenne d'une colonne numérique.
Syntaxe AVG()
L'instruction SQL suivante trouve le prix moyen de tous les produits :
Formateur Jaouad Assabbour
25. La fonction SUM() renvoie la somme totale d'une colonne numérique.
Syntaxe SOMME()
L'instruction SQL suivante trouve la somme des champs "Quantity" dans
la table "OrderDetails" :
Formateur Jaouad Assabbour
26. L'opérateur SQL LIKE
L'opérateur LIKE est utilisé dans une clause WHERE pour rechercher un
modèle spécifié dans une colonne.
Deux caractères génériques sont souvent utilisés conjointement avec l'
opérateur LIKE :
• Le signe de pourcentage (%) représente zéro, un ou plusieurs
caractères
• Le signe de soulignement (_) représente un seul caractère
Le signe de pourcentage et le trait de soulignement peuvent également être
utilisés en combinaison !
COMME Syntaxe
Voici quelques exemples montrant différents LIKEopérateurs avec les
caractères génériques '%' et '_' :
Formateur Jaouad Assabbour
27. SQL COMME Exemples
L'instruction SQL suivante sélectionne tous les clients dont le
CustomerName commence par "a" :
L'instruction SQL suivante sélectionne tous les clients dont le
CustomerName se termine par "a" :
L'instruction SQL suivante sélectionne tous les clients avec un
ContactName qui commence par "a" et se termine par "o" :
Formateur Jaouad Assabbour
28. L'opérateur SQL IN
L'opérateur IN vous permet de spécifier plusieurs valeurs dans une clause
WHERE.
L'opérateur IN est un raccourci pour plusieurs conditions OR.
Syntaxe IN
Exemples d'opérateur IN
L'instruction SQL suivante sélectionne tous les clients situés en
"Allemagne", "France" et "Royaume-Uni" :
Formateur Jaouad Assabbour
29. L'instruction SQL suivante sélectionne tous les clients qui ne sont PAS
situés en "Allemagne", "France" et "Royaume-Uni"
L'opérateur SQL BETWEEN
L'opérateur BETWEEN sélectionne des valeurs dans une plage donnée.
Les valeurs peuvent être des nombres, du texte ou des dates.
L'opérateur BETWEEN est inclusif : les valeurs de début et de fin sont
incluses.
Formateur Jaouad Assabbour
30. ENTRE Syntaxe
BETWEEN Exemple
L'instruction SQL suivante sélectionne tous les produits dont le prix est
compris entre 10 et 20 :
Exemple BETWEEN avec IN
L'instruction SQL suivante sélectionne tous les produits dont le prix est
compris entre 10 et 20. De plus ne pas afficher les produits avec un
CategoryID de 1, 2 ou 3:
Formateur Jaouad Assabbour
31. ENTRE Dates Exemple
L'instruction SQL suivante sélectionne toutes les commandes dont la date
de commande est comprise entre le '01-juillet-1996' et le '31-juillet-1996' :
Alias SQL
Les alias SQL sont utilisés pour donner à une table, ou à une colonne d'une
table, un nom temporaire.
Les alias sont souvent utilisés pour rendre les noms de colonnes plus
lisibles.
Un alias n'existe que pour la durée de cette requête.
Un alias est créé avec le mot-clé AS.
Syntaxe de colonne d'alias
Formateur Jaouad Assabbour
32. L'instruction SQL suivante crée deux alias, un pour la colonne
CustomerID et un pour la colonne CustomerName :
JOINTURE SQL
Une clause JOIN est utilisée pour combiner des lignes de deux tables ou
plus, en fonction d'une colonne liée entre elles.
Examinons une sélection du tableau "Commandes" :
Notez que la colonne "CustomerID" dans la table "Orders" fait référence
au "CustomerID" dans la table "Customers". La relation entre les deux
tables ci-dessus est la colonne "CustomerID".
Formateur Jaouad Assabbour
33. Ensuite, nous pouvons créer l'instruction SQL suivante (qui contient un
INNER JOIN), qui sélectionne les enregistrements dont les valeurs
correspondent dans les deux tables :
et cela produira quelque chose comme ceci:
Différents types de SQL JOIN
(INNER) JOIN: renvoie les enregistrements dont les valeurs
correspondent dans les deux tables
• LEFT (OUTER) JOIN: renvoie tous les enregistrements de la
table de gauche et les enregistrements correspondants de la table de
droite
Formateur Jaouad Assabbour
34. • RIGHT (OUTER) JOIN: renvoie tous les enregistrements de la
table de droite et les enregistrements correspondants de la table de
gauche
• FULL (OUTER) JOIN: Renvoie tous les enregistrements lorsqu'il
y a une correspondance dans la table de gauche ou de droite
Mot-clé SQL INNER JOIN
Le mot clé INNER JOIN sélectionne les enregistrements dont les valeurs
correspondent dans les deux tables.
Syntaxe INNER JOIN
SQL INNER JOIN Exemple
L'instruction SQL suivante sélectionne toutes les commandes
contenant des informations client :
Remarque : Le mot-clé INNER JOIN sélectionne toutes les
lignes des deux tables tant qu'il existe une correspondance entre
les colonnes. S'il y a des enregistrements dans la table
Formateur Jaouad Assabbour
35. "Commandes" qui n'ont pas de correspondance dans "Clients", ces
commandes ne seront pas affichées !
REJOIGNEZ Trois Tables
L'instruction SQL suivante sélectionne toutes les commandes avec des
informations sur le client et l'expéditeur :
SQL LEFT JOIN
Le mot-clé LEFT JOIN renvoie tous les enregistrements de la table de
gauche (table1) et les enregistrements correspondants de la table de droite
(table2). Le résultat est 0 enregistrement du côté droit, s'il n'y a pas de
correspondance.
Syntaxe LEFT JOIN
L'instruction SQL suivante sélectionnera tous les clients et toutes les
commandes qu'ils pourraient avoir :
Formateur Jaouad Assabbour
36. Remarque : Le mot-clé LEFT JOIN renvoie tous les enregistrements de
la table de gauche (Clients), même s'il n'y a pas de correspondance dans la
table de droite (Commandes).
SQL FULL OUTER JOIN
Le mot-clé FULL OUTER JOIN renvoie tous les enregistrements
lorsqu'il existe une correspondance dans les enregistrements de la table de
table1 ou de table2.
Astuce : FULL OUTER JOIN et FULL JOIN sont identiques.
Syntaxe FULL OUTER JOIN
Remarque : FULL OUTER JOIN peut potentiellement renvoyer
des ensembles de résultats très volumineux !
Formateur Jaouad Assabbour
37. L'instruction SQL suivante sélectionne tous les clients et toutes les
commandes :
L'opérateur SQL UNION
L'opérateur UNION est utilisé pour combiner le jeu de résultats de deux
SELECT déclarations ou plus.
• Chaque instruction SELECT à l'intérieur UNION doit avoir le même
nombre de colonnes
• Les colonnes doivent également avoir des types de données
similaires
• Les colonnes de chaque instruction SELECT doivent également être
dans le même ordre
Syntaxe UNION
Formateur Jaouad Assabbour
38. SQL UNION Exemple
L'instruction SQL suivante renvoie les villes (uniquement des valeurs
distinctes) des tables "Clients" et "Fournisseurs" :
Remarque : Si certains clients ou fournisseurs ont la même ville,
chaque ville ne sera répertoriée qu'une seule fois, car UNIONne
sélectionne que des valeurs distinctes. Utilisez UNION ALLpour
sélectionner également les valeurs en double !
UNION ALL Syntaxe
L'opérateur UNION ne sélectionne que des valeurs distinctes par défaut.
Pour autoriser les valeurs en double, utilisezUNION ALL :
Remarque : Les noms de colonne dans le jeu de résultats sont
généralement égaux aux noms de colonne dans la première
instruction SELECT.
Formateur Jaouad Assabbour
39. L'instruction SQL suivante renvoie les villes (valeurs en double également)
des tables "Clients" et "Fournisseurs" :
SQL UNION Avec WHERE
L'instruction SQL suivante renvoie les villes allemandes (uniquement des
valeurs distinctes) à partir des tables "Clients" et "Fournisseurs" :
SQL UNION ALLAvec WHERE
L'instruction SQL suivante renvoie les villes allemandes (valeurs en
double également) à partir des tables "Clients" et "Fournisseurs" :
Formateur Jaouad Assabbour
40. SQL UNION ALLAvec WHERE
L'instruction SQL suivante renvoie les villes allemandes (valeurs en
double également) à partir des tables "Clients" et "Fournisseurs" :
Formateur Jaouad Assabbour
41. L'instruction SQL GROUP BY
L' instruction GROUP BY regroupe les lignes qui ont les mêmes valeurs
dans des lignes récapitulatives, comme "trouver le nombre de clients dans
chaque pays".
L'instruction GROUP BY est souvent utilisée avec des fonctions
d'agrégation ( COUNT(), MAX(), MIN(), SUM(), AVG()) pour
regrouper le jeu de résultats par une ou plusieurs colonnes.
Syntaxe GROUP BY
Formateur Jaouad Assabbour
42. L'instruction SQL suivante répertorie le nombre de clients dans chaque
pays, triés de haut en bas :
GROUP BY avec JOIN Exemple
L'instruction SQL suivante répertorie le nombre de commandes envoyées
par chaque expéditeur :
La clause SQL HAVING
La clause HAVING a été ajoutée à SQL car le mot- clé WHERE ne peut pas
être utilisé avec des fonctions d'agrégation.
Formateur Jaouad Assabbour
43. Syntaxe
L'instruction SQL suivante répertorie le nombre de clients dans
chaque pays. N'incluez que les pays comptant plus de cinq
clients :
L'instruction SQL suivante répertorie le nombre de clients dans
chaque pays, triés par ordre décroissant (n'incluez que les pays
comptant plus de 5 clients ) :
Formateur Jaouad Assabbour
44. Plus d'exemples d'avoir
L'instruction SQL suivante répertorie les employés qui ont enregistré plus
de 10 commandes :
L'instruction SQL suivante indique si les employés "Davolio" ou "Fuller"
ont enregistré plus de 25 commandes :
Formateur Jaouad Assabbour
45. L'opérateur SQL EXISTS
L'opérateur EXISTS est utilisé pour tester l'existence de tout
enregistrement dans une sous-requête.
L’opérateur EXISTS renvoie TRUE si la sous-requête renvoie un ou
plusieurs enregistrements.
Syntaxe
Formateur Jaouad Assabbour