240 likes | 482 Views
CHAPITRE 6 Le langage de commande SQL. SELECT liste des colonnes FROM nom des tables WHERE conditions. Le Langage SQL. Pour faire des interrogations sur les données de ma base : QBE (Query By Exemple) SQL (Structured Query Langage), . SQL : standard de fait (norme ANSI) il permet :
E N D
CHAPITRE 6 Le langage de commande SQL Y. Ouzrout
SELECTliste des colonnes FROMnom des tables WHEREconditions Le Langage SQL • Pour faire des interrogations sur les données de ma base : • QBE(Query By Exemple) • SQL (Structured Query Langage), • ... • SQL : standard de fait (norme ANSI) il permet : • - la création, interrogation et manipulation des données d'une base • - déclarer les relations, créer les occurrences • - faire toute opération définie par l'algèbre relationnelle. Y. Ouzrout
Exemple Table Animaux Select * from Animaux where Espèce = ‘Yeti’ ; Y. Ouzrout
Le Langage SQL Quatre grandes familles de commandes • Langaged'Interrogationdes Données SELECT • Langage de Manipulation de Données INSERT, UPDATE, DELETE • Langage de Contrôle des Données GRANT, DENY, REVOKE • Langage de Définition de Données CREATE, ALTER, DROP, RENAME, TRUNCATE Y. Ouzrout
LE LANGAGE SQL : Interrogation des données 1 – Interrogation de la base : LID 2 – Les jointures 3 – Les sous-interrogations et fonctions de groupe Y. Ouzrout
Le Langage SQL : Interrogation des données SELECT Sélection des colonnes à interroger. FROMChoix des tables à partir desquelles on fait la sélection. WHERE Sélection des lignes (application d'un filtre). Y. Ouzrout
Afficher toutes les colonnes d'une table. SELECT * FROMAnimaux ; Sélectionner des colonnes spécifiques • Choix des colonnes par la clause SELECT. SELECT ID, Espèce, Nom FROM Animaux; ID Espèce Nom -- ------ --- 1 Chien Bidou 2 Chat Groucha 3 Yeti Georges 4 Elephant Dumbo 5 Girafe Flip Flap Y. Ouzrout
Autre exemple de BD Fourniture IdFourT ... Service IdService ... 0,n 1,1 Commander IdCom 1,n Dépendre 1,n Rattacher 0,n 1,n 1,1 Fournisseur Collectivite Agent IdFourS ... IdCollect ... IdAgent ... Y. Ouzrout
Autre exemple de BD Fournisseur IdFourS FNom FAdresse FType Commande IdCom Agent_Id FourT_Id FourS_Id DateC DateL Prix Quantite Service Fourniture IdService SNom Collect_Id IdFourT FDesignation Quantite_Stock Agents IdAgent ANom APrenom DateE Fonction Responsable Salaire Service_Id Commission Collectivité IdCollect CDesignation Y. Ouzrout
Créer des expressions sur des données de type NUMBER ou DATE avec : + - * / SELECTANom, Salaire*12 FROMAgent ; Remarque : la colonne salaire*12 existe uniquement à l’affichage. • Alias sur colonne : AS SELECTANom, Salaire*12 AS ‘Salaire Annuel’ FROMAgent ; • La clause ORDER BY permet de trier les lignes : ASCDESC SELECTANom, Fonction, Salaire FROMAgent ORDER BYSalaire DESC; Expressions Arithmétiques Y. Ouzrout
permet de faire des comparaisons chaîne de caractères SELECTANom, Fonction, Salaire FROMAgent WHERE ANom = 'Dupont' AND APrenom LIKE'_ea%'; Opérateurs de comparaison logiques . = > >= < <= != <> Opérateurs de comparaison . BETWEEN, AND, IN, LIKE, IS NULL Opérateurs logiques . AND, OR, NOT Sélection des Lignes • Il est possible de limiter le nombre de lignes rapportées en utilisant la clause WHERE : • permet d'exprimer une condition. SELECTANom, Fonction, Salaire FROMAgent WHEREService_Id = 10; Y. Ouzrout
On utilise l'opérateur IN pour tester l'appartenance à une liste de valeurs. SELECTIdService, SNom, Collect_Id FROMService WHERECollect_Id IN (38,42,69,01); Opérateurs de comparaison • On utilise l'opérateur BETWEEN pour tester l'appartenance à un intervalle. SELECTANom, APrenom, Fonction, Salaire FROMAgent WHEREDateE BETWEEN #08-AOU-93# AND #08- AOU-99#; format des dates par défaut Y. Ouzrout
Fonctions Mono-Ligne • LOWER convertit en minuscule • UPPER convertit en majuscule • INITCAP convertit l’initiale en capitale • CONCAT concatène des valeurs • SUBSTR retourne une sous-chaîne • LENGTH retourne un nombre de caractères SELECTUPPER(ANom), CONCAT(ANom, APrenom), Salaire FROMAgent WHERELOWER(Fonction) = ‘directeur ’; • ROUND(col,n) arrondit une valeur à n décimales spécif. • TRUNC (col,n) tronque une valeur à n décimales spécif. • MOD(m,n) retourne le reste de la division de m par n Y. Ouzrout
Les jointures SELECTAg.ANom , Ag.Service_Id , Se.IdService FROMAgent Ag, Service Se WHEREAg.Service_Id = Se.IdService ; • Une jointure est utilisée pour rechercher les données dans plusieurs tables. • Les lignes sont reliées grâce aux valeurs communes contenues dans les clés primaires et étrangères. • La condition de jointure s’exprime dans le WHERE. Y. Ouzrout
Les Sous-Interrogations • Il est possible d'imbriquer une, ou plusieurs, interrogation (SELECT) dans une autre. • On parle alors de sous-interrogation. • Elle est exécutée avant la requête principale ; son résultat est utilisé par la requête • principale. • Elle permet de rechercher des données basées sur un critère inconnu. SELECTANom, Fonction FROMAgent WHERE Service_Id = (SELECTService_Id FROMAgent WHERE ANom = 'Dupont' ) ; Y. Ouzrout
Si une sous-interrogation retourne plus d'une ligne SELECTANom, Salaire, Service_Id FROMAgent WHERESalaire =(SELECTMIN(Salaire) FROMAgent GROUP BY Service_Id ); Il faut remplacer = par IN (opérateur multi-lignes). Réponses Multi-Lignes (1/2) SELECTANom, Salaire, Service_Id FROMAgent WHERESalaire =(SELECTMIN(Salaire) FROMAgent ); Y. Ouzrout
Réponses Multi-Lignes (2/2) • Autre exemple SELECTService_Id, AVG(Salaire) FROMAgent GROUP BY Service_Id HAVINGAVG(Salaire) > ( SELECTAVG(Salaire) FROMAgent WHEREService_Id = 10 ); Salaire moyen par service, dont le salaire moyen est supérieur à celui du service 10. Y. Ouzrout
LE LANGAGE SQL : modification des données 1 – Insertion dans la base : Insert 2 – Suppression dans la base : Delete 3 – Modification dans la base : Update Y. Ouzrout
INSERTINTOAgent (IdAgent, Anom, Aprenom) VALUES(25236, 'Dalton', 'Joe'); • Pour supprimer des données dans une table on utilise la commande SQL DELETE DELETEFROMAgentWHEREIdAgent = 25236; • Pour modifier des données dans une table on utilise la commande SQL UPDATE UPDATEAgent SET ANom = ‘DURANT’ WHERE Salaire = 2500 ; Le Langage SQL : Mise-à-jour des données • Pour insérer une ligne dans une table on utilise la commande SQL INSERT Y. Ouzrout