Langage SQL
Transcription
Langage SQL
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