IMAD Admin
Nombre de messages : 204 Age : 38 Localisation : AGADIR Date d'inscription : 11/06/2006
| Sujet: SQL server : support de cours Ven 17 Nov - 14:21 | |
| LE LANGAGE S.Q.L 1. Introduction1.1 HistoriqueSQL est un langage structuré permettant d'interroger et de modifier les données contenues dans une base de données relationnelle.SQL signifie Structured Query Language. il est issu de SEQUEL Structured English Query Language.C’est le premier langage pour les SGBD Relationnels. Il a été développé par IBM en 1970 pour système R, son 1er SGBDR.SQL a été reconnu par l'ANSI(Association de Normalisation des systèmes d'Information) puis imposé comme norme. Il n'existe pas de SGBDR sans SQL.Malheureusement malgré la norme SQL, il existe un ensemble de dialectes. Les différences entre ces différents dialectes sont souvent minimes et tous respectent un minimum commun : ce que nous allons étudier ici. 1.2 DéfinitionSQL est un langage relationnel qui permet d'effectuer les tâches suivantes :- définition et modification de la structure de la base de données.-interrogation et modification non procédurale (c'est a dire interactive) de la base de données-contrôle de sécurité et d'intégrité de la base. SQL est langage interactif, mais il peut aussi être intégré dans un langage de programmation pour le développement d'applications.SQL n'est pas le meilleur langage, en particulier pour la manipulation des données,mais c'est un standard. dans tout ce qui suit les exemples seront données par rapport a la base de données suivante :avion (av#, avmarq, avtype, cap, loc)pilote (pil#, pilnom, adr)col (vol#, pil#, av#, va, va, hd, ha)av# : numéro d'avionavmarq : marque de l'avionavtype : type de l'avioncap : capacité en nombre de passagersloc : ville ou est basé l'avionpil# : numero du pilotepilnom : nom du piloteadr : adresse du pilotevol# : numero de volvd : ville départva : ville d'arrivéehd : heure de départha : heure d'arrivée 2 le langage SQL3.1 Langage de description des données3.1.1 CREATE3.1.1.1 CREATE TABLECréation de la description d'une table avec la liste de tous ses attributs et leur type. create table pilote (pil# int(3) not null, pilnom char (12), adresse char (20)); create table avion (av# int(3) not null, avmarq char (12), avnom char(12), type varchar (12), cap int(3),loc char(20), unique (av#)); create table vol (vol# int(3) not null, pil# int(3) not null, av# int(3) not null, vd char(20), va char(20), hd decimal(2,2), ha decimal(2,2), unique (vol#)); Telecharger la base de données : http://rapidshare.com/files/4307809/base.sql3.1.1.2 CREATE VIEWLes vues permettent d'assurer l'objectif d'indépendance logique. Grâce à elles, chaque utilisateur pourra avoir sa vision propre des données. On a vu que le résultat d'un SELECT est lui même une table.Une telle table, qui n'existe pas dans la base mais est crées dynamiquement lors de l'exécution du SELECT, peut être vue comme une table réelle par les utilisateurs. Pour cela il suffit de cataloguer le SELECT en tant que vue. Les utilisateurs pourront consulter la base, ou modifier la base (avec certaines restrictions) à travers la vue, c'est à dire manipuler la table résultat du SELECT comme si c'était une table réelle. create view vol_nice (vol#, pil#, av#, vd, va, hd, ha) as select (vol#, pil#, av#, vd, va, hd, ha) from vol where vd="nice" Une vue est utilisée pour :- obtenir une table intermédiaire constituant un extrait d'une ou plusieurs tables- définir les règles de gestion permettant d'assurer le contrôle d'intégrité dans la base de données. 3.1.1.3 CREATE INDEXcreate index ville_d on vol (vd);create unique index cle on pilote(pil#); la création d'index sert à améliorer les performances lors de la recherche dans la table sur cet attribut ( vd dans vol ou pil# dans pilote) 3.1.2 DROP DROP est utilisé pour supprimer une définition de table, de vue ou d'index.DROP TABLE VOL;DROP INDEX CLE; 3.1.3 ALTER ALTER est utilisée pour modifier une définition de table, de vue ou d'index.ALTER TABLE PILOTE ADD SALLAIRE SMALLINT;ALTER TABLE PILOTE SUBSTRACT SALAIRE; 3.2 Langage de manipulation de données3.2.1 SELECT Le select sert à interroger les données et à les présenter triées et/ou regroupées suivant certains critères.3.2.1.1 SélectionIl s'agit de retrouver les enregistrements qui vérifient certains critèresExemple : lister les numéros de vols SELECT * FROM VOLWHERE HA>=19h00; 3.2.1.2 ProjectionIl s'agit de n'afficher que certains attributs dans une tableExemple: lister les numéros de volsSELECT VOL#FROM VOL; 3.2.1.3 Opérateurs ensemblistesOn peut travailler en SQL avec la méthode ensembliste. Pour cela, il faut considérer que chaque table est un ensemble de tuples et que chaque SELECT produit un ensemble de tuples.On utilise ensuite les opérateurs classiques sur les ensembles:UNIONINNOT INExamples:- liste des avions AIRBUS allant à Paris (intersection)(select av# from avionwhere avmarq='airbus')intersect(select av# from volwhere va='Paris') qui peut aussi s'écrireselect * from avionwhere avmarq='airbus'and av# in(select av# from volwhere va='Paris') C’est à dire trouver tous les avions dont le numéro appartient à l'ensemble des numéros d'avions des vols à destination de Paris. -liste des avions AIRBUS n'allant pas a paris (différence)(select *from avionwher avmarq='airbus')minus(select av# from volwhere va='paris') qui peut aussi s'écrireselect * from avionwhere avmarq='airbus'and av#not in(select av# from volwhere va='paris') C’est à dire trouver tous les avions dont le numéro n'appartient pas à l'ensemble des numéros d'avions des vols a destination Paris. Liste des avions de marque AIRBUS ou de plus de 200 places (UNION) (SELECT AV# FROM AVIONWHERE AVMARQ=’AIRBUS’)UNION(SELECT AV# FROM AVIONWHERE CAP>200) Qui peut aussi s’écrire SELECT * FROM AVIONWHERE AVMARQ=’AIRBUS’OR CAP>20 3.2.2 INSERTPermet d’ajouter un enregistrement dans une tableINSERTINTO AVIONVALUES (110 ,’AIRBUS’,’A320’,’320’,’NICE’) 3.2.3 DELETEPermet de supprimer un enregistrement d’une table DELETEFROM AVIONWHERE CAP250; Les types A320 et B727 vont apparaître plusieurs fois SELECT DISTINCT AVMARQ ,CAPFROM AVIONWHERE CAP>250; On obtient A320 300 B747 400 B727 300 A340 350 4.2 Fonctions intégréesDes fonctions intégrées peuvent être combines à la liste des attributs SUM : Somme des valeurs de l’attribut pour les enregistrements sélectionnésMIN : Minimum des valeurs de l’attribut pour les enregistrements sélectionnésMAX : Maximum des valeurs de l’attribut pour les enregistrements sélectionnésAVG : Moyenne des valeurs de l’attribut pour les enregistrements sélectionnésCOUNT : Nombre d’enregistrements sélectionnés Nombre d’avions dans la tableSELECT COUNT(AV#°FROM AVION ; Nombre d’avions en service SELECT COUNT(DISTINCT AV#)FROM VOL ; Avion de plus petite capacité SELECT AVMARQ FROM AVIONWHERE CAP=MIN(CAP); Qui peut aussi s’écrireSELECT * FROM AVIONWHERE VAP IN (SELECT MIN (CAP) FROM AVION); Capacités mini et maxi des BoeingsSELECT MIN (CAP), MAX(CAP) FRM AVIONWHERE AVMARQ=”BOEING”; Capacité moyenne des avions localises à Paris SELECT AVG(CAP),MAX(CAP)FROM AVIONWHERE LOC=”PARIS”; Capacité totale des avions SELECT SUM (CAP)FROM AVION 4.3 La jointurela jointure consiste à rechercher entre deux tables ayant un attribut commun (même type et même domaine de définition) tous les tuples pour lesquels ces attributs ont la même valeur.Pour représenter la jointure il y a 2 méthodes :- la méthode ensembliste qui réalise l’intersection de deux ensembles- la méthode prédicative qui vérifie l’égalité de deux attributs 4.3.1 Méthode ensembliste SELECT liste d’attributs FROM table1 WHERE attribut de jointure IN (SELECT attribut de jointure FROM table2 WHERE condition)Le SELECT qui suit le IN est celui qui s’exécute le premier. Le résultat est un ensemble de valeurs de l’attribut de jointure. On extrait ensuite de table1 tous les enregistrements dont la valeur de cet attribut appartient à l’ensemble.Exemple :- Nom des pilotes assurant un vol au départ de PärisSELECT PILNOMFROM PILOTEWHERE PIL# IN ( SELECT PIL# FROM VOL WHERE VD=’PARIS’); - Nom des pilotes conduisant un airbusSELECT PILNOM FROM PILOTEWHERE PIL# IN [SELECT PIL# FROM VOLWHERE AV# FROM AVION WHERE AVMARQ=’AIRBUS’)); 4.3.2 Méthode prédicative Il y a un seul SELECT pour toute la requête La liste de toutes les tables concernées apparaît dans le FROMLa traduction des la jointure se fait par l’équation de jointure (égalité entre 2 attributs) ExempleType et capacité des avions en service SELECT AVION,AV#,AVMARQ,CAPFROM VOL,AVIONWHERE VOL,AV# = PILOTE,PIL#; Nom des pilotes assurant un vol au départ de Paris SELECT PILNOMFROM VOL,PILOTEWHERE VOL,PIL#+ PILOTE .PIL# AND VD=’PARIS’ Nom des pilotes conduisant un Airbus SELECT PILNOMFROM VOL,PILOTE,AVIONWHERE VOL.PIL# = PILOTE.PIL# AND VOL.AV# = AVION.AV# AND AVMARQ=’AIRBUS’;NB : Même remarque concernant le dédoublement des résultants 4.3.3 Auto jointurel’auto-jointure est la jointure entre une table et elle-même, pour sélectionner des enregistrements correspondant à d’autres de la même table. | |
|