Akoka-Wattiau 1 Initiation à SQL Akoka-Wattiau 2 SQL SQL • Langage de base de d

Akoka-Wattiau 1 Initiation à SQL Akoka-Wattiau 2 SQL SQL • Langage de base de données relationnelles • Développé chez IBM (1970-80) • Devenu une norme (ANSI/ISO) en 1986 • A la fois LDD (Langage de Définition de Données) et LMD (Langage de Manipulation de Données) • Toute interface SQL à un SGBD est une adaptation de la norme à ce SGBD • Utilisable en mode interactif comme dans un langage de programmation • Langage assertionnel (non procédural) : on décrit les caractéristiques des données recherchées et non le chemin d'accès • ici, ORACLE SQL versus norme SQL. Akoka-Wattiau 3 Les standards SQL • SQL8 • SQL89 • SQL92 ou SQL2 (3 niveaux : entrée / intermédiaire / plein) • SQL99 ou SQL3 Akoka-Wattiau 4 SQL ORACLE SQL ORACLE Définition des Données Définition des Données Akoka-Wattiau 5 Ce que décrit SQL • Niveaux : – Logique : tables domaines et attributs – Externe : vues et privilèges – Interne : rien mais tous les SGBD ont CREATE INDEX Akoka-Wattiau 6 Logique SQL • Environnement SQL – Catalogue C1 • Schéma – Table – 1 catalogue et 1 schéma par défaut • Oracle n’a pas intégré la notion de catalogue • La norme SQL intègre le concept de métabase mais les règles sont peu suivies par les règles des éditeurs de SGBD Akoka-Wattiau 7  permet de - créer, - modifier, - supprimer, - renommer,  les éléments du schéma d'une base de données : - les tables, - les vues, - les index. SQL ORACLE SQL ORACLE Définition des Données Définition des Données Akoka-Wattiau 8  ce sont les relations du schéma relationnel 1.1. 1.1. Création : Création : CREATE TABLE nomtable ( nomcol1 typecol1 [contraintecol1], nomcol2 typecol2 [contraintecol2], ..., contraintetable1, contraintetable2,...); 1. Les tables 1. Les tables Akoka-Wattiau 9 Exemple : Exemple : FOURNISSEUR (F#,FNOM,STATUT,VILLE) CREATE TABLE FOURNISSEUR (F# CHAR(5) NOT NULL UNIQUE, FNOM CHAR(20), STATUT NUMBER(3) DEFAULT 10, VILLE CHAR(15)); 1. Les tables 1. Les tables (suite) (suite) Akoka-Wattiau 10  caractères : caractères : CHAR ou VARCHAR au maximum 255 exemple : exemple : NOM CHAR (15)  numériques : numériques : NUMBER(précision,échelle) (norme : DECIMAL, REAL, FLOAT,INTEGER) exemple : exemple : NUMBER (8,2) 8 chiffres dont 2 après la virgule maximum Types de données Types de données Akoka-Wattiau 11  dates dates : : DATE * hors norme * format standard : DD-MON-YY * stocke : siècle, année, mois, jour, heure, minutes et secondes * fonctions de conversion de format avec masques  d'autres types hors norme : d'autres types hors norme : LONG, RAW * RAW binaire chaîne d'octet de longueur variable manipulée sous forme hexadécimale * LONG chaîne longue maximum 64 K 1 seule par table inutilisable dans les expressions, les prédicats et dans les tris Types de données Types de données (suite) (suite) Akoka-Wattiau 12 Données de grande taille (SQL3) : BLOB Binary Large Object CLOB Character Large Object  Types définis par l’ utilisateur (SQL3) : CREATE TYPE Types de données (s Types de données (su uite) ite) Akoka-Wattiau 13 1°) Colonnes obligatoires : nomcol type NOT NULL exemple : exemple : CREATE TABLE FOURNISSEUR(... , F# NOT NULL CONSTRAINT NN_CNT); * "CONSTRAINT nom" permet de nommer la contrainte 2°) Unicité d'une colonne : nomcol type UNIQUE exemple : exemple : F# NOT NULL UNIQUE * Il faut que la colonne soit NOT NULL * Il faut que la colonne ne soit pas une clé primaire Contraintes Contraintes Akoka-Wattiau 14 3°) Unicité de plusieurs colonnes : UNIQUE (nomcol1,nomcol2,...) exemple exemple : : UNIQUE (FNOM,VILLE) 4°) Clé primaire : nomcol type PRIMARY KEY ou PRIMARY KEY (nomcol1,nomcol2,..) * 1 seule par table, il faut que la colonne soit NOT NULL * sera comparée à la clé étrangère par la contrainte référentielle Contraintes Contraintes (suite) (suite) Akoka-Wattiau 15 5°) Contrainte référentielle : nomcol REFERENCES nomtable (nomcol) ou FOREIGN KEY (listecolonnes) REFERENCES table(listecolonnes) * la (ou les) colonne référencée doit être clé primaire ou colonne unique dans l'autre table. 6°) Contrainte sémantique : CHECK condition * compare les colonnes d'une même table exemple exemple : : CHECK (AGE BETWEEN 7 AND 77) Contraintes Contraintes (suite) (suite) Akoka-Wattiau 16 1.2. 1.2. Modification : Modification : ALTER TABLE nomtable modification; * permet de modifier la structure d'une table Modifications autorisées : a) ajouter une colonne : ADD nomcol type contrainte exemple : exemple : ALTER TABLE FOURNISSEUR ADD PAYS CHAR(15); 1. Les tables 1. Les tables (suite) (suite) Akoka-Wattiau 17 1.2. 1.2. Modification : Modification : b) ajouter une contrainte : ADD contrainte exemple : exemple : ALTER TABLE FOURNISSEUR ADD UNIQUE (FNOM,VILLE); c) modifier la définition d'une colonne : MODIFY nomcol modif – modifier la taille, le type (pour modifier le type ou réduire la taille, il faut que toute la colonne soit vide) – ajouter NOT NULL (s'il n'y a pas déjà des valeurs nulles) exemple : exemple : ALTER TABLE FOURNISSEUR MODIFY VILLE CHAR(20); 1. Les tables 1. Les tables (suite) (suite) Akoka-Wattiau 18 1.2. 1.2. Modification : Modification : d) supprimer des contraintes nommées : DROP CONSTRAINT nomcontrainte e) supprimer des colonnes : DROP nomcolonne 1. Les tables 1. Les tables (suite) (suite) Akoka-Wattiau 19 1.3. 1.3. Suppression : Suppression : DROP TABLE nomtable [RESTRICT|CASCADE]; exemple exemple : : DROP TABLE FOURNISSEUR; * on ne peut pas supprimer une table créée par un autre utilisateur sauf le DBA * DROP nomtable supprime aussi les index sur la table • DROP nomtable ne supprime pas les vues associées à cette table mais les rend bien sûr indisponibles • RESTRICT bloque si une FOREIGN KEY ou un trigger dépend de cette table • CASCADE supprime aussi tout ce qui dépend • RESTRICT par défaut 1. Les tables 1. Les tables (suite) (suite) Akoka-Wattiau 20 1.4. 1.4. Renommage Renommage : : RENAME anciennom TO nouveaunom; exemple exemple : : RENAME FOURNISSEUR TO F; 1. Les tables 1. Les tables (suite) (suite) Akoka-Wattiau 21 • ce sont des tables virtuelles • ce sont des questions stockées • permet le contrôle des accès • permet l'indépendance logique des données (plusieurs vues d'un même ensemble de données) • Matérialisation des vues dans le concept des entrepôts de données 2. Les vues 2. Les vues Akoka-Wattiau 22 2.1. 2.1. Création Création : : CREATE VIEW nomvue [alias1,alias2,...] AS question; * les alias permettent de renommer les colonnes de la table dans la vue exemple exemple : : Fournisseurs de Londres CREATE VIEW FOURN_LOND AS SELECT F#,FNOM,STATUT FROM FOURNISSEUR WHERE VILLE="Londres"; * pas de clause ORDER BY 2. Les vues 2. Les vues Akoka-Wattiau 23 2.2. 2.2. Suppression Suppression : DROP VIEW : DROP VIEW nomvue nomvue; ; exemple : exemple : DROP VIEW FOURN_LOND; 2. Les vues 2. Les vues (suite) (suite) Akoka-Wattiau 24 - En interrogation, on procède comme avec une table réelle : l'ordre SQL de création de la vue est ré-exécuté à chaque référence à la vue. - En mise à jour, la vue est utilisable uniquement si : * le SELECT définissant la vue ne comporte pas de jointure, ni de GROUP BY * toutes les colonnes de la table définies en NOT NULL sont dans la vue * les colonnes du SELECT ne sont pas des expressions - Si la vue doit être utilisée en mise à jour, on peut ajouter WITH CHECK OPTION à la fin de CREATE pour contrôler que les modifications respectent la définition de la vue Utilisation des vues Utilisation des vues ! Performances ! Akoka-Wattiau 25 * hors norme * pour accélérer l'accès aux données * pour garantir l'unicité de certaines données * peuvent être créés sur une ou plusieurs colonnes * les index sont créés par l'utilisateur (ou plutôt le DBA) mais ils n'ont pas à être référencés lors de la manipulation, c'est l'optimiseur qui se charge de les utiliser, le cas échéant * index ≉clé : index = physique / clé = logique * un index peut être unique ou non unique * un index permet d'accélérer les interrogations, mais peut pénaliser les mises à jour * structure interne : principalement B-trees 3. Les index 3. Les index Akoka-Wattiau 26 3.1. 3.1. Création : Création : CREATE [UNIQUE] INDEX nomindex ON table (nomcol1 [ASC/DESC], nomcol2 [ASC/DESC], ...); * UNIQUE : UNIQUE : 2 lignes de la table indexée ne peuvent pas prendre la même valeur pour le champ d'indexation * exemples : exemples : FOURNISSEUR(F#,...,VILLE) PRODUIT(P#,....) COMMANDE(F#,P#,DATE,...) CREATE UNIQUE INDEX I1 ON FOURNISSEUR(F#); CREATE INDEX I2 ON FOURNISSEUR(VILLE); non unique car plusieurs fournisseurs peuvent être localisés dans la même ville CREATE UNIQUE INDEX I3 ON PRODUIT(P#); CREATE INDEX I4 ON COMMANDE(F#,P#,DATE DESC); non unique car un même produit peut être commandé plusieurs fois le même jour (par différents clients) 3. Les index 3. Les index (suite) (suite) Akoka-Wattiau 27 3.2. 3.2. Suppression Suppression : DROP INDEX : DROP INDEX nomindex nomindex; ; exemple : exemple : DROP INDEX I4; 3. Les index 3. Les index (suite) (suite) Akoka-Wattiau 28 • en pratique, on crée des index sur : – uploads/Geographie/ initiation-a-sql.pdf

  • 12
  • 0
  • 0
Afficher les détails des licences
Licence et utilisation
Gratuit pour un usage personnel Attribution requise
Partager