Télécharger la présentation
La présentation est en train de télécharger. S'il vous plaît, attendez
Publié parMauricette Lecours Modifié depuis plus de 8 années
1
SQL-MAJ, vues - 1 / Djamel Berrabah SQL : création et mises-à-jour de schémas et de données ● Commandes de définition de données (DDL) ● Commandes de mise-à-jour de données (DML) ● Vues
2
SQL-MAJ, vues - 2 / Djamel Berrabah SQL : mises-à-jour SQL permet d’interroger et de créer, mettre à jour et supprimer des bases de données. SQL-DDL : création, modification et suppression de schémas création, modification et suppression de schémas de relation définition de clés et d’autres contraintes SQL-DML : création, modification et suppression de données insertion, modification et suppression de n-uplets
3
SQL-MAJ, vues - 3 / Djamel Berrabah Commandes DDL Création de schémas : CREATE SCHEMA nom_schema AUTHORIZATION nom_utilisateur Création de tables : Spécifie un nouveau schéma de relation Forme : CREATE TABLE nom_table (Attribute_1 [DEFAULT ], Attribute_2 [DEFAULT ], … Attribute_n [DEFAULT ] [ ])
4
SQL-MAJ, vues - 4 / Djamel Berrabah Exemple Définition de la relation Project CREATE TABLE Project ( Pno CHAR(3), PnameVARCHAR(20), Budget NUMBER(10,2) DEFAULT 0.00 City CHAR(9));
5
SQL-MAJ, vues - 5 / Djamel Berrabah Types de données ANSI SQL / Oracle Numériques : INT, SMALLINT. Possibilité de DEFAULT AUTOINCREMENT FLOAT, DOUBLE PRECISION, REAL NUMBER(i,j) : i=précision (nombres de chiffres); j=échelle NUMBER(4,3) = [0.000 … 9.999] FLOAT(p) : précision p (# de bits) Chaînes de caractères : CHAR(n) : longueur fixe = n CHAR VARYING(n) : longueur variable avec max=n CLOB : character large object (4 GO) NCHAR, NCLOB : national character set (UTF8, UTF16,...) Séquences binaires : RAW(n) : n <= 2Kb LONG RAW(n) : n <= 2Mb BLOB : binary large object (4 GO)
6
SQL-MAJ, vues - 6 / Djamel Berrabah Types de données SQL / Oracle Dates : DATE : YYYY-MM-DD HH Heure : TIME : HH:MM:SS Instants de temps : TIMESTAMP les champs DATE et TIME avec une précision de 10 -6 secondes Autres types Oracle : XML, spatial, media (audio/image/video)
7
SQL-MAJ, vues - 7 / Djamel Berrabah Standard ANSI SQL et Oracle ANSI SQL Oracle CHAR(n) CHAR VARYING(n)VARCHAR2(n) NATIONAL CHAR(n)NCHAR(n) NUMERIC[(p,s)], DECIMAL[(p,s)] NUMBER(p,s) INT,SMALLINTNUMBER(38) FLOAT, DOUBLE PRECISION FLOAT(126) REALFLOAT(63)
8
SQL-MAJ, vues - 8 / Djamel Berrabah Type DATE Format par défaut : YYYY-MM-DD Fonctions : SYSDATE : date / heure actuelle TO_DATE('98-DEC-25:17:30','YY-MON-DD:HH24:MI') SELECT * FROM my_table WHERE datecol = TO_DATE('04-OCT-00','DD-MON-YY'); Arithmétique : SYSDATE + 1 : demain
9
SQL-MAJ, vues - 9 / Djamel Berrabah Types utilisateurs : domaines Pour créer un DOMAINE : CREATE DOMAIN nom_domaine AS type Exemple : CREATE DOMAIN Gender AS CHAR(1) Utile pour pouvoir contrôler l’évolution de définitions de types. : CREATE DOMAIN n’est pas implanté.
10
SQL-MAJ, vues - 10 / Djamel Berrabah Autres commandes DDL DROP SCHEMA nom_schema [,…] [CASCADE | RESTRICT] supprime les schémas indiqués CASCADE : toutes les tables du schéma RESTRICT : seulement les tables vides (par défaut) DROP TABLE nom_table [,…] [CASCADE | RESTRICT] RESTRICT : supprime la table seulement si elle n’est référencée par aucune contrainte (clé étrangère) ou vue CASCADE : supprime aussi toutes les tables qui « dépendent » de nom_table ALTER TABLE nom_table OPERATION modifie la définition de la table opérations: Ajouter (ADD), effacer (DROP), changer (MODIFY) attributs et contraintes changer propriétaire, …
11
SQL-MAJ, vues - 11 / Djamel Berrabah SQL : création et mises-à-jour de schémas et de données Commandes de définition de données (DDL) Commandes de mise-à-jour de données (DML) Vues
12
SQL-MAJ, vues - 12 / Djamel Berrabah Insertion de tuples INSERT INTO table [ ( column [,...] ) ] { VALUES ( { expression | DEFAULT } [,...] ) | query } en spécifiant des valeurs différentes pour tous les attributs dans l’ordre utilisé dans CREATE TABLE : INSERT INTO R VALUES (value(A 1 ), …, value(A n )) en spécifiant les noms d’attributs (indépendant de l’ordre) : INSERT INTO R ( A i, …, A k ) VALUES (value(A i ), …, value(A k )) insertion du résultat d’une requête (copie) : INSERT INTO R
13
SQL-MAJ, vues - 13 / Djamel Berrabah
14
SQL-MAJ, vues - 14 / Djamel Berrabah Suppression de tuples DELETE FROM table [ WHERE condition ] Supprimer tous les employés qui ont travaillé dans le projet P3 pendant moins de 3 mois : DELETE FROM Emp WHERE Eno IN ( SELECT Eno FROM Works WHERE PNO=‘P3’ AND Dur < 3) Attention : il faut aussi effacer les n-uplets correspondants dans la table Works (cohérence des données).
15
SQL-MAJ, vues - 15 / Djamel Berrabah Modification de tuples UPDATE table SET column = { expression | DEFAULT } [,...] [ WHERE condition ] UPDATER SETA i =value, …, A k =value WHEREP
16
SQL-MAJ, vues - 16 / Djamel Berrabah
17
SQL-MAJ, vues - 17 / Djamel Berrabah Validation / annulation des mises-à-jours COMMIT [WORK] pour rendre permanents les résultats des mises-à-jours dans un programme (C, java…): EXEC SQL COMMIT; ROLLBACK [WORK] pour annuler les résultats des mises-à-jour dans un programme: EXEC SQL ROLLBACK; La sémantique de ces commandes est supportée par les transactions (on verra ça plus tard).
18
SQL-MAJ, vues - 18 / Djamel Berrabah SQL : création et mises-à-jour de schémas et de données Commandes de définition de données (DDL) Commandes de mise-à-jour de données (DML) Vues
19
SQL-MAJ, vues - 19 / Djamel Berrabah SQL : Vues Définition Interrogation Mises-à-jours Évaluation de requêtes
20
SQL-MAJ, vues - 20 / Djamel Berrabah Pourquoi définir des vues Une BD peut contenir des centaines de tables avec des milliers d’attributs : 1.Les requêtes sont complexes : difficiles à formuler source d’erreurs 2.Une modification du schéma nécessite la modification de beaucoup de programmes. Solution : Adapter le schéma et les données à des applications spécifiques vues
21
SQL-MAJ, vues - 21 / Djamel Berrabah Définition d’une vue Définition : Une vue V(a1, a2, … an) est une relation avec n attributs qui contient le résultat d’une requête Q(a1, a2, …an) évaluée sur une base de données BD : V(a1, a2, …an) :- Q(x1, x2, …,xn, BD) Remarques : V possède un schéma relationnel avec des attributs a1,…an. V reflète l’état actuel d’une base de données BD V peut être interrogée et il est possible de définir des vues à partir d’autres vues. On distingue les relations « matérialisées » (tables) et les relations « virtuelles » (vues)
22
SQL-MAJ, vues - 22 / Djamel Berrabah Relations et Vues Relatio n Vue Requê te
23
SQL-MAJ, vues - 23 / Djamel Berrabah Définition d’une vue dans SQL CREATE VIEW nom_vue [(att1, att2...)] AS requête_SQL [ WITH CHECK OPTION ] nom_vue désigne le nom de la relation att1,... (optionnel) permet de nommer les attributs de la vue (attributs de la requête par défaut) requête_SQL désigne une requête SQL standard qui définit le « contenu » (instance) de la vue WITH CHECK OPTION (voir mises-à-jour de vues)
24
SQL-MAJ, vues - 24 / Djamel Berrabah Exemple Emp (Eno, Ename, Title, City) Project(Pno, Pname, Budget, City) Pay(Title, Salary) Works(Eno, Pno, Resp, Dur) Définition de la vue EmpProjetsParis des employés travaillant dans des projets à Paris : CREATE VIEW EmpProjetsParis(NumE, NomE, NumP, NomP, Dur) AS SELECT Emp.Eno, Ename, Works.Pno, Pname, Dur FROM Emp, Works, Project WHERE Emp.Eno=Works.Eno AND Works.Pno = Project.Pno AND Project.City = ‘Paris’
25
SQL-MAJ, vues - 25 / Djamel Berrabah Interrogation de vues Emp (Eno, Ename, Title, City) Project(Pno, Pname, Budget, City) Pay(Title, Salary) Works(Eno, Pno, Resp, Dur) Les noms des employés de projets Parisiens : Requête sans vue: SELECT Ename FROM Emp, Works, Project WHERE Emp.Eno=Works.Eno AND Works.Pno = Project.Pno AND Project.City = ‘Paris’ Requête avec vue: SELECT NomE FROM EmpProjetsParis On obtient le même résultat
26
SQL-MAJ, vues - 26 / Djamel Berrabah Évaluation de requêtes sur des vues Requête : SELECT Emp.Eno FROM EmpProjetsParis WHERE Dur > 3 Vue : CREATE VIEW EmpProjetsParis AS SELECT Emp.Eno, Ename, Project.Pno, Pname, Dur FROM Emp, Works, Project WHERE Emp.Eno=Works.Eno AND Works.Pno = Project.Pno AND Project.City = ‘Paris’
27
SQL-MAJ, vues - 27 / Djamel Berrabah Ename ( Dur > 3 ( Emp.Eno, (Emp |> <| City=‘Paris’ (Project))) Ename, Works.Pno, Dur Requête : Ename ( Dur > 3 EmpProjetsParis ) Évaluation de requêtes sur des vues Vue : EmpProjetsParis := Emp.Eno, (Emp |> <| City=‘Paris’ (Project) Ename, Works.Pno, Dur Ename (Emp |> 3 Works |><| City=‘Paris’ (Project)) Extension Simplification
28
SQL-MAJ, vues - 28 / Djamel Berrabah Mise-à-jour de vues Problème de mise-à-jour : une vue est une relation virtuelle et toutes les modifications de cette relation doivent être “transmises” aux relations (tables) utilisées dans sa définition. La plupart du temps il n’est pas possible de mettre à jour une vue (insérer un n-uplet, …). Exemple: V(A,C) :- A,C ( R(A,B) |><| S(B,C)) Insertion d’un n-uplet [A:1,C:3] dans la vue V Quelle est la modification à faire dans R et S?
29
SQL-MAJ, vues - 29 / Djamel Berrabah Vues modifiables Une vue n’est pas modifiable : quand elle ne contient pas tous les attributs définis comme NON NULL dans la table interrogée quand elle contient une jointure quand elle contient une fonction agrégat Règle : Une vue est modifiable quand elle est définie comme une sélection/projection sur une relation R (qui peut aussi être une vue modifiable) sans utilisation de SELECT DISTINCT.
30
SQL-MAJ, vues - 30 / Djamel Berrabah Mises-à-jour Emp (Eno, Ename, Title, City) Project(Pno, Pname, Budget, City) Pay(Title, Salary) Works(Eno, Pno, Resp, Dur) CREATE VIEW ProjetParis AS SELECT Pno,Pname,Budget FROM Project WHERE City=‘Paris’; UPDATE ProjetParis SET Budget = Budget*1.2;
31
SQL-MAJ, vues - 31 / Djamel Berrabah WITH CHECK OPTION WITH CHECK OPTION protège contre les « disparitions de n- uplets » causées par des mise-à-jour : CREATE VIEW ProjetParis WITH CHECK OPTION AS SELECT Pno,Pname,Budget,City FROM Project WHERE City=‘Paris’; UPDATE ProjetParis SET City = ‘Lyon’ WHERE Pno=142; Mise-à-jour rejetée
32
SQL-MAJ, vues - 32 / Djamel Berrabah Vues et tables Similitudes : Interrogation SQL UPDATE, INSERT et DELETE sur vues modifiables Autorisations d'accès Différences: On ne peut pas créer des index sur les vues On ne peut pas définir des contraintes (clés) Une vue est recalculée à chaque fois qu’on l’interroge Vue matérialisée : stocker temporairement la vue pour améliorer les performances.
Présentations similaires
© 2024 SlidePlayer.fr Inc.
All rights reserved.