Langage SQL

publicité
22/12/2014
Université Hassan II – Casablanca
Ecole Supérieure de Technologie de Casablanca
Requêtes
Une requête est une interrogation posée à la base de données ou une action
effectuée sur les données de cette base de données.
Il existe deux types de requêtes :
Requêtes de sélection : servent à afficher uniquement certaines données
contenues dans les tables selon certains critères. Elles peuvent aussi faire
des calculs sur vos données.
Prof . EL HADDIOUI Ismail
Requêtes d'action, elles permettent de :
Créer, modifier la structure ou supprimer une table.
Ajouter, modifier ou supprimer des enregistrements d'une table
2014-2015
2
1
22/12/2014
Requêtes
SQL : 1. Commandes de base
Pour créer des requêtes sur Access, on peut utiliser deux modes :
Mode Assistant
Select <champ1>, <champ2> From <table> Where <condition> ;
Exemples :
Select * From Etudiants ;
Select Nom_étudiant, Prénom_étudiant From Etudiants ;
Select * From Etudiants Where Ville_étudiant = "Casablanca" ;
Mode SQL : sous forme du texte, qui utilise le langage SQL qui peut être
utilisé dans n'importe quel système de gestion de base de données (Access,
SQL Server, Oracle, MySQL, PostgreSQL…)
3
Select [id client] from Clients ;
4
2
22/12/2014
SQL : 2. Les paramètres de : WHERE
SQL : 2. Les paramètres de : WHERE
SELECT Id_étudiant FROM Notes WHERE Note_étudiant >= 10 And Note_étudiant < 12 ;
AND : les deux expressions doivent être vérifiées.
SELECT Id_étudiant FROM Notes WHERE Note_étudiant BETWEEN 10 and 12 ;
OR : au moins une des deux expressions doit être vérifiée (et/ou).
SELECT Nom_étudiant, Ville_étudiant FROM Etudiants WHERE Ville_étudiant =
Not : effectue la négation d'un opérateur ( AND Not, OR Not...).
"Casablanca" OR Ville_étudiant = "Rabat" ;
BETWEEN : sélectionne plusieurs valeurs comprises entre deux valeurs.
SELECT Nom_étudiant, Ville_étudiant FROM Etudiants WHERE Not Ville_étudiant =
IN() : sélectionne des valeurs qui appartiennent à une liste
"Casablanca";
Opérateurs mathématiques : =
>
< >=
<=
SELECT Nom_étudiant, Ville_étudiant FROM Etudiants WHERE Ville_étudiant <>
<>
"Casablanca";
SELECT Nom_étudiant, Ville_étudiant FROM Etudiants WHERE Ville_étudiant In
Exemples :
("Casablanca","Rabat","Kenitra","Mohammadia");
SELECT Nom_étudiant, Ville_étudiant, Date_naissance_étudiant FROM Etudiants
WHERE Date_naissance_étudiant >= #01/01/1990# And Not Ville_étudiant =
"Casablanca";
5
6
3
22/12/2014
SQL : 3. ORDER BY
SQL : 4. Jointure
Elle sert à classer les données sur un champ par l'ordre croissant ou décroissant
La jointure sert à sélectionner les enregistrements de deux tables jointes
Select… From… Where… ORDER BY champ ASC ou DESC ;
Il existe trois types de jointure : INNER JOIN, LEFT JOIN et RIGHT JOIN
ASC = Croissant ; DESC = Décroissant
INNER JOIN Nom_Table ON Champ1 =Champ2
ASC est la valeur par défaut
Cette commande n'affiche pour les deux tables que les enregistrements qui ont une
Exemples
correspondance pour leur champ commun (clé primaire et clé étrangère).
Select * From Etudiants ORDER BY Id_étudiant ;
Select * From Etudiants ORDER BY Date_naissance_étudiant Desc ;
Exemple :
Select * From Etudiants ORDER BY Ville_étudiant Asc, Id_étudiant Desc ;
SELECT Nom_étudiant, Prénom_étudiant, Ville_étudiant, Nom_classe FROM
Select Id_étudiant, Nom_étudiant, Prénom_étudiant From Etudiants ORDER BY
Classes INNER JOIN Etudiants ON Classes.Id_classe = Etudiants.Id_classe ;
Nom_étudiant, Prénom_étudiant ;
7
8
4
22/12/2014
SQL : 4. Jointure
SQL : 5. GROUP BY...HAVING
LEFT JOIN Nom_Table ON Champ1 =Champ2
Cette commande affiche pour la table de gauche tous les enregistrements même s'ils
n'ont pas de correspondance dans la table de droite.
Cette commande permet d'effectuer un calcul sur un champ donné :
Exemple :
Select champ1,Count(champ2) From Table GROUP BY champ1 HAVING
condition sur champ1 ;
SELECT Nom_étudiant, Prénom_étudiant, Ville_étudiant, Nom_classe FROM
Classes LEFT JOIN Etudiants ON Classes.Id_classe = Etudiants.Id_classe ;
Exemple :
Select Type_séance, Count(Id_séance) AS [Nombre de séances] From Séances
RIGHT JOIN Nom_Table ON Champ1 =Champ2
GROUP BY Type_séance HAVING Type_séance <> "Cours";
Cette commande affiche pour la table de droite tous les enregistrements même s'ils
n'ont pas de correspondance dans la table de gauche.
Exemple de GROUP By + Jointure
Exemple :
Select Nom_classe, Count(Id_étudiant) AS [Nombre d'étudiants] From Etudiants
SELECT Nom_étudiant, Prénom_étudiant, Ville_étudiant, Nom_classe FROM
Classes RIGHT JOIN Etudiants ON Classes.Id_classe = Etudiants.Id_classe ;
INNER JOIN Classes ON Classes.Id_classe = Etudiants.Id_classe GROUP BY
Nom_classe ;
9
10
5
22/12/2014
SQL : 5. GROUP BY...HAVING
SQL : Remarques
Quelques expressions de groupement :
Si la requête contient plusieurs conditions contenant des paramètres And et Or, On
Count : Comptage
doit utiliser les parenthèses
Avg : Moyenne
Min, Max : Minimum et maximum
Select… From… Where (champ1 = valeur1 Or champ1 = valeur2) And (champ2 =
Sum : Somme
valeur3 Or champ2 = valeur4) ;
HAVING est similaire à WHERE à ceci près qu'elle supporte des expressions de
Syntaxe complète :
regroupement (Avg, Count, Sum…) alors que WHERE ne les supporte pas.
Exemple :
Select… From… INNER JOIN… ON… Where… GROUP BY… Having…
Select Type_séance, Sum(Durée_séance) As [Durée_totale] From Séances
Order By… ;
Group By Type_séance Having Type_séance In ("TP","TD") ;
11
12
6
Téléchargement