SQL-MAJ, vues - 1 UPMC - UFR 919 Ingéniérie - Cours Bases de données (BD-LI341) SQL : création et mises-à-jour de schémas et de données ● Commandes de.

Slides:



Advertisements
Présentations similaires
LE LANGAGE SQL : LDD La création de tables L’ordre CREATE CREATE TABLE nom_de_table (Nom_colonne Type_colonne, Nom_colonne Type_colonne,
Advertisements

1 LE LANGAGE DE REQUETES SQL Origines et Evolutions SQL1 86: la base SQL1 89: l'intégrité.
Christine Bonnet SOURCES : « Samples » dOracle, « Oracle 8 » R. Chapuis PRO*C – C ++
SQL partie 3. SQL est un langage de définition de données SQL est un langage de définition de données (LDD), c'est-à-dire qu'il permet de créer des tables.
 C'est une fenêtre par laquelle les informations d'une table peuvent être visualisées et changées.  C'est une table virtuelle: ◦ elle n'existe pas ◦
Quinio1 Bases de données : modèlisation et SGBD Séance 3 B Quinio.
Création et Gestion de Tables
Le Langage de Définition de Données LDD
Le langage SQL.
NIVEAU LOGIQUE Vues. Fenêtre dynamique sur la base Ses données proviennent d'autres tables ou d'autres vues.
SQL Partie 2. SQL est un langage de manipulation de données SQL est un langage de manipulation de données (LMD), cela signifie qu'il permet de sélectionner,
1 Les bases de données Séance 5 -- Le Langage de Définition de Données ou la manœuvre de la structure de la base -- Le Langage de Manœuvre de Données.
RAPPEL SUR LES BASES DE DONNÉES, LE SQL 1 er trimestre V1.0 06/01/2015.
1- Introduction 1ère partie Le langage SQL 2- Connexion 3- Structure & Contenu 4- Requêtes.
Algèbre relationnelle - 1 / Djamel Berrabah Algèbre relationnelle Modèle relationnel : rappel Algèbre relationnelle.
SQL partie 5 1 LMD create – update – primary key secondary key.
Le langage de définition de données B.T.S. S.I.O – SI3 –
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.
SQL : 4 fonctions d'exploitation de SGBD SQL (Structured Query Language, traduisez Langage de requêtes structuré) est un langage informatique ayant pour.
SQL query - 1 / D. Berrabah SQL : interrogation de BD Requêtes d'interrogation simples Requêtes complexes Agrégats et groupement.
SQL query - 1 UPMC - UFR 919 Ingéniérie - Cours Bases de données (BD-L3) SQL : interrogation de BD Requêtes d'interrogation simples Requêtes complexes.
1- phpMyAdmin 3ème partie : Manipulation des données Le langage SQL 2- Gérer les tables 3- Gérer les données.
1 Programmation en C++ C++ de base ● Programme C++ ● Variables, objets, types ● Fonctions ● Namespace ● Tests ● Boucles ● Pointeurs, références.
Calcul et SQL - 1 / Djamel Berrabah Calcul relationnel et SQL Calcul relationnel à variables « n-uplet » Calcul relationnel à variables « domaine » Query.
SQL partie 1 Langage de Définition de Données. SQL est un langage de définition de données  SQL est un langage de définition de données (LDD), c'est-à-dire.
1 Programmation en C++ C++ de base ● Programme C++ ● Variables, objets, types ● Types et opérations fondamentales ● Tests ● Boucles ● Pointeurs, références.
Intégration web & Base de données 1 Intégration Web & Base de DonnéesMariem Farhat Intérêt des bases de données pour le Web Cours préparé par : Mariem.
Environnement du développement de BD ORACLE REPORTS 10g
ملخص Initiation à la sgbdr
Structured Query Language SQL DDL
Initiation aux bases de données et à la programmation événementielle
LE LANGAGE DE REQUETES SQL
Langage de manipulation de données (LMD)
Base de données: Généralité IFT6800 Jian-Yun Nie.
Structured Query Language
Généralité sur les bases de données
Les bases de données et le modèle relationnel
DARCY Lionel BTS SIO Option SLAM
Langage de Manipulation des Données LMD
Langage d’interrogation des Données LID
SQL LID – INTERROGATIN DES DONNEES
SQL LMD FICHE 4.6.
Manipulation D’Une Base De Données
Programmation en C++ C++ de base
Langage d’interrogation des Données LID
I Copyright © 2004, Oracle. Tous droits réservés. Introduction.
1 Copyright © 2004, Oracle. Tous droits réservés. Extraire des données à l'aide de l'instruction SQL SELECT.
2 Copyright © 2004, Oracle. Tous droits réservés. Restreindre et trier les données.
Bases de données sous Access. Initiation aux bases de données  Structure d’une base de données.
5 Copyright © 2004, Oracle. Tous droits réservés. Afficher des données de plusieurs tables.
8 Copyright © 2004, Oracle. Tous droits réservés. Manipuler les données.
9 Copyright © 2004, Oracle. Tous droits réservés. Utiliser des instructions LDD pour créer et gérer des tables.
10 Copyright © 2004, Oracle. Tous droits réservés. Créer d'autres objets de schéma.
Préface Introduction Objectifs du chapitre I-2 Objectifs du cours I-3 Oracle10g I-4 Oracle Database 10g I-6 Oracle Application Server 10g I-7 Oracle Enterprise.
Remarque : Un nombre ou une lettre en gras fait référence à un chapitre entier ou à une annexe entière. A Affichage des dates par défaut 02-06, Ajouter.
Langage d’interrogation des Données Les fonctions de groupes
Algèbre relationnelle
3. LE LANGAGE SQL DML (2) Version 2 - Janvier 2012
1. LE LANGAGE SQL DDL Version 2 - Janvier Le langage SQL-DDL
7 Contraintes d’intégrité en SQL
Semaine 3 Retour sur la semaine 2 Plan de séance
Info Bases de données avancées
Définition des contraintes Vérification des contraintes Triggers
TP1 - DBMAIN BFSH Lausanne - Switzerland - Tel Université de Lausanne.
© Robert Godin. Tous droits réservés.
SQL: Contraintes et Triggers
© Robert Godin. Tous droits réservés.
1. LE LANGAGE SQL DDL Version 1 - Mai 2009 corrigé le 11/2/2011
Systèmes d’Information et Application
Systèmes d’Information et Application
Transcription de la présentation:

SQL-MAJ, vues - 1 UPMC - UFR 919 Ingéniérie - Cours Bases de données (BD-LI341) 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

SQL-MAJ, vues - 2 UPMC - UFR 919 Ingéniérie - Cours Bases de données (BD-LI341) 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

SQL-MAJ, vues - 3 UPMC - UFR 919 Ingéniérie - Cours Bases de données (BD-LI341) 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 ] [ ])

SQL-MAJ, vues - 4 UPMC - UFR 919 Ingéniérie - Cours Bases de données (BD-LI341) 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));

SQL-MAJ, vues - 5 UPMC - UFR 919 Ingéniérie - Cours Bases de données (BD-LI341) 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)

SQL-MAJ, vues - 6 UPMC - UFR 919 Ingéniérie - Cours Bases de données (BD-LI341) 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 secondes Autres types Oracle : XML, spatial, media (audio/image/video)

SQL-MAJ, vues - 7 UPMC - UFR 919 Ingéniérie - Cours Bases de données (BD-LI341) Standard ANSI SQL et Oracle ANSI SQL OracleANSI SQL Oracle CHAR(n)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)

SQL-MAJ, vues - 8 UPMC - UFR 919 Ingéniérie - Cours Bases de données (BD-LI341) 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

SQL-MAJ, vues - 9 UPMC - UFR 919 Ingéniérie - Cours Bases de données (BD-LI341) 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é.

SQL-MAJ, vues - 10 UPMC - UFR 919 Ingéniérie - Cours Bases de données (BD-LI341) 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, …

SQL-MAJ, vues - 11 UPMC - UFR 919 Ingéniérie - Cours Bases de données (BD-LI341) 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

SQL-MAJ, vues - 12 UPMC - UFR 919 Ingéniérie - Cours Bases de données (BD-LI341) 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

SQL-MAJ, vues - 13

SQL-MAJ, vues - 14 UPMC - UFR 919 Ingéniérie - Cours Bases de données (BD-LI341) 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).

SQL-MAJ, vues - 15 UPMC - UFR 919 Ingéniérie - Cours Bases de données (BD-LI341) Modification de tuples UPDATE table SET column = { expression | DEFAULT } [,...] [ WHERE condition ] UPDATER SETA i =value, …, A k =value WHEREP

SQL-MAJ, vues - 16

SQL-MAJ, vues - 17 UPMC - UFR 919 Ingéniérie - Cours Bases de données (BD-LI341) 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).

SQL-MAJ, vues - 18 UPMC - UFR 919 Ingéniérie - Cours Bases de données (BD-LI341) Mise-à-jour en Embedded SQL Exemple: transfert d’un montant entre deux budgets de projets #include EXEC SQL INCLUDE SQLCA; main() { EXEC SQL WHENEVER SQLERROR GOTO error: EXEC SQL CONNECT TO Company; EXEC SQL BEGIN DECLARE SECTION; int pno1, pno2; /* 2 numéros de projet */ int amount; /* montant du transfert */ EXEC SQL END DECLARE SECTION; /* Code (omis) pour lire pno1, pno2 et amount */ EXEC SQL UPDATE Project SET Budget = Budget + :amount WHERE Pno = :pno2; EXEC SQL UPDATE Project SET Budget = Budget - :amount WHERE Pno = :pno1; EXEC SQL COMMIT; return(0); error: printf(“update failed, sqlcode = %ld\n”, SQLCODE); EXEC SQL ROLLBACK; return(-1); }

SQL-MAJ, vues - 19 UPMC - UFR 919 Ingéniérie - Cours Bases de données (BD-LI341) 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

SQL-MAJ, vues - 20 UPMC - UFR 919 Ingéniérie - Cours Bases de données (BD-LI341) SQL : Vues Définition Interrogation Mises-à-jours Évaluation de requêtes

SQL-MAJ, vues - 21 UPMC - UFR 919 Ingéniérie - Cours Bases de données (BD-LI341) 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

SQL-MAJ, vues - 22 UPMC - UFR 919 Ingéniérie - Cours Bases de données (BD-LI341) 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)

SQL-MAJ, vues - 23 UPMC - UFR 919 Ingéniérie - Cours Bases de données (BD-LI341) Relations et Vues Relatio n Vue Requê te

SQL-MAJ, vues - 24 UPMC - UFR 919 Ingéniérie - Cours Bases de données (BD-LI341) 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)

SQL-MAJ, vues - 25 UPMC - UFR 919 Ingéniérie - Cours Bases de données (BD-LI341) 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’

SQL-MAJ, vues - 26 UPMC - UFR 919 Ingéniérie - Cours Bases de données (BD-LI341) 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

SQL-MAJ, vues - 27 UPMC - UFR 919 Ingéniérie - Cours Bases de données (BD-LI341) É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’

SQL-MAJ, vues - 28 UPMC - UFR 919 Ingéniérie - Cours Bases de données (BD-LI341)  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

SQL-MAJ, vues - 29 UPMC - UFR 919 Ingéniérie - Cours Bases de données (BD-LI341) 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?

SQL-MAJ, vues - 30 UPMC - UFR 919 Ingéniérie - Cours Bases de données (BD-LI341) 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.

SQL-MAJ, vues - 31 UPMC - UFR 919 Ingéniérie - Cours Bases de données (BD-LI341) 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;

SQL-MAJ, vues - 32 UPMC - UFR 919 Ingéniérie - Cours Bases de données (BD-LI341) 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

SQL-MAJ, vues - 33 UPMC - UFR 919 Ingéniérie - Cours Bases de données (BD-LI341) 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.