Le langage SQL Cours 2 I. Introduction générale C’est un langage standard supporté par tous les Système de Gestion de Base de Données Relationnels (Oracle, DBZ, SQL Serveur, Accers, …) Le langage permet : La création de la Base de Donnée (Table, index, Contraintes, …) Le remplissage de la base (Ajout, modification, Suppression des données) La consultation La gestion de la sécurité (création de compte utilisateurs, gestion des accès aux données, …) II. La consultation en SQL On suppose qu’une base de données existes déjà (cf : Tables sur les employés, département et bâtiment). N.B. : Une requête SQL peut être écrite sur plusieurs lignes ou sur une seule. Le compilateur recherche seulement un « ; » qui signifie la fin de l’instruction. 1) Sélection Inconditionnelle Différentes syntaxes possibles a) Syntaxe n°1 : SELECT * FROM nom_table ; Affiche toute la table b) Syntaxe n°2 : SELECT Colonne1, Colonne2, … FROM nom_table ; Seules les colonnes spécifiées sont affichées. NeoXsysm & DiAboLiK DUT Info 1er année RESEAU Pages 1/6 c) Syntaxe n°3 : SELECT liste_expressions FROM nom_table ; Une expression peut être : nom_colonne opérateur constante_ou_nom_colonne Exemple : SELECT mat, salaire * 1.05 FROM emp ; On affiche les salaires augmentés de 5% des employés. d) Il est possible de renommer certaines colonnes du résultat. SELECT mat, salaire * 1.05 as Nouv_salaire FROM emp ; matricule Nouv_salaire 2) Le Tri Il est possible de trier le résultat d’une requête sur une ou plusieurs colonnes. SELECT … FROM … ORDER by Col1 [asc | desc], Col2 [asc | desc], … Exemple : SELECT mat, salaire FROM emp ORDER by salaire desc ; a) Sélection de tuples uniques En SQL, les doublons doivent être supprimés explicitement sinon ils seront présents dans les résultats. SELECT distinct Col1, Col2, … FROM … NeoXsysm & DiAboLiK DUT Info 1er année RESEAU Pages 2/6 3) Sélection Conditionnelles Les données peuvent être choisies à l’aide d’opérateurs de comparaisons, d’opérateurs logiques, des caractères Jocker, des prédicats prédéfinis. Syntaxe générale : SELECT … FROM … WHERE Conditions Condition élémentaire Condition Condition Complexe Condition élémentaire : nom_col - Opérateur_comparaison - Constante_ou_col Opérateurs : <, >, =, !=, >=, <= Is NULL (Vérifie si la colonne n’est pas du tout rensignée) IN (liste de valeur) pour vérifier si la colonne fait parie de la liste des valeurs. BETWEEN valeur1 and valeur2 Les conditions élémentaires peuvent être combinées avec OR, AND, NOT. Exemples : SELECT * FROM bâtiment WHERE région != ‘IDF’ ; SELECT mat, dept, div FROM emp WHERE salaire BETWEEN 25000 and 30000 ; SELECT mat, nom FROM emp WHERE mgr is NULL ; SELECT nom, mat FROM emp WHERE dept=’Ventes’ and div in (‘NO’,’SE’) On peut utiliser des caractères Jocker : % : Chaîne de caractères quelconque - : Un et un seul caractère. Exemple : SELECT FROM WHERE NeoXsysm & DiAboLiK DUT Info 1er année nom, mat, salaire emp nom like(S%) or nom like(s%) RESEAU Pages 3/6 4) Les jointures a) Jointure sur une colonne Affichez le code postal des départements Vente. SELECT FROM WHERE And postal, bati dept, batiment dept.bati = batiment.bati nomdep=’Ventes’ b) Jointure sur plusieurs colonnes Le nom des employés qui travaillent au dessus du 1er étage. SELECT FROM WHERE And And nom emp, dept dept.nomdep = emp.dept dept.div = emp.div etage > 1 c) Auto-Jointure C’est une jointure entre une table et elle-même. Exemple : Affichez les employés dont la différence de salaire avec leur Manager est < 20000. SELECT FROM WHERE And emp1.mat, emp1.nom emp emp1, emp emp2 emp1.mgr = emp2.nom (emp2.salaire – emp1.salaire) < 20 000 NeoXsysm & DiAboLiK DUT Info 1er année RESEAU Pages 4/6 5) Les requêtes complexes a. Utilisation des fonctions Les fonctions opèrent sur des colonnes (jamais sur des lignes) de données. Nom_fonction([distinct] nom_colonne) [as nouvelle_colonne] SQL fournit cinq fonctions : COUNT : Nombre d’élements de la coonne SUM : somme des éléments AVG : Moyenne MAX ; le plus grand MIN : le plus petit Remarque : ces fonctions ignorent les valeurs nulls. Elles ne s’utilisent jamais dans la close WHERE. Exemple : Salaire moyen des employés. SELECT FROM AVG(salaire) emp as salaire_moyen Salaire_moyen 19 000 Plus petit et plus grand salaire. SELECT FROM Min(salaire), Max(salaire) emp Salaire moyen des employés qui gagnent plus de 20 000. SELECT FROM WHERE AVG(salaire) emp salaire > 20000 NeoXsysm & DiAboLiK DUT Info 1er année RESEAU Pages 5/6 6) Les sous requêtes Une sous-requête s’est une requête select dans une autre requête select. SELECT FROM WHERE … … expression IN (Select … From … where …) Intérêt : avoir des listes de valeurs dynamiques. Affichez le nom et le salaire des managers. SELECT FROM WHERE nom, salaire emp nom NeoXsysm & DiAboLiK DUT Info 1er année IN (SELECT FROM RESEAU distinct mgr emp) Pages 6/6