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

18/06/2014© Robert Godin. Tous droits réservés.1 4Le langage SQL n Structured Query Language n Norme établie pour SGBD relationnel n Partie LDD (DDL) –

Présentations similaires


Présentation au sujet: "18/06/2014© Robert Godin. Tous droits réservés.1 4Le langage SQL n Structured Query Language n Norme établie pour SGBD relationnel n Partie LDD (DDL) –"— Transcription de la présentation:

1 18/06/2014© Robert Godin. Tous droits réservés.1 4Le langage SQL n Structured Query Language n Norme établie pour SGBD relationnel n Partie LDD (DDL) – Conceptuel : CREATE SCHEMA, TABLE,... – Externe : CREATE VIEW, GRANT,… – Interne : CREATE INDEX, CLUSTER,... n Partie LMD (DML) – SELECT, INSERT, DELETE, UPDATE

2 18/06/2014© Robert Godin. Tous droits réservés.2 Quelques liens n Standard SQL: n n Tutoriel et liens: n Syntaxe SQL2 : aug92.txt aug92.txt n Syntaxe SQL:1999 : n

3 18/06/2014© Robert Godin. Tous droits réservés.3 Origine n IBM Research (San Jose) – développement du prototype System/R – (Astrahan et al., 1976) n SQUARE – algèbre relationnelle ~ anglais – (Boyce, Chamberlin, King & Hammer, 1975) n SEQUEL – Structured English QUEry Language – (Chamberlin, Astrahan, Eswaran, Chamberlin, Griffiths & Lorie, 1976)

4 18/06/2014© Robert Godin. Tous droits réservés.4 Standard ANSI/ISO n SQL86 – version préliminaire n SQL89 (SQL, SQL1) – niveau minimal supporté n SQL92 (SQL2) – support accru de l intégrité – trois niveaux : entrée (SQL1 + ), intermédiaire, complet n SQL:1999 (SQL3) – extensions objet (UDT), TRIGGER, ROLE, SQL/PSM,... – Conformité plus variable

5 SQL:2003 n SQL/Framework. La structure de la norme et les relations entre les parties. n SQL/Foundation. Le cœur du langage. Cest la partie la plus importante et la plus grande. n SQL/CLI (Call-Level Interface). Interface programmatique procédurale à un serveur SQL. n SQL/PSM (Persistent Stored Modules). Extension procédurale à SQL. n SQL/MED (Management of External Data). Gestion de données externes au serveur SQL. n SQL/OLB (Object Language Binding). SQL enchâssé en Java. n SQL/Schemata. Schéma pour les métadonnées. n SQL/JRT (Java Routines and Types). Routine stockée en Java et types SQL à partir de classes Java. n SQL/XML. Traitement de données XML. 18/06/2014© Robert Godin. Tous droits réservés.5

6 SQL : 2006 /2008 n SQL:2006 – Intégration de XQUERY – … n SQL:2008 – TRIGGER INSTEAD OF – TRUNCATE – … 18/06/2014© Robert Godin. Tous droits réservés.6

7 18/06/2014© Robert Godin. Tous droits réservés.7 4.1Spécification du schéma relationnel avec SQL (LDD SQL) n Niveau conceptuel – Schéma des tables (TABLE) n CREATE TABLE. – Domaines (DOMAIN) n SQL2 intermédiaire : CREATE DOMAIN – Contraintes d'intégrité n PRIMARY KEY, FOREIGN KEY, UNIQUE KEY, CHECK, ASSERTION – Gâchettes et routines invoquées en SQL n CREATE TRIGGER, FUNCTION, PROCEDURE

8 18/06/2014© Robert Godin. Tous droits réservés.8 Spécification du schéma relationnel avec SQL (suite) n Niveau externe – Vues (VIEW) n définie à partir d'autres tables (CREATE VIEW). Elle apparaît à l'utilisateur comme une table normale alors qu'elle est en réalité dérivée à partir d'autres tables normales ou virtuelles. – Privilèges d'accès n GRANT n Niveau interne – non standardisé (e.g. CREATE INDEX)

9 18/06/2014© Robert Godin. Tous droits réservés.9 Environnement, catalogue, schéma et utilisateur SQL

10 18/06/2014© Robert Godin. Tous droits réservés.10 Utilisateur (user) n Identificateur d utilisateur – authorizationID – non standardisé n Mécanisme d authentification – e.g. mot de passe n Utilisateur possède privilèges

11 18/06/2014© Robert Godin. Tous droits réservés.11 Dialecte Oracle n DATABASE ~ catalogue – une instance Oracle monte une DATABASE à la fois n Nom du SCHEMA – = authorizationID du propriétaire n CLUSTER Oracle – cluster de l environnement SQL2 – = méthode d organisation de données par grappe

12 18/06/2014© Robert Godin. Tous droits réservés.12 Agent (client), serveur, session SQL n CONNECT spécifie – identification/authentification de l utilisateur (authorizationId/mot de passe) – identification du serveur SQL – SCHEMA, TIME ZONE, CHARACTER SET – valeurs de défaut

13 18/06/2014© Robert Godin. Tous droits réservés.13 Syntaxe des identificateurs n Régulier – Max. 128 caractères n lettres, chiffres, souligné (_) – Débute par une lettre – Pas de mot réservé n SELECT, CREATE, TABLE, ORDER, … – Insensible à la casse (conversion en majuscules) n Délimité – CREATE TABLE "TABLE"...

14 18/06/2014© Robert Godin. Tous droits réservés.14 Création du schéma d'une table en SQL (CREATE TABLE) n Forme simple n Transmise à l interprète du LDD – vérification – création de la table n schéma stocké dans dictionnaire de données n allocation des structures physiques – clause non standardisée pour organisation primaire

15 18/06/2014© Robert Godin. Tous droits réservés.15 Syntaxe générale du CREATE TABLE n Syntaxe de spécificationDeColonne n Syntaxe de spécificationDeContrainte

16 18/06/2014© Robert Godin. Tous droits réservés.16 Exemple VentesPleinDeFoin (script Oracle)script Oracle

17 18/06/2014© Robert Godin. Tous droits réservés.17 Types SQL n Numérique exact – INTEGER (ou INT) n Entier (précision non standardisée) n Exemples : 2, 3, 459 – SMALLINT n Petit entier (précision non standardisée) n Exemples : 2, 3, 459 – NUMERIC(p, c) (ou DECIMAL(p, c) ou DEC(p, c)) n Nombre décimal avec p chiffres significatifs (excluant le point) et c chiffres après le point n Exemples : 2.5, , 6

18 18/06/2014© Robert Godin. Tous droits réservés.18 Types SQL (suite) n Numérique approximatif – REAL n Point flottant (précision non standardisée) n Exemples : 3.27E-4, 24E5 – DOUBLE PRECISION n Point flottant à double précision (non standardisée) n Exemples : E-4, 24E12 – FLOAT(n) n Point flottant – précision minimale est de n chiffres pour la mantisse n Exemples : 3.27E-4, 24E5

19 18/06/2014© Robert Godin. Tous droits réservés.19 Types SQL (suite) n Chaîne de caractères (VARYING et NATIONAL) – CHARACTER(n) (ou CHAR(n)) n Chaîne de caractère de taille fixe égale à n n Exemples : 'G. Lemoyne-Allaire', 'Paul L''Heureux – CHARACTER VARYING (n) (ou VARCHAR(n)) n Taille variable (max de n caractères) – Mécanismes d internalionalisation n Ensemble de caractères par défaut n NATIONAL CHARACTER(n) – Ensemble de caractères alternatif spécifique à l'implémentation n NATIONAL CHARACTER VARYING(n) – Taille variable n Création d ensembles de caractères alternatifs – CREATE CHARACTER SET – COLLATION : relation d ordre des caractères

20 18/06/2014© Robert Godin. Tous droits réservés.20 Types SQL (suite) n Date et temps – DATE n année (quatre chiffres), mois (2 chiffres) et jour (2 chiffres) n Exemple : DATE ' ' – TIME[(p)] n heure (2 chiffres), minutes (2 chiffres), secondes (2 +p chiffres) n Exemple : TIME '14:04:32.25' – TIMESTAMP[(p)] n DATE + TIME n Exemple : TIMESTAMP ' :04:32.25' – INTERVAL n Représente un intervalle de temps n Exemple : INTERVAL '2' DAY (intervalle de deux jours)

21 18/06/2014© Robert Godin. Tous droits réservés.21 Types SQL (suite) n Booléen (SQL2 complet) – BIT (n) n Vecteur de n bits. n Exemples : B' ', X'9F' – BIT VARYING (n) n taille variable (max = n) n Données de grande taille (LOB SQL:1999) – BINARY LARGE OBJECT (n) (BLOB(n)) n n : taille en octets (ex: 1024, 5K, 3M, 2G) n Exemple : X 52CF4 (hexadecimal) – CHARACTER LARGE OBJECT (n) (CLOB(n)) – NATIONAL CHARACTER LARGE OBJECT (n) (NCLOB(n))

22 18/06/2014© Robert Godin. Tous droits réservés.22 UDT (User Defined Type) SQL:1999 n Voir chapitre 17

23 18/06/2014© Robert Godin. Tous droits réservés.23 Dialecte Oracle n NUMBER(p,[c]) – numérique exact; p entre 1 et 38 – c doit être entre -84 et +127 (défaut, c =0) n valeur négative signifie un arrondissement. 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 n Conversions implicites

24 18/06/2014© Robert Godin. Tous droits réservés.24 Dialecte Oracle (suite) n ROWID : identifiant de ligne composé de – identificateur de fichier – identificateur de bloc relatif au fichier – identificateur de ligne relatif au bloc n UROWID – i dentificateur universel de ligne (à partir de la version 8.1). – distingue index primaire (ORGANIZATION INDEX) n Conversions implicites

25 18/06/2014© Robert Godin. Tous droits réservés.25 Dialecte Oracle (suite) n DATE – ~TIMESTAMP SQL2 n Mécanisme d internationalisation – Paramètre de configuration NLS_LANG n CHARACTER SET n DATE_FORMAT n... n ALTER SESSION – pour modifier n LOB : taille max 4G n BFILE : fichier externe

26 18/06/2014© Robert Godin. Tous droits réservés.26 Suppression d une table (DROP TABLE) n RESTRICT – rejet si élément dépendant existe n ex: FOREIGN KEY n CASCADE – supprime élément dépendant

27 18/06/2014© Robert Godin. Tous droits réservés.27 Modification du schéma de table (ALTER TABLE) n Syntaxe

28 18/06/2014© Robert Godin. Tous droits réservés.28 Le dictionnaire de données (métabase) SQL (INFORMATION_SCHEMA) n Normalisé en SQL2 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

29 18/06/2014© Robert Godin. Tous droits réservés.29 Exemples de VIEWS du INFORMATION_SCHEMA 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 ASSERTIONS – ASSERTION créées par CURRENT_USER n TABLE_PRIVILEGES – privilèges accordés par CURRENT_USER, à CURRENT_USER, ou à PUBLIC

30 Dictionnaire de données Oracle avec SQL*plus

31 Recherche d une table du dictionnaire de données

32 18/06/2014© Robert Godin. Tous droits réservés.32 Requêtes SQL (SELECT) n Syntaxe de requêteSQL n Syntaxe du selectSQL n...

33 18/06/2014© Robert Godin. Tous droits réservés.33 Projection d'une table et la clause DISTINCT n Produire les noClient et dateCommande de toutes les Commandes Multi-ensemble !

34 18/06/2014© Robert Godin. Tous droits réservés.34 Clause DISTINCT n Produire les noClient et dateCommande de toutes les Commandes noClient, dateCommande (Commande)

35 18/06/2014© Robert Godin. Tous droits réservés.35 Sélection sur une table (WHERE) n Sélectionner les Articles dont le prix est inférieur à $20.00 et le numéro est supérieur à 30 prixUnitaire 30 (Article)

36 18/06/2014© Robert Godin. Tous droits réservés.36 Syntaxe de conditionSQL n Syntaxe (incomplète) de la conditionSimple :

37 18/06/2014© Robert Godin. Tous droits réservés.37 ConditionSQL - BETWEEN n Sélectionner les Commandes du mois de juin de l'année 2000

38 18/06/2014© Robert Godin. Tous droits réservés.38 ConditionSQL - IN n Sélectionner les Commandes du Client dont le noClient est 10 ou 40 ou 80

39 18/06/2014© Robert Godin. Tous droits réservés.39 ConditionSQL - LIKE n Sélectionner les Clients dont le nomClient contient le mot Le n 2ième lettre du nomClient = o et dernière lettre est un k

40 18/06/2014© Robert Godin. Tous droits réservés.40 ConditionSQL - IS NOT NULL n Sélectionner les Articles dont la description n'est pas une valeur nulle

41 18/06/2014© Robert Godin. Tous droits réservés.41 Sélection-projection sur une table n Produire les noClient et dateCommande des Commandes dont la date est supérieure au 05/07/2000 Laboratoire Créer le schéma de la BD PleinDeFoin : SchemaVentesPleinDeFoin.sql Exercices 1 a), b), c), n), o)

42 18/06/2014© Robert Godin. Tous droits réservés.42 Produit cartésien avec SELECT-FROM n Produire toutes les combinaisons possibles de lignes de Client et de Commande... Client Commande

43 18/06/2014© Robert Godin. Tous droits réservés.43 Jointure naturelle avec SELECT-FROM-WHERE n Produire les informations au sujet des Clients et de leurs Commandes Client.noClient, nomClient, noTéléphone, noCommande, dateCommande ( Client.noCliente = Commande.noClient (Client Commande))

44 18/06/2014© Robert Godin. Tous droits réservés.44 Jointure avec JOIN n Produire les informations au sujet des Clients et de leurs Commandes n Jointure- (si noms de colonnes de jointure sont différents) Client Commande

45 18/06/2014© Robert Godin. Tous droits réservés.45 Jointure de plusieurs tables n Sélectionner les nomClient des Clients qui ont commandé au moins un plant d'herbe à puce nomClient ( description = "Herbe à puce" (Client Commande LigneCommande Article))

46 18/06/2014© Robert Godin. Tous droits réservés.46 Formulations équivalentes, performance et indépendance des données n ~Algèbre relationnelle n Ordre quelconque des tables du FROM – la plupart du temps… n AND commutatif… n Processus d évaluation de requête

47 18/06/2014© Robert Godin. Tous droits réservés.47 Définition d'un alias (clause AS) n ~ renommer ( ) Laboratoire Exercices 1 d) e) f) h)

48 18/06/2014© Robert Godin. Tous droits réservés.48 Auto-jointure n Quels sont les Clients qui ont le même numéro de téléphone? Client.noClient, Client2.noClient, ( Client.noTéléphone = Client2.noTéléphone (Client Client2 (Client))) noClient, noClient2 (Client Client2(noClient2, nomClient2, noTéléphone) (Client))

49 18/06/2014© Robert Godin. Tous droits réservés.49 Jointure externe (OUTER JOIN) n Produire les informations au sujet des Clients et de leurs Commandes incluant les informations sur les Clients qui nont pas placé de Commande n Oracle – « + » après colonne pour inclure la valeur NULL Client = Commande

50 18/06/2014© Robert Godin. Tous droits réservés.50 Opérations ensemblistes (UNION, INTERSECT, EXCEPT) n Produire les noms et numéros de téléphone des Employés qui sont aussi des Clients de la pépinière Laboratoire Exercices 1 g) i) j)

51 18/06/2014© Robert Godin. Tous droits réservés.51 Expressions générales sur les colonnes n La liste des noArticle avec le prixUnitaire avant et après inclusion de la taxe de 15%

52 18/06/2014© Robert Godin. Tous droits réservés.52 Expressions (suite) n Produire le détail de chacun des Articles commandés la Commande #1 incluant le prix total avant et après la taxe de 15% pour chacun des Articles commandés

53 18/06/2014© Robert Godin. Tous droits réservés.53 Expression sur colonne du WHERE n Les Articles dont le prixUnitaire incluant la taxe de 15% est inférieur à $16.00

54 18/06/2014© Robert Godin. Tous droits réservés.54 Opérateurs n Conversions automatiques entre types compatibles

55 18/06/2014© Robert Godin. Tous droits réservés.55 Pseudo-colonnes n Les Commandes de la journée n CURRENT TIME n CURRENT TIMESTAMP – SYSDATE Oracle n CURRENT_USER (ou USER) n SESSION_USER

56 18/06/2014© Robert Godin. Tous droits réservés.56 Priorité en ordre décroissant

57 18/06/2014© Robert Godin. Tous droits réservés.57 Quelques fonctions SQL2 n POSITION(patron IN chaîne) n CHARACTER_LENGTH(chaîne) n OCTET_LENGTH (chaîne) n BIT_LENGTH(chaîne) n EXTRACT(champ FROM dateOuTime) n SUBSTRING (chaîne FROM indiceDébut FOR nombreCaractères) n UPPER | LOWER (chaîne) n TRIM ([LEADING|TRAILING|BOTH] caractère FROM chaîne) n CAST(expression AS type) n … n Voir documentation du SGBD

58 18/06/2014© Robert Godin. Tous droits réservés.58 Expressions de DATE Oracle

59 18/06/2014© Robert Godin. Tous droits réservés.59 Opérations sur DATE

60 18/06/2014© Robert Godin. Tous droits réservés.60 Expressions et conditions sur les valeurs nulles (NULL) n Arithmétique – opérande NULL => NULL n Comparaison (>, <, …) – opérande NULL => UNKNOWN

61 18/06/2014© Robert Godin. Tous droits réservés.61 NULL pour les nuls ? n Si x est NULL – UNKNOWN OR UNKNOWN = UNKNOWN n pas dans le résultat !

62 18/06/2014© Robert Godin. Tous droits réservés.62 Fonctions de groupe n Le nombre d'Articles différents à vendre ainsi que le prixUnitaire moyen des Articles

63 18/06/2014© Robert Godin. Tous droits réservés.63 suite

64 18/06/2014© Robert Godin. Tous droits réservés.64 Partition d'une table avec la clause GROUP BY n Produire le nombre de Commandes passées par chacun des Clients qui ont passé au moins une Commande

65 18/06/2014© Robert Godin. Tous droits réservés.65 Pour chacune des LigneCommande pour lesquelles au moins une Livraison a été effectuée, produire le noCommande et noArticle, la quantité totale livrée et le nombre de Livraisons effectuées Calcul de plusieurs agrégats à la fois avec CUBE et ROLLUP SQL:1999

66 18/06/2014© Robert Godin. Tous droits réservés.66 Clause HAVING n Produire le nombre de Commandes passées par chacun des Clients qui ont passé deux Commandes ou plus

67 18/06/2014© Robert Godin. Tous droits réservés.67 Produire le nombre de Commandes passées par chacun des Clients qui ont passé deux Commandes ou plus après le 02/06/2000

68 18/06/2014© Robert Godin. Tous droits réservés.68 Sélection par un CASE n Produire la quantité qui a été livrée pour l'Article #50 de la Commande #4

69 18/06/2014© Robert Godin. Tous droits réservés.69 Tri du résultat (ORDER BY) n Les Clients en ordre alphabétique du nom Laboratoire Exercices 1 q) s) t) v)

70 18/06/2014© Robert Godin. Tous droits réservés.70 SELECT imbriqué Opération élément de (IN) n Les Clients qui ont passé au moins une Commande Client Commande

71 18/06/2014© Robert Godin. Tous droits réservés.71 Ligne à plusieurs colonnes n Chercher les LigneCommandes pour lesquelles au moins une Livraison a été effectuée

72 18/06/2014© Robert Godin. Tous droits réservés.72 SELECT imbriqué qui retourne une ligne n Sélectionner les Commandes du Client Hugh Paycheck n Exception si plusieurs lignes retournées par SELECT imbriqué

73 18/06/2014© Robert Godin. Tous droits réservés.73 SELECT imbriqué corrélé n Produire les informations au sujet des Clients qui ont passé au moins une Commande Référence à une colonne non locale

74 18/06/2014© Robert Godin. Tous droits réservés.74 Test d ensemble vide (EXISTS) n Produire les informations au sujet des Clients qui ont passé au moins une Commande

75 18/06/2014© Robert Godin. Tous droits réservés.75 Test de double (UNIQUE) n Les Clients qui ont passé au moins deux Commandes

76 18/06/2014© Robert Godin. Tous droits réservés.76 Quantificateurs (ALL, SOME/ANY) n Commandes passées après la dernière Livraison (date ultérieure) n Commandes passées après au moins une des Livraisons

77 18/06/2014© Robert Godin. Tous droits réservés.77 Test d'inclusion entre deux tables et division n T 1 T 2

78 18/06/2014© Robert Godin. Tous droits réservés.78 Quelles sont les noCommande des Commandes qui incluent tous les Articles dont le prixUnitaire est $10.99 Lab Exercices 1 e) f) j) k) p) u) m)

79 18/06/2014© Robert Godin. Tous droits réservés.79 SELECT imbriqué dans le FROM n Produire les noClient et dateCommande des Commandes dont la dateCommande est supérieure au 05/07/2000 Laboratoire Exercices 2 a) b)

80 Clause WITH n Définition dune table temporaire pour une requête 18/06/2014© Robert Godin. Tous droits réservés.80 WITH LigneCommandeSansLivraison AS ((SELECT noCommande, noArticle FROM LigneCommande) EXCEPT (SELECTnoCommande, noArticle FROMDétailLivraison)) SELECT noCommande FROM LigneCommandeSansLivraison

81 WITH avec plusieurs tables temporaires 18/06/2014© Robert Godin. Tous droits réservés.81 WITH ArticleJamaisCommandé AS (SELECT noArticle, prixUnitaire FROM Article WHERE noArticle NOT IN (SELECT noArticle FROM LigneCommande)), PrixUnitaireMoyen AS (SELECT AVG(prixUnitaire) AS prixMoyen FROM Article), NombreDispendieuxNonCommandé AS (SELECT Count(*) AS nombre FROM ArticleJamaisCommandé WHERE prixUnitaire - 5 > (SELECT prixMoyen FROM PrixUnitaireMoyen)), NombrePrixModiqueNonCommandé AS (SELECT Count(*) AS nombre FROM ArticleJamaisCommandé WHERE prixUnitaire + 5 < (SELECT prixMoyen FROM PrixUnitaireMoyen)) SELECT D.nombre AS NombreDispendieux,C.nombre AS NombreModique FROM NombreDispendieuxNonCommandé D, NombrePrixModiqueNonCommandé C

82 18/06/2014© Robert Godin. Tous droits réservés.82 Récursivité en SQL:1999

83 18/06/2014© Robert Godin. Tous droits réservés.83 CONNECT BY Oracle n Chemins à partir de 1

84 18/06/2014© Robert Godin. Tous droits réservés Opérations de mise à jour des tables en SQL n Insert n Delete n Update

85 18/06/2014© Robert Godin. Tous droits réservés.85 Insertion dans une table (INSERT) n Insérer une nouvelle ligne dans la table Client n Changer l ordre de défaut

86 18/06/2014© Robert Godin. Tous droits réservés.86 Insertion d une partie des colonnes

87 18/06/2014© Robert Godin. Tous droits réservés.87 Insertion à partir d un SELECT n Produire les lignes de DétailLivraison pour la Livraison #106 à partir des LigneCommandes de la Commande #7

88 18/06/2014© Robert Godin. Tous droits réservés.88 Suppression de lignes (DELETE) n Supprimer toutes les lignes de la table Client n Supprimer le Client #70 de la table Client n Supprimer les Clients qui n'ont pas passé de Commande

89 Suppression avec TRUNCATE n Supprimer toutes les lignes de la table Client n Plus performant que DELETE n Outrepasse les mécanismes transactionnels normaux – ROLLBACK peut être interdit n Meilleure récupération despace 18/06/2014© Robert Godin. Tous droits réservés.89 TRUNCATE TABLE Client

90 18/06/2014© Robert Godin. Tous droits réservés.90 Modification de lignes (UPDATE) n Changer le noTéléphone du Client #10 pour (222) n Augmenter tous les prixUnitaires des Articles de 10% n Modification de plusieurs colonnes à la fois Laboratoire Exercices 1 x) y) z)

91 18/06/2014© Robert Godin. Tous droits réservés.91 Gestion des transactions en SQL n COMMIT WORK – confirme la transaction en cours n ROLLBACK WORK – annule la transaction en cours n Début de transaction implicite – début de session – fin de la précédente n Commande LDD provoque un COMMIT

92 18/06/2014© Robert Godin. Tous droits réservés.92 Session et transaction

93 18/06/2014© Robert Godin. Tous droits réservés Niveau externe du schéma en SQL n Gestion de la sécurité – GRANT n Tables virtuelles – VIEWS

94 18/06/2014© Robert Godin. Tous droits réservés.94 Sécurité en SQL (GRANT) Identification et authentification n Identification des utilisateurs – authorizationID n PUBLIC : tous les utilisateurs n Authentification – mot de passe, ou … n Oracle – Utilisateurs administrateurs créés à linstallation n SYS, SYSTEM, … – Pour créer dautres utilisateurs n CREATE USER authorizationID...

95 18/06/2014© Robert Godin. Tous droits réservés.95 Privilèges n privilège : n objet :

96 18/06/2014© Robert Godin. Tous droits réservés.96 Exemples

97 18/06/2014© Robert Godin. Tous droits réservés.97 Privilèges (suite) n Commandes LDD – propriétaire du schéma n Création d une VIEW sur T – SELECT sur T n FOREIGN KEY sur T – privilège REFERENCES sur T n SQL:1999 – ROLE = ensemble de privilèges, Oracle – nouveaux privilèges n TRIGGER ON TABLE nomTable n EXECUTE ON PROCEDURE/FUNCTION nomProcOuFunc n UNDER ON TYPE nomType

98 18/06/2014© Robert Godin. Tous droits réservés.98 Suppression de privilèges

99 18/06/2014© Robert Godin. Tous droits réservés.99 PARAMÉTRAGE DE LA SÉCURITÉ À LINSTALLATION DU SGBD n Isoler le SGBD sur une machine à part n Sécuriser le système dexploitation n Support dinstallation sûr ! n Éliminer les services non essentiels n Éliminer les utilisateurs pré-définis non essentiels n Configurer les autres utilisateurs n Configurer les mécanismes daudit

100 18/06/2014© Robert Godin. Tous droits réservés.100 ÉTABLISSEMENT DE LUTILISATEUR DUNE SESSION SQL n Agent SQL établit connexion avec serveur SQL – débute une session SQL n Contexte de session maintenu par serveur – identificateur d'utilisateur courant SQL et/ou de ROLE n pseudo-colonne CURRENT_USER (USER avec Oracle) et CURRENT ROLE – nom de schéma – nom de catalogue – zône de temps – ensemble de caractères n Établissement de lutilisateur SQL courant – à la connexion, par un mécanisme non normalisé – paramètres de l'opération SQL CONNECT – appel à une routine SQL avec privilèges de la routine n créateur de la routine n gestion par pile lors dune cascade dappels n Authentification proxy dOracle pour sécurité de bout en bout multitiers – session lègère de utilisateur x sur connexion pour utilisateur y

101 18/06/2014© Robert Godin. Tous droits réservés.101 MÉCANISMES DAUTHENTIFICATION n Non normalisé en SQL n Mot de passe n Authentification biométrique (e.g. par empreinte digitale, reconnaissance de visages, …) n Authentification par le système dexploitation n Certificat digital n Authentification par la couche réseau – e.g. Secure Sockets Layer (SSL) n Authentification centrale par un serveur dauthentification externe (Single Sign-On SSO) – e.g. serveur LDAP

102 18/06/2014© Robert Godin. Tous droits réservés.102 MENACES A LA SECURITE n Vol de mot de passe n Menaces sur réseau – interception de données n sniffer qui intercepte les paquets en transit – modification de données – usurpation didentité – …

103 18/06/2014© Robert Godin. Tous droits réservés.103 Mécanismes avancés n Cryptographie symétrique (clé privée) – Déchiffrer (cléSecrète, Chiffrer(cléSecrète, message)) = message – norme Data Encryption Standard (DES) n Cryptogtraphie asymétrique (clé publique) – Déchiffrer (cléPrivée, Chiffrer(cléPublique, message)) = message – système RSA (Rivest, Shamir et Adleman) n difficile de factoriser un grand nombre n Déchiffrer(cléPublique, Chiffrer(cléPrivée, message)) = message – employée dans signatures digitales et certificats numériques

104 18/06/2014© Robert Godin. Tous droits réservés.104 Oracle Advanced Security (OAS) n Plusieurs mécanismes dauthentification n Encryptage des données – package PL/SQL – clause ENCRYPT sur colonne n Identification/authentification unique – service dannuaire Oracle Internet Directory (OID) n Oracle Virtual Private Database – règles de sécurité complexes par API PL/SQL n Oracle Label Security – niveaux de sécurité assigné à des lignes individuelles et aux utilisateurs n e.g. public, secret, top secret, …

105 18/06/2014© Robert Godin. Tous droits réservés.105 Table virtuelle (VIEW)

106 18/06/2014© Robert Godin. Tous droits réservés.106 Implémentation des tables virtuelles n Résolution des vues par modification de requête

107 18/06/2014© Robert Godin. Tous droits réservés.107 Résolution des vues par matérialisation n Table stockée n Redondance n Maintenance de la cohérence n Meilleure performance du SELECT n Moins bonne performance des mises à jour n Entrepôts de données

108 18/06/2014© Robert Godin. Tous droits réservés.108 Mise à jour de tables virtuelles n SQL2 – une seule table – sans DISTINCT – colonnes simples – pas de SELECT imbriqué n SQL:1999 – spécification très complexe

109 18/06/2014© Robert Godin. Tous droits réservés.109 Exemple de mise à jour par modification de requête

110 18/06/2014© Robert Godin. Tous droits réservés.110 Problèmes de mise à jour d'une table virtuelle n Sémantique incohérente...

111 18/06/2014© Robert Godin. Tous droits réservés.111 Rejet de mise à jour incohérente avec WITH CHECK OPTION

112 18/06/2014© Robert Godin. Tous droits réservés.112 Hiérarchie de tables virtuelles

113 18/06/2014© Robert Godin. Tous droits réservés.113 Renommer les colonnes d'une VIEW N.B. Modification interdite

114 18/06/2014© Robert Godin. Tous droits réservés.114 Indépendance logique des données et encapsulation par les tables virtuelles n Catalogue (noArticle, description, prixUnitaire) n Inventaire (noArticle, quantitéEnStock)

115 18/06/2014© Robert Godin. Tous droits réservés.115 Sécurité par les tables virtuelles

116 18/06/2014© Robert Godin. Tous droits réservés Schéma interne n Non standardisé – organisation primaire de la table – organisations secondaires (INDEX)


Télécharger ppt "18/06/2014© Robert Godin. Tous droits réservés.1 4Le langage SQL n Structured Query Language n Norme établie pour SGBD relationnel n Partie LDD (DDL) –"

Présentations similaires


Annonces Google