6 Le langage SQL Structured Query Language n

  • Slides: 116
Download presentation
6 Le langage SQL Structured Query Language n Standard établi pour SGBD relationnel n

6 Le langage SQL Structured Query Language n Standard établi pour SGBD relationnel n Partie LDD n – – – n Conceptuel : CREATE SCHEMA, TABLE, . . . Externe : CREATE VIEW, GRANT, … Interne : CREATE INDEX, CLUSTER, . . . Partie LMD – 13/09/2021 SELECT, INSERT, DELETE, UPDATE © Robert Godin. Tous droits réservés. 1

Quelques liens n Standard SQL: – – n n n http: //www. jcc. com/SQLPages/jccs_sql.

Quelques liens n Standard SQL: – – n n n http: //www. jcc. com/SQLPages/jccs_sql. htm http: //www. cssinfo. com/ncitsgate. html Tutoriel et liens: http: //www. contrib. andrew. cmu. edu/~shadow/sql. html Syntaxe SQL 2 : http: //www. contrib. andrew. cmu. edu/~shadow/sql 2 bnf. aug 92. txt http: //www. sql-zone. com/ 13/09/2021 © Robert Godin. Tous droits réservés. 2

Origine n IBM Research (San Jose) – – n SQUARE – – n développement

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

Standard ANSI/ISO n SQL 86 – n SQL 89 (SQL, SQL 1) – n

Standard ANSI/ISO n SQL 86 – n SQL 89 (SQL, SQL 1) – n niveau minimal supporté SQL 92 (SQL 2) – – – n version préliminaire support accru de l ’intégrité trois niveaux : entrée (SQL 1+), intermédiaire, complet de plus en plus supporté SQL 99? (SQL 3) – – 13/09/2021 extension objet, TRIGGER, ROLE, SQL/PSM, . . . support très variable © Robert Godin. Tous droits réservés. 4

6. 1 Spécification schéma relationnel avec SQL (LDD SQL) n Niveau conceptuel – Schéma

6. 1 Spécification schéma relationnel avec SQL (LDD SQL) n Niveau conceptuel – Schéma des tables (TABLE) n – CREATE TABLE. Domaines (DOMAIN) n SQL 2 – Contraintes d'intégrité n 13/09/2021 intermédiaire : CREATE DOMAIN PRIMARY KEY, FOREIGN KEY, UNIQUE KEY, CHECK, ASSERTION, TRIGGER © Robert Godin. Tous droits réservés. 5

Spécification schéma relationnel avec SQL (suite) n Niveau externe – Vues (VIEW) n –

Spécification 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 – 13/09/2021 non standardisé (e. g. CREATE INDEX) © Robert Godin. Tous droits réservés. 6

6. 1. 1 Environnement, catalogue, schéma et utilisateur SQL n Cluster – 13/09/2021 ensemble

6. 1. 1 Environnement, catalogue, schéma et utilisateur SQL n Cluster – 13/09/2021 ensemble de catalogues accessibles à une session © Robert Godin. Tous droits réservés. 7

Dialecte Oracle n DATABASE ~ catalogue – n Nom du SCHEMA – n une

Dialecte Oracle n DATABASE ~ catalogue – n Nom du SCHEMA – n une instance Oracle monte une DATABASE à la fois = authorization. ID du propriétaire CLUSTER Oracle – – 13/09/2021 cluster de l ’environnement SQL 2 méthode d ’organisation de données par grappe © Robert Godin. Tous droits réservés. 8

6. 1. 2 Création du schéma d'une table en SQL (CREATE TABLE) n Forme

6. 1. 2 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 – 13/09/2021 clause non standardisée pour organisation primaire © Robert Godin. Tous droits réservés. 9

Syntaxe générale du CREATE TABLE n Syntaxe de spécification. De. Colonne n Syntaxe de

Syntaxe générale du CREATE TABLE n Syntaxe de spécification. De. Colonne n Syntaxe de spécification. De. Contrainte 13/09/2021 © Robert Godin. Tous droits réservés. 10

6. 1. 3 Types SQL n Numérique – INTEGER (ou INT) n n –

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

Types SQL n Numérique – REAL n n – Point flottant (précision non standardisée)

Types SQL n Numérique – REAL n n – Point flottant (précision non standardisée) Exemples : 3. 27 E-4, 24 E 5 DOUBLE PRECISION n n – Point flottant à double précision (non standardisée) Exemples : 3. 27265378426 E-4, 24 E 12 FLOAT(n) n Point flottant – n 13/09/2021 approximatif précision minimale est de n chiffres pour la mantisse Exemples : 3. 27 E-4, 24 E 5 © Robert Godin. Tous droits réservés. 12

Types SQL n Chaîne de caractères (VARYING et NATIONAL : SQL 2 intermédiaire) –

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

Types SQL n Date et temps (SQL 2 intermédiaire; précision p: SQL 2 complet)

Types SQL n Date et temps (SQL 2 intermédiaire; précision p: SQL 2 complet) – DATE n n – TIME[(p)] n n – n DATE + TIME Exemple : TIMESTAMP '1998 -08 -25 14: 04: 32. 25' INTERVAL n 13/09/2021 heure (2 chiffres), minutes (2 chiffres), secondes (2 +p chiffres) Exemple : TIME '14: 04: 32. 25' TIMESTAMP[(p)] n – année (quatre chiffres), mois (2 chiffres) et jour (2 chiffres) Exemple : DATE '1998 -08 -25' Représente un intervalle de temps. © Robert Godin. Tous droits réservés. 14

Types SQL n Booléen (SQL 2 complet) – BIT (n) n n – BIT

Types SQL n Booléen (SQL 2 complet) – BIT (n) n n – BIT VARYING (n) n n taille variable (max = n) Binaire long (SQL 3) – BINARY LARGE OBJECT (n) (BLOB(n)) n n n Vecteur de n bits. Exemples : B'00100110', X'9 F' n : taille en octets (ex: 1024, 5 K, 3 M, 2 G) Exemple : X ’ 52 CF 4 ’ (hexadecimal) Longue chaîne de caractère (SQL 3) – – 13/09/2021 CHARACTER LARGE OBJECT (n) (CLOB(n)) NATIONAL CHARACTER LARGE OBJECT (n) (NCLOB(n)) © Robert Godin. Tous droits réservés. 15

6. 1. 4 Suppression d’une table (DROP TABLE) n RESTRICT – rejet si élément

6. 1. 4 Suppression d’une table (DROP TABLE) n RESTRICT – rejet si élément dépendant existe n ex: n FOREIGN KEY CASCADE – 13/09/2021 supprime élément dépendant © Robert Godin. Tous droits réservés. 16

6. 1. 5 Modification du schéma de table (ALTER TABLE) n Syntaxe 13/09/2021 ©

6. 1. 5 Modification du schéma de table (ALTER TABLE) n Syntaxe 13/09/2021 © Robert Godin. Tous droits réservés. 17

6. 1. 6 Le dictionnaire de données SQL (INFORMATION_SCHEMA) Normalisé en SQL 2 n

6. 1. 6 Le dictionnaire de données SQL (INFORMATION_SCHEMA) Normalisé en SQL 2 n BD relationnelle n – n DEFINITION_SCHEMA – n contient les méta-données d ’un CATALOG tables INFORMATION_SCHEMA – 13/09/2021 VIEWS sur les tables du DEFINITION_SCHEMA © Robert Godin. Tous droits réservés. 18

Exemples de VIEWS du INFORMATION_SCHEMA n SCHEMATA – n DOMAINS – n contraintes CHECK

Exemples de VIEWS du INFORMATION_SCHEMA n SCHEMATA – n DOMAINS – n contraintes CHECK des TABLE créées par CURRENT_USER ASSERTIONS – n contraintes des TABLE créées par CURRENT_USER CHECK_CONSTRAINTS – n les colonnes des TABLE accessibles par CURRENT_USER ou PUBLIC TABLE_CONSTRAINTS – n les vues accessibles par CURRENT_USER ou PUBLIC COLUMNS – n les noms des tables accessibles par CURRENT_USER ou PUBLIC VIEWS – n les DOMAIN accessibles par CURRENT_USER ou PUBLIC TABLES – n les SCHEMA créés par CURRENT_USER ASSERTION créées par CURRENT_USER TABLE_PRIVILEGES – 13/09/2021 privilèges accordés par CURRENT_USER, à CURRENT_USER, ou à PUBLIC © Robert Godin. Tous droits réservés. 19

Dictionnaire de données Oracle avec SQL*plus 13/09/2021 © Robert Godin. Tous droits réservés. 20

Dictionnaire de données Oracle avec SQL*plus 13/09/2021 © Robert Godin. Tous droits réservés. 20

Recherche d ’une table du dictionnaire de données 13/09/2021 © Robert Godin. Tous droits

Recherche d ’une table du dictionnaire de données 13/09/2021 © Robert Godin. Tous droits réservés. 21

6. 2 Requêtes SQL (SELECT) n Syntaxe de requête. SQL n Syntaxe du select.

6. 2 Requêtes SQL (SELECT) n Syntaxe de requête. SQL n Syntaxe du select. SQL n . . . 13/09/2021 © Robert Godin. Tous droits réservés. 22

6. 2. 1 Projection d'une table et la clause DISTINCT n Produire les no.

6. 2. 1 Projection d'une table et la clause DISTINCT n Produire les no. Client et date. Commande de toutes les Commandes Multi-ensemble ! 13/09/2021 © Robert Godin. Tous droits réservés. 23

Clause DISTINCT n Produire les no. Client et date. Commande de toutes les Commandes

Clause DISTINCT n Produire les no. Client et date. Commande de toutes les Commandes 13/09/2021 no. Client, date. Commande (Commande) © Robert Godin. Tous droits réservés. 24

6. 2. 2 Sélection sur une table (WHERE) n Sélectionner les Articles dont le

6. 2. 2 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 prix. Unitaire < 20. 00 ET no. Article > 30 (Article) 13/09/2021 © Robert Godin. Tous droits réservés. 25

Syntaxe de condition. SQL n Syntaxe (incomplète) de la condition. Simple : 13/09/2021 ©

Syntaxe de condition. SQL n Syntaxe (incomplète) de la condition. Simple : 13/09/2021 © Robert Godin. Tous droits réservés. 26

Condition. SQL - BETWEEN n Sélectionner les Commandes du mois de juin de l'année

Condition. SQL - BETWEEN n Sélectionner les Commandes du mois de juin de l'année 2000 13/09/2021 © Robert Godin. Tous droits réservés. 27

Condition. SQL - IN n Sélectionner les Commandes du Client dont le no. Client

Condition. SQL - IN n Sélectionner les Commandes du Client dont le no. Client est 10 ou 40 ou 80 13/09/2021 © Robert Godin. Tous droits réservés. 28

Condition. SQL - LIKE n Sélectionner les Clients dont le nom. Client contient le

Condition. SQL - LIKE n Sélectionner les Clients dont le nom. Client contient le mot Le n 2 ième lettre du nom. Client = o et dernière lettre est un k 13/09/2021 © Robert Godin. Tous droits réservés. 29

Condition. SQL - IS NOT NULL n Sélectionner les Articles dont la description n'est

Condition. SQL - IS NOT NULL n Sélectionner les Articles dont la description n'est pas une valeur nulle 13/09/2021 © Robert Godin. Tous droits réservés. 30

6. 2. 3 Sélectionprojection sur une table n Produire les no. Client et date.

6. 2. 3 Sélectionprojection sur une table n Produire les no. Client et date. Commande des Commandes dont la date est supérieure au 05/07/2000 Laboratoire Créer le schéma de la BD Plein. De. Foin : Schema. Ventes. Plein. De. Foin. sql Exercices 1 a), b) , c) , n), o) 13/09/2021 © Robert Godin. Tous droits réservés. 31

6. 2. 4 Produit cartésien avec SELECT-FROM n Produire toutes les combinaisons possibles de

6. 2. 4 Produit cartésien avec SELECT-FROM n Produire toutes les combinaisons possibles de lignes de Client et de Commande. . . Client Commande 13/09/2021 © Robert Godin. Tous droits réservés. 32

6. 2. 5 Jointure naturelle avec SELECT-FROM-WHERE n Produire les informations au sujet des

6. 2. 5 Jointure naturelle avec SELECT-FROM-WHERE n Produire les informations au sujet des Clients et de leurs Commandes Client. no. Client, nom. Client, no. Téléphone, no. Commande, date. Commande ( Client. no. Cliente = Commande. no. Client (Client Commande)) 13/09/2021 © Robert Godin. Tous droits réservés. 33

6. 2. 6 Jointure avec JOIN (SQL 2) n Produire les informations au sujet

6. 2. 6 Jointure avec JOIN (SQL 2) n Produire les informations au sujet des Clients et de leurs Commandes Client Commande n Jointure- (si noms de colonnes de jointure sont différents) 13/09/2021 © Robert Godin. Tous droits réservés. 34

4. 2. 7 n Jointure de plusieurs tables Sélectionner les nom. Client des Clients

4. 2. 7 n Jointure de plusieurs tables Sélectionner les nom. Client des Clients qui ont commandé au moins un plant d'herbe à puce nom. Client ( description = “Herbe à puce ” (Client Commande Ligne. Commande Article)) 13/09/2021 © Robert Godin. Tous droits réservés. 35

6. 2. 8 Formulations équivalentes, performance et indépendance des données n ~Algèbre relationnelle n

6. 2. 8 Formulations équivalentes, performance et indépendance des données n ~Algèbre relationnelle n Ordre quelconque des tables du FROM – n n la plupart du temps… AND commutatif… Processus d ’évaluation de requête 13/09/2021 © Robert Godin. Tous droits réservés. 36

6. 2. 9 Définition d'un alias (clause AS) n ~ renommer ( ) Laboratoire

6. 2. 9 Définition d'un alias (clause AS) n ~ renommer ( ) Laboratoire Exercices 1 d) e) f) h) 13/09/2021 © Robert Godin. Tous droits réservés. 37

Auto-jointure n Quels sont les Clients qui ont le même numéro de téléphone? Client.

Auto-jointure n Quels sont les Clients qui ont le même numéro de téléphone? Client. no. Client, Client 2. no. Client, ( Client. no. Téléphone = Client 2. no. Téléphone (Client 2 (Client))) no. Client, no. Client 2 (Client 2(no. Client 2, nom. Client 2, no. Téléphone) (Client)) 13/09/2021 © Robert Godin. Tous droits réservés. 38

6. 2. 10 Jointure externe (OUTER JOIN) n Produire les informations au sujet des

6. 2. 10 Jointure externe (OUTER JOIN) n Produire les informations au sujet des Clients et de leurs Commandes incluant les informations sur les Clients qui n’ont pas placé de Commande Client = Commande n Oracle – 13/09/2021 « + » après colonne pour inclure la valeur NULL © Robert Godin. Tous droits réservés. 39

6. 2. 11 Opérations ensemblistes (UNION, INTERSECT, EXCEPT) n Produire les noms et numéros

6. 2. 11 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) 13/09/2021 © Robert Godin. Tous droits réservés. 40

6. 2. 12 Expressions générales sur les colonnes n La liste des no. Article

6. 2. 12 Expressions générales sur les colonnes n La liste des no. Article avec le prix. Unitaire avant et après inclusion de la taxe de 15% 13/09/2021 © Robert Godin. Tous droits réservés. 41

6. 2. 12 Expressions (suite) n Produire le détail de chacun des Articles commandés

6. 2. 12 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 13/09/2021 © Robert Godin. Tous droits réservés. 42

Expression sur colonne du WHERE n Les Articles dont le prix. Unitaire incluant la

Expression sur colonne du WHERE n Les Articles dont le prix. Unitaire incluant la taxe de 15% est inférieur à $16. 00 13/09/2021 © Robert Godin. Tous droits réservés. 43

Opérateurs n Conversions automatiques entre types compatibles 13/09/2021 © Robert Godin. Tous droits réservés.

Opérateurs n Conversions automatiques entre types compatibles 13/09/2021 © Robert Godin. Tous droits réservés. 44

Pseudo-colonnes n Les Commandes de la journée 13/09/2021 © Robert Godin. Tous droits réservés.

Pseudo-colonnes n Les Commandes de la journée 13/09/2021 © Robert Godin. Tous droits réservés. 45

Sélection par un CASE n Produire la quantité qui a été livrée pour l'Article

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

Quelques fonctions SQL 2 n POSITION(patron IN chaîne) CHARACTER_LENGTH(chaîne) OCTET_LENGTH (chaîne) BIT_LENGTH(chaîne) EXTRACT(champ FROM

Quelques fonctions SQL 2 n POSITION(patron IN chaîne) CHARACTER_LENGTH(chaîne) OCTET_LENGTH (chaîne) BIT_LENGTH(chaîne) EXTRACT(champ FROM date. Ou. Time) SUBSTRING (chaîne FROM indice. Début FOR nombre. Caractères) UPPER | LOWER (chaîne) TRIM ([LEADING|TRAILING|BOTH] caractère FROM chaîne) CAST(expression AS type) … n Voir documentation du SGBD n n n n n 13/09/2021 © Robert Godin. Tous droits réservés. 47

6. 2. 13 Expressions et conditions sur les valeurs nulles (NULL) n Arithmétique –

6. 2. 13 Expressions et conditions sur les valeurs nulles (NULL) n Arithmétique – n opérande NULL => NULL Comparaison (>, <, …) – 13/09/2021 opérande NULL => UNKNOWN © Robert Godin. Tous droits réservés. 48

NULL pour les nuls ? n Si x est NULL – 13/09/2021 UNKNOWN OR

NULL pour les nuls ? n Si x est NULL – 13/09/2021 UNKNOWN OR UNKNOWN = UNKNOWN n pas dans le résultat ! © Robert Godin. Tous droits réservés. 49

6. 2. 14 Fonctions de groupe n Le nombre d'Articles différents à vendre ainsi

6. 2. 14 Fonctions de groupe n Le nombre d'Articles différents à vendre ainsi que le prix. Unitaire moyen des Articles 13/09/2021 © Robert Godin. Tous droits réservés. 50

suite 13/09/2021 © Robert Godin. Tous droits réservés. 51

suite 13/09/2021 © Robert Godin. Tous droits réservés. 51

6. 2. 15 Partition d'une table avec la clause GROUP BY n Produire le

6. 2. 15 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 13/09/2021 © Robert Godin. Tous droits réservés. 52

Pour chacune des Ligne. Commande pour lesquelles au moins une Livraison a été effectuée,

Pour chacune des Ligne. Commande pour lesquelles au moins une Livraison a été effectuée, produire le no. Commande et no. Article, la quantité totale livrée et le nombre de Livraisons effectuées 13/09/2021 © Robert Godin. Tous droits réservés. 53

6. 2. 16 n Clause HAVING Produire le nombre de Commandes passées par chacun

6. 2. 16 n Clause HAVING Produire le nombre de Commandes passées par chacun des Clients qui ont passé deux Commandes ou plus 13/09/2021 © Robert Godin. Tous droits réservés. 54

Produire le nombre de Commandes passées par chacun des Clients qui ont passé deux

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

6. 2. 17 Tri du résultat (ORDER BY) n Les Clients en ordre alphabétique

6. 2. 17 Tri du résultat (ORDER BY) n Les Clients en ordre alphabétique du nom Laboratoire Exercices 1 q) s) t) v) 13/09/2021 © Robert Godin. Tous droits réservés. 56

6. 2. 18 SELECT imbriqué 6. 2. 18. 1 Opération élément de (IN) n

6. 2. 18 SELECT imbriqué 6. 2. 18. 1 Opération élément de (IN) n Les Clients qui ont passé au moins une Commande Client Commande 13/09/2021 © Robert Godin. Tous droits réservés. 57

Ligne à plusieurs colonnes n Chercher les Ligne. Commandes pour lesquelles au moins une

Ligne à plusieurs colonnes n Chercher les Ligne. Commandes pour lesquelles au moins une Livraison a été effectuée 13/09/2021 © Robert Godin. Tous droits réservés. 58

6. 2. 18. 2 SELECT imbriqué qui retourne une ligne n Sélectionner les Commandes

6. 2. 18. 2 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é 13/09/2021 © Robert Godin. Tous droits réservés. 59

6. 2. 18. 3 SELECT imbriqué corrélé n Produire les informations au sujet des

6. 2. 18. 3 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 13/09/2021 © Robert Godin. Tous droits réservés. 60

6. 2. 18. 4 Test d’ensemble vide (EXISTS) n Produire les informations au sujet

6. 2. 18. 4 Test d’ensemble vide (EXISTS) n Produire les informations au sujet des Clients qui ont passé au moins une Commande 13/09/2021 © Robert Godin. Tous droits réservés. 61

6. 2. 18. 5 Test de double (UNIQUE) n Vérifier s'il y a plus

6. 2. 18. 5 Test de double (UNIQUE) n Vérifier s'il y a plus d’un Client qui porte le même nom n Clients qui ont passé au moins deux Commandes 13/09/2021 © Robert Godin. Tous droits réservés. 62

6. 2. 18. 6 Quantificateurs (ALL, SOME/ANY) n Commandes passées après la dernière Livraison

6. 2. 18. 6 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 13/09/2021 © Robert Godin. Tous droits réservés. 63

6. 2. 18. 7 Test d'inclusion entre deux tables et division n T 1

6. 2. 18. 7 Test d'inclusion entre deux tables et division n T 1 T 2 13/09/2021 © Robert Godin. Tous droits réservés. 64

Quelles sont les no. Commande des Commandes qui incluent tous les Articles dont le

Quelles sont les no. Commande des Commandes qui incluent tous les Articles dont le prix. Unitaire est $10. 99 13/09/2021 © Robert Godin. Tous droits réservés. Lab Exercices 1 e) f) j) k) p) u) m) 65

6. 2. 18. 8 SELECT imbriqué dans le FROM n Produire les no. Client

6. 2. 18. 8 SELECT imbriqué dans le FROM n Produire les no. Client et date. Commande des Commandes dont la date. Commande est supérieure au 05/07/2000 Laboratoire Exercices 2 a) b) 13/09/2021 © Robert Godin. Tous droits réservés. 66

6. 2. 19 Récursivité en SQL 3 13/09/2021 © Robert Godin. Tous droits réservés.

6. 2. 19 Récursivité en SQL 3 13/09/2021 © Robert Godin. Tous droits réservés. 67

6. 3 Opérations de mise à jour des tables en SQL n. Insert n.

6. 3 Opérations de mise à jour des tables en SQL n. Insert n. Delete n. Update 13/09/2021 © Robert Godin. Tous droits réservés. 68

6. 3. 1 Insertion dans une table (INSERT) n Insérer une nouvelle ligne dans

6. 3. 1 Insertion dans une table (INSERT) n Insérer une nouvelle ligne dans la table Client n Changer l ’ordre de défaut 13/09/2021 © Robert Godin. Tous droits réservés. 69

Insertion d ’une partie des colonnes 13/09/2021 © Robert Godin. Tous droits réservés. 70

Insertion d ’une partie des colonnes 13/09/2021 © Robert Godin. Tous droits réservés. 70

Insertion à partir d ’un SELECT n Produire les lignes de Détail. Livraison pour

Insertion à partir d ’un SELECT n Produire les lignes de Détail. Livraison pour la Livraison #106 à partir des Ligne. Commandes de la Commande #7 13/09/2021 © Robert Godin. Tous droits réservés. 71

6. 3. 2 Suppression de lignes (DELETE) n Supprimer toutes lignes de la table

6. 3. 2 Suppression de lignes (DELETE) n Supprimer toutes lignes de la table Client n Supprimer le Client #70 de la table Client n Supprimer les Clients qui n'ont passé de Commande 13/09/2021 © Robert Godin. Tous droits réservés. 72

6. 3. 3 Modification de lignes (UPDATE) n Changer le no. Téléphone du Client

6. 3. 3 Modification de lignes (UPDATE) n Changer le no. Téléphone du Client #10 pour (222)222 -2222 n Augmenter tous les prix. Unitaires des Articles de 10% n Modification de plusieurs colonnes à la fois Laboratoire Exercices 1 x) y) z) 13/09/2021 © Robert Godin. Tous droits réservés. 73

6. 3. 4 Gestion des transactions en SQL n COMMIT WORK – n ROLLBACK

6. 3. 4 Gestion des transactions en SQL n COMMIT WORK – n ROLLBACK WORK – n annule la transaction en cours Début de transaction implicite – – n confirme la transaction en cours début de session fin de la précédente Commande LDD provoque un COMMIT 13/09/2021 © Robert Godin. Tous droits réservés. 74

6. 4 Niveau externe du schéma en SQL n Gestion de la sécurité –

6. 4 Niveau externe du schéma en SQL n Gestion de la sécurité – n GRANT Tables virtuelles – 13/09/2021 VIEWS © Robert Godin. Tous droits réservés. 75

6. 4. 1. 1 n Sécurité en SQL (GRANT) Identification et authentification Identification des

6. 4. 1. 1 n Sécurité en SQL (GRANT) Identification et authentification Identification des utilisateurs – authorization. ID n PUBLIC n Authentification – – n : tous les utilisateurs mot de passe … Oracle – SYS, SYSTEM n CREATE 13/09/2021 USER authorization. ID. . . © Robert Godin. Tous droits réservés. 76

6. 4. 1. 2 n privilège : n objet : 13/09/2021 Privilèges © Robert

6. 4. 1. 2 n privilège : n objet : 13/09/2021 Privilèges © Robert Godin. Tous droits réservés. 77

Exemples 13/09/2021 © Robert Godin. Tous droits réservés. 78

Exemples 13/09/2021 © Robert Godin. Tous droits réservés. 78

Privilèges (suite) n Commandes LDD – n Création d ’une VIEW sur T –

Privilèges (suite) n Commandes LDD – n Création d ’une VIEW sur T – n SELECT sur T FOREIGN KEY sur T – n propriétaire du schéma privilège REFERENCES sur T ROLE – – 13/09/2021 ensemble de privilèges SQL 3, Oracle © Robert Godin. Tous droits réservés. 79

6. 4. 1. 3 Suppression de privilèges 13/09/2021 © Robert Godin. Tous droits réservés.

6. 4. 1. 3 Suppression de privilèges 13/09/2021 © Robert Godin. Tous droits réservés. 80

6. 4. 2 Table virtuelle (VIEW) 13/09/2021 © Robert Godin. Tous droits réservés. 81

6. 4. 2 Table virtuelle (VIEW) 13/09/2021 © Robert Godin. Tous droits réservés. 81

6. 4. 2. 1 Implémentation des tables virtuelles n Résolution des vues par modification

6. 4. 2. 1 Implémentation des tables virtuelles n Résolution des vues par modification de requête 13/09/2021 © Robert Godin. Tous droits réservés. 82

Résolution des vues par matérialisation n Table stockée n Redondance n Maintenance de la

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 13/09/2021 © Robert Godin. Tous droits réservés. 83

6. 4. 2. 2 Mise à jour de tables virtuelles n Une seule table

6. 4. 2. 2 Mise à jour de tables virtuelles n Une seule table – – – 13/09/2021 sans DISTINCT colonnes simples pas de SELECT imbriqué © Robert Godin. Tous droits réservés. 84

Exemple de mise à jour par modification de requête 13/09/2021 © Robert Godin. Tous

Exemple de mise à jour par modification de requête 13/09/2021 © Robert Godin. Tous droits réservés. 85

6. 4. 2. 3 Problèmes de mise à jour d'une table virtuelle n Sémantique

6. 4. 2. 3 Problèmes de mise à jour d'une table virtuelle n Sémantique incohérente. . . 13/09/2021 © Robert Godin. Tous droits réservés. 86

Rejet de mise à jour incohérente avec WITH CHECK OPTION 13/09/2021 © Robert Godin.

Rejet de mise à jour incohérente avec WITH CHECK OPTION 13/09/2021 © Robert Godin. Tous droits réservés. 87

6. 4. 2. 4 Hiérarchie de tables virtuelles 13/09/2021 © Robert Godin. Tous droits

6. 4. 2. 4 Hiérarchie de tables virtuelles 13/09/2021 © Robert Godin. Tous droits réservés. 88

6. 4. 2. 5 Renommer les colonnes d'une VIEW N. B. Modification interdite 13/09/2021

6. 4. 2. 5 Renommer les colonnes d'une VIEW N. B. Modification interdite 13/09/2021 © Robert Godin. Tous droits réservés. 89

6. 4. 2. 6 Indépendance logique des données et encapsulation par les tables virtuelles

6. 4. 2. 6 Indépendance logique des données et encapsulation par les tables virtuelles n Catalogue prix. Unitaire) n Inventaire (no. Article, quantitéEn. Stock) 13/09/2021 (no. Article, © Robert Godin. Tous droits réservés. description, 90

6. 4. 2. 7 Sécurité par les tables virtuelles 13/09/2021 © Robert Godin. Tous

6. 4. 2. 7 Sécurité par les tables virtuelles 13/09/2021 © Robert Godin. Tous droits réservés. 91

6. 5 Schéma interne n Non standardisé – – n organisation primaire de la

6. 5 Schéma interne n Non standardisé – – n organisation primaire de la table organisations secondaires (INDEX) Voir Volume II 13/09/2021 © Robert Godin. Tous droits réservés. 92

6. 6 Interface entre SQL et un programme n SQL incomplet n Défaut d'impédance

6. 6 Interface entre SQL et un programme n SQL incomplet n Défaut d'impédance (impedance mismatch) 13/09/2021 – modèle de données BD – modèle de données du langage de programmation © Robert Godin. Tous droits réservés. 93

Librairie spécialisée (Call. Level Interface - SQL/CLI) n API spécifique au SGBD – n

Librairie spécialisée (Call. Level Interface - SQL/CLI) n API spécifique au SGBD – n n non portable Standard de facto ODBC – développé par Microsoft pour le C – aligné sur X/Open, ISO CLI – portable – pilote ODBC pour client/serveur – JDBC pour Java SQL 3 : SQL/CLI 13/09/2021 © Robert Godin. Tous droits réservés. 94

SQL enchâssé (Embedded SQL) Code SQL dans le source du langage hôte n Syntaxe

SQL enchâssé (Embedded SQL) Code SQL dans le source du langage hôte n Syntaxe spéciale n Pré-compilation n – n Oracle : pro*C/C++, pro*COBOL, …, JSQL Moins portable – – pré-compilateur spécifique au SGBD traduit en API du SGBD n JSQL 13/09/2021 ->API standard JDBC © Robert Godin. Tous droits réservés. 95

Extension procédurale à SQL (Persistent Stored Modules SQL/PSM) n SQL + – – n

Extension procédurale à SQL (Persistent Stored Modules SQL/PSM) n SQL + – – n structures de contrôle procédures, fonctions, packages support direct des types SQL pour les variables exécution au niveau serveur de BD Oracle – 13/09/2021 PL/SQL © Robert Godin. Tous droits réservés. 96

6. 6. 1 SQL enchâssé n Syntaxe n Insertion d'une ligne dans la table

6. 6. 1 SQL enchâssé n Syntaxe n Insertion d'une ligne dans la table Client 13/09/2021 © Robert Godin. Tous droits réservés. 97

Variables partagées n Déclaration n Utilisation de variables partagées n Vérification d ’exceptions avec

Variables partagées n Déclaration n Utilisation de variables partagées n Vérification d ’exceptions avec SQLSTATE 13/09/2021 © Robert Godin. Tous droits réservés. 98

6. 6. 1. 1 unique 13/09/2021 SELECT à ligne © Robert Godin. Tous droits

6. 6. 1. 1 unique 13/09/2021 SELECT à ligne © Robert Godin. Tous droits réservés. 99

6. 6. 1. 2 13/09/2021 Curseur SQL © Robert Godin. Tous droits réservés. 100

6. 6. 1. 2 13/09/2021 Curseur SQL © Robert Godin. Tous droits réservés. 100

6. 6. 1. 3 Mises à jour par curseur 13/09/2021 © Robert Godin. Tous

6. 6. 1. 3 Mises à jour par curseur 13/09/2021 © Robert Godin. Tous droits réservés. 101

6. 6. 1. 4 13/09/2021 SQL dynamique © Robert Godin. Tous droits réservés. 102

6. 6. 1. 4 13/09/2021 SQL dynamique © Robert Godin. Tous droits réservés. 102

6. 6. 2 Connexion (CONNECT) 13/09/2021 © Robert Godin. Tous droits réservés. 103

6. 6. 2 Connexion (CONNECT) 13/09/2021 © Robert Godin. Tous droits réservés. 103

6. 6. 2 Connexion (CONNECT) n Syntaxe du CONNECT n Exemple avec SQL enchâssé

6. 6. 2 Connexion (CONNECT) n Syntaxe du CONNECT n Exemple avec SQL enchâssé en C n Pour passer d ’un connexion à l ’autre n Pour terminer une connexion 13/09/2021 © Robert Godin. Tous droits réservés. 104

6. 6. 3 JDBC API standard pour JAVA n Ensemble de classes n Besoin

6. 6. 3 JDBC API standard pour JAVA n Ensemble de classes n Besoin d ’installer un pilote JDBC dans l ’environnement JAVA n 13/09/2021 © Robert Godin. Tous droits réservés. 105

6. 6. 3. 1 Architecture pour les pilotes JDBC 13/09/2021 © Robert Godin. Tous

6. 6. 3. 1 Architecture pour les pilotes JDBC 13/09/2021 © Robert Godin. Tous droits réservés. 106

6. 6. 3. 2 Etablissement d'une connection n Charger les pilotes JDBC d ’

6. 6. 3. 2 Etablissement d'une connection n Charger les pilotes JDBC d ’ Oracle – – N. B. La librairie des pilotes Oracle doit être accessible à la machine virtuelle Java. Voir http: //www. info. uqam. ca/~godin/livres. html Avec JDK 1. 1 (problème avec bloc statique) utiliser : n n Driver. Manager. register. Driver (new oracle. jdbc. driver. Oracle. Driver()); Établir une connexion avec le pilote OCI 8 pour un serveur Oracle local – 13/09/2021 OCI 8 est un pilote de type 2 © Robert Godin. Tous droits réservés. 107

6. 6. 3. 4 Exécution d'une opération de mise à jour (INSERT, DELETE, UPDATE)

6. 6. 3. 4 Exécution d'une opération de mise à jour (INSERT, DELETE, UPDATE) 13/09/2021 © Robert Godin. Tous droits réservés. 108

6. 6. 3. 5 SELECT 13/09/2021 Exécution d'un © Robert Godin. Tous droits réservés.

6. 6. 3. 5 SELECT 13/09/2021 Exécution d'un © Robert Godin. Tous droits réservés. 109

6. 6. 3. 6 Gestion des transactions Par défaut : auto-commit n Pour modifier

6. 6. 3. 6 Gestion des transactions Par défaut : auto-commit n Pour modifier n n Pour un commit explicite : n Pour un rollback : 13/09/2021 © Robert Godin. Tous droits réservés. 110

Result. Set scrollable, sensitive et updatable n n sous JDBC 2. 0 Paramètres à

Result. Set scrollable, sensitive et updatable n n sous JDBC 2. 0 Paramètres à la création du Statement – ex: une. Connection. create. Statement (Result. Set. TYPE_SCROLL_SENSITIVE, Result. Set. CONCUR_UPDATABLE) n n Scrollable – first(), last(), before. First(), after. Last(), next(), previous(), relative(n), absolute(n) Sensitive – n voit des mises à jour en cours Updatable – update. XXX(), update. Row(), delete. Row(), insert. Row(), move. To. Insert. Row() 13/09/2021 © Robert Godin. Tous droits réservés. 111

6. 6. 3. 7 Gestion des exceptions n Mécanisme try/catch de JAVA 13/09/2021 ©

6. 6. 3. 7 Gestion des exceptions n Mécanisme try/catch de JAVA 13/09/2021 © Robert Godin. Tous droits réservés. 112

Exemple d ’applette avec pilote JDBC type 4 (thin) 13/09/2021 © Robert Godin. Tous

Exemple d ’applette avec pilote JDBC type 4 (thin) 13/09/2021 © Robert Godin. Tous droits réservés. 113

6. 6. 3. 8 Compilation et exécutions multiples avec la classe Prepared. Statement n

6. 6. 3. 8 Compilation et exécutions multiples avec la classe Prepared. Statement n Compilation + exécution combinée au execute. Query n Compilation au prepare. Statement n Compilation avec paramètres 13/09/2021 © Robert Godin. Tous droits réservés. 114

Considérations client/serveur n n n Coût important de communication Limiter le nombre d ’appels

Considérations client/serveur n n n Coût important de communication Limiter le nombre d ’appels au serveur de BD Solutions – combiner plusieurs opérations SQL en une n – combiner plusieurs opérations dans une procédure/fonction (stored) exécutée au niveau serveur n n n si possible extension procédurale (SQL/PSM, Oracle PL/SQL) support d ’un langage hôte (JAVA, C , C++, COBOL, …) JDBC 2. 0 – Statement peut contenir un lot d ’énoncés (batch update) n 13/09/2021 un. Enoncé. add. Batch(), un. Enoncé. execute. Batch() © Robert Godin. Tous droits réservés. 115

Chercher le nom. Client et no. Téléphone d ’un Client n Eviter : n

Chercher le nom. Client et no. Téléphone d ’un Client n Eviter : n Utiliser plutôt : 13/09/2021 © Robert Godin. Tous droits réservés. 116