La présentation est en train de télécharger. S'il vous plaît, attendez

La présentation est en train de télécharger. S'il vous plaît, attendez

IFT2821 Base de données Chapitre 6 SQL. Introduction Architecture Modèles de données Modèle relationnel Algèbre relationnelle SQL Conception Fonctions.

Présentations similaires


Présentation au sujet: "IFT2821 Base de données Chapitre 6 SQL. Introduction Architecture Modèles de données Modèle relationnel Algèbre relationnelle SQL Conception Fonctions."— Transcription de la présentation:

1 IFT2821 Base de données Chapitre 6 SQL

2 Introduction Architecture Modèles de données Modèle relationnel Algèbre relationnelle SQL Conception Fonctions avancées Concepts avancées Modèle des objets BD à objets 2 Plan du cours n Introduction n Architecture n Modèles de données n Modèle relationnel n Algèbre relationnelle n SQL n Conception n Fonctions avancées n Concepts avancées n PL/SQL

3 Introduction Architecture Modèles de données Modèle relationnel Algèbre relationnelle SQL Conception Fonctions avancées Concepts avancées Modèle des objets BD à objets 3 Introduction n Permet de retrouver et de manipuler les données n Dérivé de SEQUEL 2 (76) lui-même dérivé de SQUARE (75) n Proposé par IBM (82 puis 87) n Première version normalisée SQL1 (ISO89) n Deuxième version normalisée SQL2 (ISO92) n SQL3 en cours de normalisation n Sert de couche basse aux L4G (par exemple Access)

4 Introduction Architecture Modèles de données Modèle relationnel Algèbre relationnelle SQL Conception Fonctions avancées Concepts avancées Modèle des objets BD à objets 4 Langage SQL n Partie LDD –Conceptuel : CREATE SCHEMA, TABLE,… –Externe : CREATE VIEW, GRANT,… –Interne : CREATE INDEX, CLUSTER,… n Partie LMD –SELECT, INSERT, DELETE, UPDATE

5 Introduction Architecture Modèles de données Modèle relationnel Algèbre relationnelle SQL Conception Fonctions avancées Concepts avancées Modèle des objets BD à objets 5 Environnement SQL Catalogue Ventes SchémaVentes.Exportation Table Ventes.Exportation.Article View Schémac2.s1 Cataloguec2 SchémaVentes.s2 Table c1.s2.t1 Ventes.Exportation.ArticleSport

6 Introduction Architecture Modèles de données Modèle relationnel Algèbre relationnelle SQL Conception Fonctions avancées Concepts avancées Modèle des objets BD à objets 6 Environnement SQL (utilisateur) n Identificateur d utilisateur –authorizationID n Mécanisme dauthentification –e.g. mot de passe n Utilisateur possède privilèges n Exemple –CREATE user joe IDENTIFIED BY jpw –CONNECT joe/jpw

7 Introduction Architecture Modèles de données Modèle relationnel Algèbre relationnelle SQL Conception Fonctions avancées Concepts avancées Modèle des objets BD à objets 7 Environnement SQL (Schéma) n DATABASE ~ catalogue –une instance Oracle monte une DATABASE à la fois n Nom du SCHEMA – = authorizationID du propriétaire (Oracle) –CREATE SCHEMA AUTHORIZATION blair –CONNECT [AS sysDBA]

8 Introduction Architecture Modèles de données Modèle relationnel Algèbre relationnelle SQL Conception Fonctions avancées Concepts avancées Modèle des objets BD à objets 8 Environnement SQL (interprétation de requêtes) n Création d une table ou schéma n Transmise à l interprète du LDD –vérification –création de la table schéma stocké dans dictionnaire de données allocation des structures physiques

9 Introduction Architecture Modèles de données Modèle relationnel Algèbre relationnelle SQL Conception Fonctions avancées Concepts avancées Modèle des objets BD à objets 9 Environnement SQL (Dictionnaire) n BD relationnelle : contient les méta-données d un CATALOG n DEFINITION_SCHEMA –tables n INFORMATION_SCHEMA –VIEWS sur les tables du DEFINITION_SCHEMA

10 Introduction Architecture Modèles de données Modèle relationnel Algèbre relationnelle SQL Conception Fonctions avancées Concepts avancées Modèle des objets BD à objets 10 Environnement SQL (Dictionnaire) n SCHEMATA –les SCHEMA créés par CURRENT_USER n DOMAINS –les DOMAIN accessibles par CURRENT_USER ou PUBLIC n TABLES –les noms des tables accessibles par CURRENT_USER ou PUBLIC n VIEWS –les vues accessibles par CURRENT_USER ou PUBLIC n COLUMNS –les colonnes des TABLE accessibles par CURRENT_USER ou PUBLIC n TABLE_CONSTRAINTS –contraintes des TABLE créées par CURRENT_USER n CHECK_CONSTRAINTS –contraintes CHECK des TABLE créées par CURRENT_USER n TABLE_PRIVILEGES –privilèges accordés par CURRENT_USER, à CURRENT_USER, ou à PUBLIC

11 Introduction Architecture Modèles de données Modèle relationnel Algèbre relationnelle SQL Conception Fonctions avancées Concepts avancées Modèle des objets BD à objets 11 Environnement SQL (Dictionnaire)

12 Introduction Architecture Modèles de données Modèle relationnel Algèbre relationnelle SQL Conception Fonctions avancées Concepts avancées Modèle des objets BD à objets 12 Type SQL n Numérique exact –INTEGER (ou INT) :2,3,5,..,299,.. –SMALLINT 2, 3, 459,… –NUMERIC(p, c) (ou DECIMAL(p, c) ou DEC(p, c)) Nombre décimal avec p chiffres significatifs et c chiffres après le point Exemples : 2.5, , 6

13 Introduction Architecture Modèles de données Modèle relationnel Algèbre relationnelle SQL Conception Fonctions avancées Concepts avancées Modèle des objets BD à objets 13 Type SQL n Numérique approximatif –REAL : Point flottant Exemples : 3.27E-4, 24E5 –DOUBLE PRECISION : Point flottant à double précision Exemples : E-4, 24E12 –FLOAT(n) :Point flottant ( précision minimale est de n chiffres pour la mantisse) Exemples : 3.27E-4, 24E5

14 Introduction Architecture Modèles de données Modèle relationnel Algèbre relationnelle SQL Conception Fonctions avancées Concepts avancées Modèle des objets BD à objets 14 Type SQL n Chaîne de caractères –CHARACTER(n) (ou CHAR(n)) :Chaîne de caractère de taille fixe égale à n Exemples : Adresse', 'Paul LeGrand –CHARACTER VARYING (n) (ou VARCHAR(n)) : Taille variable (max de n caractères) –NATIONAL CHARACTER(n) :Ensemble de caractères alternatif spécifique à l'implémentation –NATIONAL CHARACTER VARYING(n) :Taille variable

15 Introduction Architecture Modèles de données Modèle relationnel Algèbre relationnelle SQL Conception Fonctions avancées Concepts avancées Modèle des objets BD à objets 15 Type SQL n Date et temps –DATE : année (quatre chiffres), mois (2 chiffres) et jour (2 chiffres) Exemple : DATE ' ALTER SESSION SET NLS_DATE_FORMAT = DD/MM/YYYY –TIME[(p)] : heure (2 chiffres), minutes (2 chiffres), secondes (2 +p chiffres) Exemple : TIME '14:04:32.25 –TIMESTAMP[(p)] : DATE + TIME Exemple : TIMESTAMP ' :04:32.25 –INTERVAL : Représente un intervalle de temps Exemple : INTERVAL '2' DAY

16 Introduction Architecture Modèles de données Modèle relationnel Algèbre relationnelle SQL Conception Fonctions avancées Concepts avancées Modèle des objets BD à objets 16 Type SQL n Booléen –BIT (n) : Vecteur de n bits. Exemples : B' ', X'9F –BIT VARYING (n) : taille variable (max = n) –Données de grande taille BINARY LARGE OBJECT (n) (BLOB(n)) n : taille en octets (ex: 1024, 5K, 3M, 2G) –Exemple : X 52CF4 (hexadecimal) CHARACTER LARGE OBJECT (n) (CLOB(n))

17 Introduction Architecture Modèles de données Modèle relationnel Algèbre relationnelle SQL Conception Fonctions avancées Concepts avancées Modèle des objets BD à objets 17 Type SQL (Oracle) n NUMBER(p,[c]) –numérique exact; p entre 1 et 38, c doit être entre -84 et +127 (défaut, c =0) VARCHAR2(n) : n 4000 n RAW(n) : –Binaire de taille n octets (n 2000 ) n LONG(n) : –Chaîne de caractères de taille variable (n 2G). Maximum une colonne LONG par table n LONG RAW(n) –Binaire de taille variable (n 2G). Maximum une colonne de type LONG RAW par table

18 Introduction Architecture Modèles de données Modèle relationnel Algèbre relationnelle SQL Conception Fonctions avancées Concepts avancées Modèle des objets BD à objets 18 Type SQL (Oracle) n ROWID : identifiant de ligne composé de –identificateur de fichier –identificateur de bloc relatif au fichier –identificateur de ligne relatif au bloc n Conversions implicites

19 Introduction Architecture Modèles de données Modèle relationnel Algèbre relationnelle SQL Conception Fonctions avancées Concepts avancées Modèle des objets BD à objets 19 Définition des données n Domaine –Exemple CREATE DOMAIN SSS_TYPE AS CHAR(9) (sql2) CREATE TYPE COULEUR AS OBJECT (Oracle) nomCouleur CHAR(6) DEFAULT 'vert' CONSTRAINT COULEUR_VALIDE CHECK (VALUE IN 'rouge', 'blanc', 'vert', 'bleu', 'noir'); –Destruction dun domaine DROP TYPE domaine [RESTRICT | CASCADE]

20 Introduction Architecture Modèles de données Modèle relationnel Algèbre relationnelle SQL Conception Fonctions avancées Concepts avancées Modèle des objets BD à objets 20 Définition des données n Définition dune table (1) CREATE TABLE ( [ ] {, [ ] } [ {, }]) n Contraintes dintégrité sur une table –NOT NULL –UNIQUE ou PRIMARY KEY –FOREIGN KEY –REFERENCES –CHECK

21 Introduction Architecture Modèles de données Modèle relationnel Algèbre relationnelle SQL Conception Fonctions avancées Concepts avancées Modèle des objets BD à objets 21 Définition des données n Définition dune table (2) CREATE TABLEnomDeLaTable (spécificationDeColonne [,spécificationDeColonne]... [,spécificationDeContrainte]...) nomColonne [type|domaine] [DEFAULT valeurDeDéfaut] [NULL | NOT NULL] [UNIQUE | PRIMARY KEY] [REFERENCESnomTable[listeColonnes]] [[CONSTRAINTnomContrainte] CHECK (conditionSQL)] [CONSTRAINTnomContrainte] {PRIMARY KEYlisteColonnes| [ON DELETE {NO ACTION|CASCADE|SET NULL|SET DEFAULT}] [ON UPDATE {NO ACTION|CASCADE|SET NULL|SET DEFAULT}]| CHECK (conditionSQL) } [[NOT] DEFERRABLE INITIALLY {DEFERRED|IMMEDIATE}]

22 Introduction Architecture Modèles de données Modèle relationnel Algèbre relationnelle SQL Conception Fonctions avancées Concepts avancées Modèle des objets BD à objets 22 Définition des données n Exemple CREATE TABLE DEPARTMENT (DNAMEVARCHAR(15)NOT NULL, DNUMBERINT, MGRSSNCHAR(9)DEFAULT ' ', MGRSTARTDATEDATE, CONSTRAINT DEPTPK PRIMARY KEY(DNUMBER), CONSTRAINT DEPTSK UNIQUE (DNAME) CONSTRAINT DEPTMGRFK FOREIGN KEY(MGRSSN) REFERENCES EMPLOYE(SSN) ON DELETE CASCADE);

23 Introduction Architecture Modèles de données Modèle relationnel Algèbre relationnelle SQL Conception Fonctions avancées Concepts avancées Modèle des objets BD à objets 23 Définition des données n Table –Avec contraintes d intégrité Exemple (SQL 86) CREATE TABLE COMMANDE ( NC NUMBER UNIQUE NOT NULL, NV NUMBER NOT NULL QUANTITE NUMBER(6)) Exemple (SQL 89) CREATE TABLE COMMANDE ( NC NUMBER PRIMARY KEY, NV NUMBER NOT NULL REFERENCES VIN, QUANTITE NUMBER(6) CHECK(QUANTITE > 0)) NC NUMBER, PRIMARY KEY (NC), NV NUMBER NOT NULL, FOREIGN KEY (NV) REFERENCES VIN, SQL 92

24 Introduction Architecture Modèles de données Modèle relationnel Algèbre relationnelle SQL Conception Fonctions avancées Concepts avancées Modèle des objets BD à objets 24 Définition des données n Modification du schéma dune table (1) ALTER TABLE ADD,,... –Exemple : ALTER TABLE DEPARTEMENT ADD DATE_CREATION DATE ; ALTER TABLE EMPLOYE DROP ADDRESS CASCADE ; ALTER TABLE EMPLOYE DROP CONSTRAINT EMPSUPERFK CASCADE; n Suppression dune table DROP TABLE –Exemple : DROP TABLE EMPLOYE ; DROP TABLE DEPENDENT CASCADE;

25 Introduction Architecture Modèles de données Modèle relationnel Algèbre relationnelle SQL Conception Fonctions avancées Concepts avancées Modèle des objets BD à objets 25 Définition des données n Modification du schéma dune table (2) ALTER TABLE nomTable {ADD COLUMN spécificationColonne DROP COLUMN nomColonne [RESTRICT|CASCADE]| ADD spécificationContrainte| DROP nomContrainte [RESTRICT|CASCADE]| ALTER nomColonne SET DEFAULT valeurDéfaut| ALTER nomColonne DROP DEFAULT}

26 Introduction Architecture Modèles de données Modèle relationnel Algèbre relationnelle SQL Conception Fonctions avancées Concepts avancées Modèle des objets BD à objets 26 Accès aux données n Clause SELECT SELECT FROM [WHERE ] [GROUP BY ] [HAVING ] [ORDER BY ]; Exemple : SELECT BDATE, ADRESS FROM EMPLOYE WHERE FNAME='Jhon' AND LNAME='Smith'; BDATE ADRESS SEP-65731Fondren Huston, TX

27 Introduction Architecture Modèles de données Modèle relationnel Algèbre relationnelle SQL Conception Fonctions avancées Concepts avancées Modèle des objets BD à objets 27 Accès aux données n Exemple –Donner les noms et adresses des employés? SELECT BDATE, ADRESS FROM EMPLOYE BDATE ADRESS OCT Stone, Huston, TX 08-DEC Voss, Huston, TX 20-JUN Berry, Bellaire, TX 15-SEP FireOak, Humble,TX 31-JUL Rice, Humble, TX 19-JUL Castle,Spring, TX 29-MAR , Dallas, Huston, TX 01-SEP Fondren Huston, TX

28 Introduction Architecture Modèles de données Modèle relationnel Algèbre relationnelle SQL Conception Fonctions avancées Concepts avancées Modèle des objets BD à objets 28 Accès aux données n Clause Where non spécifiée –Que fait la requête suivante ? SELECT * FROM EMPLOYE, DEPARTMENT ; n Clause Where mal spécifiée !!! –Que fait la requête suivante ? SELECT LNAME, FNAME, DNUMDER FROM EMPLOYE, DEPARTMENT WHERE DNUMBER = 5; Produit cartésien des tables EMPLOYE et DEPARTMENT ? ? ? ?

29 Introduction Architecture Modèles de données Modèle relationnel Algèbre relationnelle SQL Conception Fonctions avancées Concepts avancées Modèle des objets BD à objets 29 Accès aux données n Exemple –Donner les noms et adresses des employés du département de recherche ? SELECT FNAME, LNAME, ADRESS FROM EMPLOYE, DEPARTMENT WHERE DNAME='Research' AND DNUMBER=DNO; FNAME LNAME ADRESS Franklin Wong 638 Voss, Huston, TX Ramesh Narayan 975FireOak, Humble,TX Joyce English 5631Rice, Humble, TX Jhon Smith 731Fondren Huston, TX

30 Introduction Architecture Modèles de données Modèle relationnel Algèbre relationnelle SQL Conception Fonctions avancées Concepts avancées Modèle des objets BD à objets 30 Accès aux données n Attributs ambiguës Exemple : –Donner les noms et adresses des employés qui travaillent au département de recherche ? (Supposons que lattribut DNO de la table EMPLOYE sappelle DNUMBER) SELECT FNAME, EMPLOYE.LNAME, ADRESS FROM EMPLOYE, DEPARTMENT WHERE DEPARTMENT.DNAME = 'Research' AND DEPARTMENT.DNUMBER=EMPLOYE.DNUMBER;

31 Introduction Architecture Modèles de données Modèle relationnel Algèbre relationnelle SQL Conception Fonctions avancées Concepts avancées Modèle des objets BD à objets 31 Accès aux données n Attributs ambiguës Exemple : –Donner le nom et prénom de chaque employé ainsi que le nom et le prénom de son superviseur immédiat ? SELECT E.FNAME, E.LNAME, S.FNAME, S.LNAME FROM EMPLOYE E, EMPLOYE S WHERE E.SUPERSSN=S.SSN; FNAME LNAME Franklin Wong James Borg Jennifer Wallace James Borg Ramesh Narayan Franklin Wong Joyce English Franklin Wong Alicia Zelaya Jennifer Wallace Ahmad Jabbar Jennifer Wallace Jhon Smith Franklin Wong

32 Introduction Architecture Modèles de données Modèle relationnel Algèbre relationnelle SQL Conception Fonctions avancées Concepts avancées Modèle des objets BD à objets 32 Accès aux données n Tables & Ensembles Duplication des uplets : –Duplication permise des uplets SELECT ALL SALARY FROM EMPLOYE ; –Duplication non permise des uplets SELECT DISTINCT SALARY FROM EMPLOYE ; SALARY SALARY

33 Introduction Architecture Modèles de données Modèle relationnel Algèbre relationnelle SQL Conception Fonctions avancées Concepts avancées Modèle des objets BD à objets 33 Accès aux données n Tables & Ensembles Union: Donner la liste des projets dont Smith est implique comme employé ou comme directeur du département qui contrôle ces projets ? (SELECT DISTINCT PNUMBER FROM PROJECT, DEPARTMENT, EMPLOYE WHERE DNUM = DNUMBER AND MGRSSN = SSN AND LNAME= 'Smith') UNION (SELECT DISTINCT PNUMBER FROM PROJECT, WORKS_ON, EMPLOYE WHERE PNUMBER = PNO AND ESSN = SSN AND LNAME = 'Smith'); PNUMBER

34 Introduction Architecture Modèles de données Modèle relationnel Algèbre relationnelle SQL Conception Fonctions avancées Concepts avancées Modèle des objets BD à objets 34 Accès aux données n Fonctions de calcul –SUM, AVG, MAX, MIN SELECT SUM (SALARY), MAX (SALARY), MIN (SALARY), AVG (SALARY) FROM EMPLOYE; SUM(SALARY) MAX(SALARY) MIN(SALARY) AVG(SALARY) –Quel est le nombre des employés ? SELECT COUNT (*) FROM EMPLOYE; COUNT(*)

35 Introduction Architecture Modèles de données Modèle relationnel Algèbre relationnelle SQL Conception Fonctions avancées Concepts avancées Modèle des objets BD à objets 35 Accès aux données n Fonctions de calcul –Que fait la requête suivante ? SELECT LNAME, FNAME FROM EMPLOYE WHERE (SELECT COUNT (*) FROM DEPENDENT WHERE SSN=ESSN) >= 2; Retourne nom et prénom des employés qui ont deux dépendants et plus. LNAME FNAME Smith Jhon

36 Introduction Architecture Modèles de données Modèle relationnel Algèbre relationnelle SQL Conception Fonctions avancées Concepts avancées Modèle des objets BD à objets 36 Accès aux données n Fonctions dagrégation –GROUP BY, HAVING Pour chaque projet retrouver son nom, son numéro et le nombre des employés qui y ont participé ? SELECT PNUMBER, PNAME, COUNT (*) FROM PROJECT, WORKS_ON WHERE PNUMBER=PNO GROUP BY PNUMBER, PNAME; PNUMBER PNAME COUNT(*) ProductX 2 2 ProductY 3 3 ProductZ 2 10 Computerization 3 20 Reorganization 3 30 Newbenefits 3

37 Introduction Architecture Modèles de données Modèle relationnel Algèbre relationnelle SQL Conception Fonctions avancées Concepts avancées Modèle des objets BD à objets 37 Accès aux données n Fonctions dagrégation –GROUP BY, HAVING Pour chaque projet qui implique plus de deux employés retrouver son nom, son numéro et le nombre demployés qui y participent ? SELECT PNUMBER, PNAME, COUNT (*) FROM PROJECT, WORKS_ON WHERE PNUMBER = PNO GROUP BY PNUMBER, PNAME HAVING COUNT (*) > 2; PNUMBER PNAME COUNT(*) ProductY 3 10 Computerization 3 20 Reorganization 3 30 Newbenefits 3

38 Introduction Architecture Modèles de données Modèle relationnel Algèbre relationnelle SQL Conception Fonctions avancées Concepts avancées Modèle des objets BD à objets 38 Accès aux données n Chaînes de caractères, opérateurs arithmétiques et ordonnancement –LIKE, BETWEEN, ORDER BY Retrouver tous les employés qui ont une adresse a Huston, Texas? SELECT FNAME, LNAME FROM EMPLOYE WHERE ADRESS LIKE '%Huston, TX%'; Retrouver tous les employés qui sont nés durant les années 1950 ? SELECT FNAME, LNAME FROM EMPLOYE WHERE BDATE LIKE'________5_';

39 Introduction Architecture Modèles de données Modèle relationnel Algèbre relationnelle SQL Conception Fonctions avancées Concepts avancées Modèle des objets BD à objets 39 Accès aux données n Chaînes de caractères, opérateurs arithmétiques et ordonnancement Retrouver le salaire de chaque employé si on augmente de 10% les employés qui ont participé dans le projet ProjectX? SELECT FNAME, LNAME, 1.1*SALARY FROM EMPLOYE, WORKS_ON, PROJECT WHERE SSN=ESSN AND PNO=PNUMBER AND PNAME='ProjectX'; –Que fait la requête suivante ? SELECT * FROM EMPLOYE WHERE (SALARY BETWEEN AND 40000) AND DNO = 5; FNAME LNAME 1.1*SALARY Jhon Smith Joyce English 27500

40 Introduction Architecture Modèles de données Modèle relationnel Algèbre relationnelle SQL Conception Fonctions avancées Concepts avancées Modèle des objets BD à objets 40 Accès aux données n Chaînes de caractères, opérateurs arithmétiques et ordonnancement Retrouver la liste des employés qui sont impliqués dans des projets ; Cette liste doit triée par département (descendant), nom et prénom(ascendant). SELECT DNAME, LNAME, FNAME, PNAME FROM DEPARTMENT, EMPLOYE, WORKS_ON, PROJECT WHERE DNUMBER=DNO AND SSN=ESSN AND PNO=PNUMBER ORDER BY DNAME DESC, LNAME ASC, FNAME ASC;

41 Introduction Architecture Modèles de données Modèle relationnel Algèbre relationnelle SQL Conception Fonctions avancées Concepts avancées Modèle des objets BD à objets 41 Accès aux données n Chaînes de caractères, opérateurs arithmétiques et ordonnancement DNAME LNAME FNAME PNAME Research English Joyce ProductX Research English Joyce ProductY Research Narayan Ramesh ProductZ Research Smith Jhon ProductX Research Smith Jhon ProductY Research Wong Franklin ProductY Research Wong Franklin ProductZ Research Wong Franklin Computerization Research Wong Franklin Reorganization Headquarters Borg James Reorganization Administration Jabbar Ahmad Computerization Administration Jabbar Ahmad Newbenefits Administration Wallace Jennifer Newbenefits Administration Wallace Jennifer Reorganization Administration Zelaya Alicia Newbenefits Administration Zelaya Alicia Computerization

42 Introduction Architecture Modèles de données Modèle relationnel Algèbre relationnelle SQL Conception Fonctions avancées Concepts avancées Modèle des objets BD à objets 42 Accès aux données n Sous requêtes et comparaison densembles –IN, SOME, ANY, ALL, EXIST, UNIQUE, NOT Retrouver le NAS des employé qui ont travaillé dans les mêmes projets et les mêmes nombres d heures que John Smith (NAS : ) ? SELECT DISTINCT ESSN FROM WORKS_ON WHERE (PNO, HOURS) IN (SELECT PNO, HOURS FROM WORKS_ON WHERE ESSN=' '); Quobtient-on si on remplacer IN par =SOME puis par =ANY ?

43 Introduction Architecture Modèles de données Modèle relationnel Algèbre relationnelle SQL Conception Fonctions avancées Concepts avancées Modèle des objets BD à objets 43 Accès aux données n Sous requêtes et comparaison densembles –(IN, NOT) SOME, ANY, ALL, (EXIST, NOT) Retrouver les noms des employé qui gagnent un salaire supérieur a tous ceux qui travaillent dans le département de recherche? SELECT LNAME, FNAME FROM EMPLOYEE WHERE SALARY > ALL (SELECT SALARY FROM EMPLOYEE WHERE DNO=5); LNAME FNAME Borg James Wallace Jennifer

44 Introduction Architecture Modèles de données Modèle relationnel Algèbre relationnelle SQL Conception Fonctions avancées Concepts avancées Modèle des objets BD à objets 44 Accès aux données n Sous requêtes et comparaison densembles –IN, SOME, ANY, ALL, EXIST, NOT Retrouver les noms des employé qui nont pas de dépendant? SELECT FNAME, LNAME FROM EMPLOYE WHERE NOT EXISTS (SELECT * FROM DEPENDENT, EMPLOYE WHERE SSN=ESSN); Retrouver les noms des managers qui ont plus dun dépendant? FNAME LNAME James Borg Ramesh Narayan Joyce English Alicia Zelaya Ahmad Jabbar

45 Introduction Architecture Modèles de données Modèle relationnel Algèbre relationnelle SQL Conception Fonctions avancées Concepts avancées Modèle des objets BD à objets 45 Accès aux données n Jointure de tables –JOIN, NATURAL JOIN Retrouver les noms et les adresses des employé qui travaillent dans le département de recherche ? SELECT FNAME, LNAME, ADDRESS FROM (EMPLOYE JOIN DEPARTMENT ON DNO=DNUMBER) WHERE NAME=Research; SELECT FNAME, LNAME, ADDRESS FROM (EMPLOYE NATURAL JOIN (DEPARTMENT AS DEPT (DNAME, DNO, MSSN, MSDATE))) WHERE DNAME=Research;

46 Introduction Architecture Modèles de données Modèle relationnel Algèbre relationnelle SQL Conception Fonctions avancées Concepts avancées Modèle des objets BD à objets 46 Manipulation des données n Insertion INSERT INTO [ ( )] {VALUES ( ) | } INSERT INTO EMPLOYEE VALUES ('Richard','Marini', ' ', '30-dec-1962','98 Oak Forest,Katy,TX','M', 37000, ' ', 4); INSERT INTO EMPLOYE (FNAME, LNAME, DNO, SSN) VALUES ('Richard', 'Marini', 4, ' '); INSERT INTO DEPTS_INFO (DEPT_NAME, NO_OF_EMPS, TOTAL_SAL) SELECT DNAME, COUNT (*), SUM (SALARY) FROM (DEPARTMENT JOIN EMPLOYE ON DNUMBER=DNO) GROUP BY DNAME;

47 Introduction Architecture Modèles de données Modèle relationnel Algèbre relationnelle SQL Conception Fonctions avancées Concepts avancées Modèle des objets BD à objets 47 Manipulation des données n Mise à jour UPDATE SET { = } + WHERE { } UPDATE PROJECT SET PLOCATION = Bellaire, DNUM = 5 WHERE PNUMBER=10; UPDATE EMPLOYE SET SALARY = SALARY *1.1 WHERE DNO IN (SELECT DNUMBER FROM DEPARTMENT WHERE DNAME = 'Research');

48 Introduction Architecture Modèles de données Modèle relationnel Algèbre relationnelle SQL Conception Fonctions avancées Concepts avancées Modèle des objets BD à objets 48 Manipulation des données n Suppression DELETE FROM [WHERE { ] DELETE FROM EMPLOYE WHERE SSN= ; DELETE FROM EMPLOYE WHERE DNO IN (SELECT DNUMBER FROM DEPARTMENT WHERE DNAME='Research'); –Que fait la requête suivante ? DELETE FROM EMPLOYE;

49 Introduction Architecture Modèles de données Modèle relationnel Algèbre relationnelle SQL Conception Fonctions avancées Concepts avancées Modèle des objets BD à objets 49 Opérations ensemblistes n Différence Les employés qui n ont pas de dépendants. select ssn as Nass from employe minus select essn from dependent; Nass Que fait la requête suivante ? select essn from dependent; minus select ssn as Nass from employe

50 Introduction Architecture Modèles de données Modèle relationnel Algèbre relationnelle SQL Conception Fonctions avancées Concepts avancées Modèle des objets BD à objets 50 Opérations ensemblistes n Différence Les noms et prénoms des employés qui nont pas de dépendants. select lname as prenom from employe where ssn in (select ssn as Nass from employe minus select essn from dependent); ou select lname as prenom from employe, (select ssn as Nass from employe minus select essn from dependent) where ssn = Nass; PRENOM English Narayan

51 Introduction Architecture Modèles de données Modèle relationnel Algèbre relationnelle SQL Conception Fonctions avancées Concepts avancées Modèle des objets BD à objets 51 Opérations ensemblistes n Intersection Les employés qui ont des dépendants. select ssn as Nass from employe intersect select essn from dependent; Nass

52 Introduction Architecture Modèles de données Modèle relationnel Algèbre relationnelle SQL Conception Fonctions avancées Concepts avancées Modèle des objets BD à objets 52 Opérations dérivées n Division (1) –Exemple : quel sont les employées qui ont participé au mêmes projets que « John Smith » =

53 Introduction Architecture Modèles de données Modèle relationnel Algèbre relationnelle SQL Conception Fonctions avancées Concepts avancées Modèle des objets BD à objets 53 Opérations ensemblistes n Division (2) select fname as Prenom, lname as Nom from employe e where not exists (select pno from works_on where essn = ' minus select pno from works_on where essn = e.ssn) ; PRENOM NOM Joyce English Jhon Smith

54 Introduction Architecture Modèles de données Modèle relationnel Algèbre relationnelle SQL Conception Fonctions avancées Concepts avancées Modèle des objets BD à objets 54 Opérations ensemblistes n Division (2 Ayoye !!!) select fname as Prenom, lname as Nom from employe where not exists (select pno from works_on w1 where essn = ' and not exists (select pno from works_on w2 where essn = ssn and w1.pno = w2.pno)) ;

55 Introduction Architecture Modèles de données Modèle relationnel Algèbre relationnelle SQL Conception Fonctions avancées Concepts avancées Modèle des objets BD à objets 55 SQL intégré n Introduction –SQL peut être intégré dans un langage hôte (C, COBOL, PL/1, PASCAL, JAVA, etc.) –Étude du cas du langage C

56 Introduction Architecture Modèles de données Modèle relationnel Algèbre relationnelle SQL Conception Fonctions avancées Concepts avancées Modèle des objets BD à objets 56 SQL intégré n Principes –Tout instruction SQL commence par lexpression EXEC SQL pour la distinguer des autres instructions du langage hôte –Différents types dinstructions déclarations connexion traitement

57 Introduction Architecture Modèles de données Modèle relationnel Algèbre relationnelle SQL Conception Fonctions avancées Concepts avancées Modèle des objets BD à objets 57 SQL intégré n Déclarations (variables de communication) –Elle se fait dans la DECLARE SECTION. Celle ci commence par l'ordre EXEC SQL BEGIN DECLARE SECTION; et se termine par EXEC SQL END DECLARE SECTION; –Exemple EXEC SQL BEGIN DECLARE SECTION; int pempno ; char pname[11]; int pdeptno; EXEC SQL END DECLARE SECTION;

58 Introduction Architecture Modèles de données Modèle relationnel Algèbre relationnelle SQL Conception Fonctions avancées Concepts avancées Modèle des objets BD à objets 58 SQL intégré n Déclarations (variables de communication) –Utilisation dans SQL EXEC SQL SELECT DEPTO, ENAME INTO :pdeptno, :pname FROM EMP WHERE EMPNO = :pempno; Variables précédées de ":" pour les distinguer des noms des attributs –Utilisation dans C strcpy(pname,"Martin") ; –Les types possibles pour ces variables sont ceux compatibles avec ORACLE (entiers, réels, chaînes de caractères)

59 Introduction Architecture Modèles de données Modèle relationnel Algèbre relationnelle SQL Conception Fonctions avancées Concepts avancées Modèle des objets BD à objets 59 SQL intégré n Connexion –La connexion à une base ORACLE se fait par l'ordre SQL : EXEC SQL CONNECT :username IDENTIFIED BY :password; username et password sont des variables déclarées dans la section déclaration –Exemple EXEC SQL BEGIN DECLARE SECTION; VARCHAR username[20]; VARCHAR password[20]; EXEC SQL END DECLARE SECTION; EXEC SQL INCLUDE sqlca.h;

60 Introduction Architecture Modèles de données Modèle relationnel Algèbre relationnelle SQL Conception Fonctions avancées Concepts avancées Modèle des objets BD à objets 60 SQL intégré n Connexion –Exemple (suite) main() { strcpy(username,"login_oracle"); /* Copie du username*/ strcpy(password,"motdepasse_oracle"); /* Copie du mot de passe */ EXEC SQL CONNECT :username IDENTIFIED BY :password; … }

61 Introduction Architecture Modèles de données Modèle relationnel Algèbre relationnelle SQL Conception Fonctions avancées Concepts avancées Modèle des objets BD à objets 61 SQL intégré n Traitements –Mise à jour "mettre à jour le salaire dans la relation employé" EXEC SQL UPDATE EMP SET SAL = :salaire WHERE EMPNO=301; –Suppression EXEC SQL DELETE FROM EMP WHERE EMPNO = :empno; –Création d une table EXEC SQL CREATE TABLE EMP_TEST (EMPNO NUMBER, ENAME CHAR(15), JOB CHAR(10));

62 Introduction Architecture Modèles de données Modèle relationnel Algèbre relationnelle SQL Conception Fonctions avancées Concepts avancées Modèle des objets BD à objets 62 SQL intégré n Traitements –Sélection, cas du INTO S applique quand le SELECT retourne un seul n-uplet EXEC SQL SELECT job, sal INTO :fonction, :salaire FROM EMP WHERE empno=301; –Sélection, utilisation dun curseur S applique quand le SELECT retourne un ensemble de n-uplets Un curseur est une structure de données contenant tous les n-uplets retournés par la commande SELECT Cette structure se manipule comme un fichier séquentiel

63 Introduction Architecture Modèles de données Modèle relationnel Algèbre relationnelle SQL Conception Fonctions avancées Concepts avancées Modèle des objets BD à objets 63 SQL intégré n Traitements –Association du curseur à un SELECT EXEC SQL DECLARE C CURSOR FOR SELECT job, salaire FROM EMP; –Ouverture du curseur EXEC SQL OPEN C; A l ouverture, le premier n-uplet est pointé –Fermeture du curseur EXEC SQL CLOSE C;

64 Introduction Architecture Modèles de données Modèle relationnel Algèbre relationnelle SQL Conception Fonctions avancées Concepts avancées Modèle des objets BD à objets 64 SQL intégré n Traitements –Accès aux autres n-uplets de manière séquentielle Se fait par l instruction FETCH EXEC SQL FETCH C INTO :fonction, :salaire; On ne peut pas reculer dans le curseur Pour accéder de nouveau aux n-uplets, il faut fermer et rouvrir le curseur

65 Introduction Architecture Modèles de données Modèle relationnel Algèbre relationnelle SQL Conception Fonctions avancées Concepts avancées Modèle des objets BD à objets 65 SQL intégré n Commandes dynamiques –Il est possible dexécuter des commandes SQL inconnues au moment de lécriture du programme –Il existe pour cela quatre méthode Commandes sauf SELECT sans variables (EXECUTE IMMEDIATE) Commandes sauf SELECT avec un nombre de variables fixe (PREPARE, EXECUTE) Commandes avec un nombre de variables variable (PREPARE, DECLARE, OPEN, FETCH) SELECT complètement dynamique

66 Introduction Architecture Modèles de données Modèle relationnel Algèbre relationnelle SQL Conception Fonctions avancées Concepts avancées Modèle des objets BD à objets 66 SQL intégré n Commandes dynamiques –Commandes sans variables EXEC SQL EXECUTE IMMEDIATE :modif; –Commandes avec un nombre de variables fixe EXEC SQL PREPARE S1 FROM :chaîne; EXEC SQL EXECUTE S1 USING :variable1,:variable2,...;

67 Introduction Architecture Modèles de données Modèle relationnel Algèbre relationnelle SQL Conception Fonctions avancées Concepts avancées Modèle des objets BD à objets 67 SQL intégré n Directives de traitement d'erreur EXEC SQL WHENEVER [SQLERROR / SQLWARNING / NOT FOUND] [STOP / CONTINUE / GO TO étiquette]; –Ces directives correspondent donc à 3 événements ORACLE : SQLERROR : erreur ORACLE SQLWARNING : "warning" ORACLE NOT FOUND : curseur vide ou fini

68 Introduction Architecture Modèles de données Modèle relationnel Algèbre relationnelle SQL Conception Fonctions avancées Concepts avancées Modèle des objets BD à objets 68 SQL intégré n Directives de traitement d'erreur EXEC SQL WHENEVER [SQLERROR / SQLWARNING / NOT FOUND] [STOP / CONTINUE / GO TO étiquette]; –Les actions possibles sont : STOP : le programme se termine et la transaction est « abortée », CONTINUE : le programme continue en séquence, GO TO : le programme se branche à l'adresse indiquée.

69 Introduction Architecture Modèles de données Modèle relationnel Algèbre relationnelle SQL Conception Fonctions avancées Concepts avancées Modèle des objets BD à objets 69 SQL intégré n Directives de traitement d'erreur –La portée d'une directive WHENEVER va jusqu'à la directive WHENEVER suivante (ou la fin de programme) dans l'ordre du texte source PRO*C (et non pas dans l'ordre d'exécution). –L'erreur classique dans la manipulation des SQL WHENEVER est la suivante :

70 Introduction Architecture Modèles de données Modèle relationnel Algèbre relationnelle SQL Conception Fonctions avancées Concepts avancées Modèle des objets BD à objets 70 SQL intégré routine a {... EXEC SQL WHENEVER ERROR GOTO toto;... toto :... } routine b {... EXEC SQL INSERT... } /* donc rien est dit dans b pour SQL WHENEVER */ –Par conséquent, au sein de la routine b, on garde les dernières directives rencontrées, donc celles de la routine a. Or l'étiquette toto est locale à a et donc inconnue dans b.

71 Introduction Architecture Modèles de données Modèle relationnel Algèbre relationnelle SQL Conception Fonctions avancées Concepts avancées Modèle des objets BD à objets 71 SQL intégré n Solutions –par exemple avoir systématiquement des étiquettes globales –définir localement dans chaque routine les directives d'erreurs.

72 Introduction Architecture Modèles de données Modèle relationnel Algèbre relationnelle SQL Conception Fonctions avancées Concepts avancées Modèle des objets BD à objets 72 SQL intégré n Gestion des transactions –Une transaction est assimilée à une exécution d'un programme. Le début de transaction est implicite (c'est le début de programme), et la fin est soit implicite (erreur non récupérée par un WHENEVER : annulation, ou fin de programme : validation) soit explicite. Les ordres de fin de transaction explicites sont :

73 Introduction Architecture Modèles de données Modèle relationnel Algèbre relationnelle SQL Conception Fonctions avancées Concepts avancées Modèle des objets BD à objets 73 SQL intégré n Gestion des transactions EXEC SQL COMMIT WORK [RELEASE]; –Valide les mises à jour. L'option RELEASE désalloue toutes les ressources ORACLE et réalise la déconnexion de la base EXEC SQL ROLLBACK WORK [RELEASE]; –Annule les mises à jour

74 Introduction Architecture Modèles de données Modèle relationnel Algèbre relationnelle SQL Conception Fonctions avancées Concepts avancées Modèle des objets BD à objets 74 SQL intégré n Gestion des transactions –Pour éviter les problèmes de conflit entre le ROLLBACK et les directives WHENEVER, il est prudent d'utiliser le ROLLBACK comme suit : EXEC SQL WHENEVER SQLERROR CONTINUE; EXEC SQL WHENEVER SQLWARNING CONTINUE; EXEC SQL ROLLBACK WORK;


Télécharger ppt "IFT2821 Base de données Chapitre 6 SQL. Introduction Architecture Modèles de données Modèle relationnel Algèbre relationnelle SQL Conception Fonctions."

Présentations similaires


Annonces Google