1 Bases de Donn©es Avanc©es: Bases de Donn©es Relationnelles 12 novembre 2013 Dr. Rim Samia Kaabi

  • View
    110

  • Download
    1

Embed Size (px)

Text of 1 Bases de Donn©es Avanc©es: Bases de Donn©es Relationnelles 12 novembre 2013 Dr. Rim...

  • Page 1
  • 1 Bases de Donnes Avances: Bases de Donnes Relationnelles 12 novembre 2013 Dr. Rim Samia Kaabi
  • Page 2
  • 2 SQL
  • Page 3
  • Un SGBD relationnel fournit un ensemble de services pour : dfinir et maintenir les schmas (LDD : langage de dfinition de donnes), crer, rechercher, mettre jour les informations (LMD : langage de manipulation de donnes). INTRODUCTION SQL fournit aussi bien le LDD que le LMD
  • Page 4
  • Cration d'une relation (CREATE TABLE) Description des relations avec: SQL : langage de dfinition de donnes domaine de chaque attribut, dfinition de certaines contraintes d'intgrit sur les attributs. Format gnral : CREATE TABLE ( [ ],... [,... ] )
  • Page 5
  • Domaines : caractre(s) :CHARACTER[(n)], ou CHAR[(n)] numrique exact :INTEGER ou INT, SMALLINT, NUMERIC(l,d), DECIMAL(l,d) numrique non exact : FLOAT (p), REAL, DOUBLE PRECISION temporels : DATE, TIME, TIMESTAMP (= date-heure) SQL : langage de dfinition de donnes Cration d'une relation (CREATE TABLE)
  • Page 6
  • Contraintes d'attribut (pour spcifier des contraintes sur un seul attribut) : valeur obligatoire :NOT NULL unicit de l'attribut :UNIQUE, PRIMARY KEY contrainte rfrentielle : REFERENCES [( )] contrainte gnrale :CHECK ( ) SQL : langage de dfinition de donnes Cration d'une relation (CREATE TABLE)
  • Page 7
  • Contrainte de relation (pour spcifier des contraintes sur plusieurs attributs): contrainte d'unicit : UNIQUE, PRIMARY KEY (,...) contrainte rfrentielle : FOREIGN KEY (,...) REFERENCES [(cl rfrence)] contrainte gnrale : CHECK ( ) SQL : langage de dfinition de donnes Cration d'une relation (CREATE TABLE)
  • Page 8
  • Exemples : cration des relations suivantes : SQL : langage de dfinition de donnes Cration d'une relation (CREATE TABLE) EMPLOYE(NoEmp, Nom, Anne, NoDep) DEPART(NoDep, Intitul, Taille, NoResp) PROJET(NoProj, NoChef) TRAVAILLE(NoEmp, NoProj, Temps) CREATE TABLE EMPLOYE ( NoEmp INT NOT NULL, Nom CHAR(20), Anne NUMERIC(4), NoDep INT NOT NULL, PRIMARY KEY (NoEmp), FOREIGN KEY (NoDep) REFERENCES DEPART);
  • Page 9
  • CREATE TABLE DEPART ( NoDep INT NOT NULL, Intitul CHAR(15), Taille INT, NoResp INT, PRIMARY KEY (NoDep), FOREIGN KEY (NoResp) REFERENCES EMPLOYE(NoEmp)); CREATE TABLE PROJET ( NoProj INT NOT NULL, NoChef INT, PRIMARY KEY (NoProj), FOREIGN KEY (NoChef) REFERENCES EMPLOYE(NoEmp)); SQL : langage de dfinition de donnes Cration d'une relation (CREATE TABLE) (Exemples)
  • Page 10
  • CREATE TABLE TRAVAILLE ( NoEmp INT NOT NULL, NoProj INT NOT NULL, Temps INT CHECK (Temps BETWEEN 1 AND 100), PRIMARY KEY (NoEmp, NoProj) ); Remarques : La clause NOT NULL impose qu'une valeur soit donne lors de la cration de chaque tuple. La clause CHECK indique que le temps doit tre compris entre 1 et 100 (c'est un pourcentage). SQL : langage de dfinition de donnes Cration d'une relation (CREATE TABLE)
  • Page 11
  • Modification d'une relation (ALTER TABLE) Ajout, modification ou suppression dattributs d'une table existante. SQL : langage de dfinition de donnes ALTER TABLE ADD [ ] >,... MODIFY [ ] [ ] >,... DROP,... Format gnral :
  • Page 12
  • Modification d'une relation (ALTER TABLE) Exemple : modification de la longueur de l'attribut Nom de la relation EMPLOYE. ALTER TABLE EMPLOYE MODIFY Nom CHAR(30); Remarque: Selon le type de modification, les valeurs existantes peuvent tre conserves, modifies (tronques par exemple) ou perdues. Deux SGBD diffrents peuvent d'ailleurs avoir des actions diffrentes. SQL : langage de dfinition de donnes
  • Page 13
  • suppression dune table: Destruction d'une relation (DROP TABLE) SQL : langage de dfinition de donnes + des donnes quelle contient, + de sa dfinition dans le dictionnaire, + des index associs. Format gnral : DROP TABLE Exemple : destruction de la table TRAVAILLE DROP TABLE TRAVAILLE
  • Page 14
  • Avantages d'un index : acclre certaines oprations : slections ou tris (clauses WHERE et ORDER BY en SQL), ou jointure. Inconvnients dun index : traitements alourdis pour une table trs petite, ou sur un attribut dont les mmes valeurs se rptent beaucoup. Cration d'un index (CREATE INDEX) SQL : langage de dfinition de donnes Format gnral : CREATE INDEX ON ( [, ); Exemple : insertion de l'employ Dupont, en 1978, dans le dpartement 03, avec le n 1045. INSERT INTO EMPLOYE VALUES (1045,'Dupont',1978,03); Insertion de donnes (INSERT) SQL : langage de manipulation de donnes">
  • Format simplifi : INSERT INTO [ (,... ) ] VALUES (,...> ); Exemple : insertion de l'employ Dupont, en 1978, dans le dpartement 03, avec le n 1045. INSERT INTO EMPLOYE VALUES (1045,'Dupont',1978,03); Insertion de donnes (INSERT) SQL : langage de manipulation de donnes
  • Page 17
  • Interrogation synthse de la base de donne : Interrogation des donnes (SELECT) SQL : langage de manipulation de donnes sur 1 table, sur n tables, possibilit de raliser la plupart des oprations de l'algbre relationnelle : slection, projection, jointure (et produit cartsien), union, intersection, diffrence. rsultat = un ensemble de tuples, ventuellement: ordonns selon une cl (prcise dans le SELECT), regroups selon certains critres ( " " ), etc.
  • Page 18
  • Format gnral : SELECT [ALL | DISTINCT],... FROM [ ] >,... [ WHERE ] [ GROUP BY,...] [ HAVING ] [ ORDER BY [ ASC | DESC] >,... ] Interrogation des donnes (SELECT) SQL : langage de manipulation de donnes
  • Page 19
  • : expression o interviennent les attributs des tables utilises. L'expression la plus simple, et la plus usuelle est la rfrence un attribut. Problme de la qualification: Si deux attributs de deux tables rfrences ont le mme nom, il est ncessaire de les prfixer avec les alias-select s'il en est dfini, sinon avec les noms des tables : EMPLOYE.NoDep et DEPART.NoDep par exemple, dsignent respectivement l'attribut NoDep des tables EMPLOYE et DEPART. Interrogation des donnes (SELECT) SQL : langage de manipulation de donnes DISTINCT :limination des tuples en double dans le rsultat. ALL : valeur par dfaut.
  • Page 20
  • oprateurs courants dans les expressions de rsultat : Interrogation des donnes (SELECT) SQL : langage de manipulation de donnes +, -, *, /Oprateurs arithmtiques, =, , IS NULLOprateurs relationnels AND, OR, NOTOprateurs logiques ||Oprateur de concatnation (=mise bout bout de deux chanes)
  • Page 21
  • fonctions utilisables dans les expressions de rsultats. Seules les fonctions d'agrgat seront vues, avec l'option GROUP BY. nom des colonnes du rsultat : nom de l'attribut ou nom gnr par le SGBD, par exemple SOMME DE... si on a utilis la fonction SUM(...). On peut aussi dfinir le titre de colonne avec une sous- option AS. Interrogation des donnes (SELECT) SQL : langage de manipulation de donnes
  • Page 22
  • Exemple : SELECT Nom, NoEmp AS 'N Employ', NoDep AS 'N de son dpartement' FROM EMPLOYE ORDER BY Nom; Remarque : Le caractre * reprsente l'ensemble des attributs intervenant dans le SELECT, par exemple SELECT * FROM EMPLOYE, donnera les valeurs de tous les attributs de tous les tuples de la table EMPLOYE. Interrogation des donnes (SELECT) SQL : langage de manipulation de donnes
  • Page 23
  • FROM : introduit la liste des tables impliques dans la commande SELECT. Chaque nom de table peut tre suivi d'un alias-select qui n'est dfini que le temps de l'excution du SELECT. Lorsque FROM introduit plusieurs tables, la commande SELECT porte sur le produit cartsien de ces tables. C'est la condition introduite par la clause WHERE qui, ventuellement, transformera le SELECT en une jointure. Interrogation des donnes (SELECT) SQL : langage de manipulation de donnes
  • Page 24
  • Exemple : SELECT NoEmp, Nom FROM EMPLOYE; SELECT EM.NoEmp, EM.Nom FROM EMPLOYE EM; Exemple ou l'alias est plus utile (jointure) : liste des noms des employs, avec l'intitul de leur dpartement : SELECT EM.Nom, DE.Intitule FROM EMPLOYE EM, DEPART DE WHERE EM.NoDep = DE.NoDep; Interrogation des donnes (SELECT) SQL : langage de manipulation de donnes
  • Page 25
  • WHERE : introduit une condition de slection, et/ou une condition de jointure selon les cas. Exemple : liste des noms des employs engags avant 1990, avec leur n de dpartement : SELECT Nom, NoDep FROM EMPLOYE WHERE Anne < 1990; Exemple : mme question avec l'intitul du dpartement au lieu du n : SELECT EM.Nom, DE.Intitul FROM EMPLOYE EM, DEPART DE WHERE EM.NoDep = DE.NoDep and Anne < 1990; Interrogation des donnes (SELECT) SQL : langage de manipulation de donnes
  • Page 26
  • Oprateurs utilisables dans les expressions suivant WHERE : Interrogation des donnes (SELECT) SQL : langage de manipulation de donnes - oprateurs relationnels habituels :, =, , - oprateur relationnel compos : BETWEEN, - oprateurs logiques : AND, OR, NOT, - oprateurs ensemblistes : IN, NOT IN, ANY ou SOME, ALL, EXISTS, - oprateur de recherche de chane de caractres: LIKE, Oprateur BETWEEN: exemple : Temps BETWEEN 1 and 100
  • Page 27
  • Oprateur LIKE : permet de tester la prsence de chane de caractres prcise dans un attribut de type chane de caractres. Interrogation des donnes (SELECT) SQL : langage de manipulation de donnes _ (caractre "soulign") reprsente un seul caractre quelconque % reprsente n'importe quelle chane de caractres, le caractre. tout autre caractre se reprsente lui-mme... Exemples : -Nom LIKE 'DU%' : tous les noms commenant par DU (DUPONT, DURAND