You are on page 1of 16
ORACLE et Ie langage SQL Syntaxe des commandes de base Univers Pau Sabater IUP Syttenes inalignts—3™ arn Module normatque Génrale Ination aux Bases do Universe Pau SABATIER UP S13éme année Bases de connbns 1 sPLvs {LL ACCEDERA OUTIL SQL*PLS cee nn 12. Cuanorn Vorur Mor De raSSt ORACLE nnn s 13. Qurrmex Loum sQL*P.ts. ———— 14 EXSCUTIN UNE REQUETE SOUS SQL "PLS ono Box! LANGAGE SOL us —_ = 2L. Le LANcAce De DeSCUTION DE DOSNEES(LDD) ener ne 211 Caen UNENOUVELLE TARE 6 212 Cubs une rane ApaRmRD Une Taste DOA ERSTE, 3 2.13. Moowrenesenia DUNE TABLE 3 214 Surmive UNE TABLE 3 215 RENoouS ONE TABLE ° 22, LELANGAGE DE MANIPULATION DE DONNEES (EMD) -—oononsnnonoenenn 8 22 DNSHRERUN TOME DANG INE TABLE 3 222 Mooinen is TUPLES DUNE ast in 223 Surpaneentes Tunes Dune rant, a 224 VADER oU AX\ULERLES MESES A JOUR 2 22.5. consouren UNE TAM B 226 OntaaTeURse FoNcTONS, = 16 227 FoncronsD'Aatbcars, 7 228 Consitrennuseuns Tastes 0 229, OrexaTions Exseetises 8 2B. Cowtmdem Accs AUX DONS wenn 2311. Acconbex es aorrsb scets Urea B 232, RETRAIT De Ros Acces. 0 ‘31. CaRActBnisTQUES GENERALE DUNE CONTRAINT eer eneneenee 10 3.11 NowerspgcancanionD une Contant 20 2 3, GESTION DES CONTRADITES een vena 31 3.2.2. ACTER, RERET SUPPINER UNE CONTRA 2 ————— | 2 332 CovmmanEsDENoN NLL UNHE ET BEL RBA ‘2 333 Cowman Denbexnce 2 53.4 CowTRANTED wrLicaTiON 28 uTRES On OS ee SLL Caisse oe 3s 4412 Visuaisee sci DUNE We 2s Univer Pau SABATIER TUP Sst annde Bases de donneas 413, Surman ove ver. 2s SQLs NONe 28 S21 cnonon 35 422 Surmnen none 2% 26 26 26 SS Lescuusrens 431 Geer ovcuisTin 452 Ieveonen tne TaNLZ ws UNCLUSTER Dans Trensemble de ce document ct pour différentier le role de chaque élément de la syntaxe du langage SQL, nous avons adopté les conventions suivantes + Les mots elés sont notés en gras et en majuscules: MOT_CLE = en pratique Trutilisation des majuscules/minuseules” n’a pas importance 1 + Les arguments ou parties variables d'une requéte dont l'utilisateur doit fournir la valeur, sont notées en Haligue : valeur + Les partes optionnelies d'une requéte, est~i-dre, les parties qui peuvent ‘u pas étre mentioringes sont signalées par des crochets: partie optionnelle] @ EN AUCUN CAS les [J ne font parte de la requete finale, + Les choix sont signalés par | choix | choix2 |... | choixN Univers Pu SABATIER 1UP S126 anne Bases ae connter ORACLE cst un Systéme de Gestion de Bases de Données (SGBD) présent sur le marché depuis plus de 10 ans et initialement basé sur modéle relationnel. Bien que les demigzes versions de ce logiciel (v Si et 9) proposent des extensions permettant d'évoluer vers le moda Felationnel-objet, nous n’utiliserons que les fonctionnalités permettant la gestion de bases de données relationnelles ORACLE propose un ensemble d'outils logiciels pour l'administration de bases de données aussi bien que pour le développement d'epplications. Dans le cadre de cet enseignement, nous n’utliserons seulement que loutil SQL* Plus + interpréteur de requétes formulées en langage SQL (Structured Query Language). 4. LOUTIL SQL*PLUS 1 permet dinterpréter de maniére interactive les commandes (ou requétes) formulées en langage SQL par l'utilisateur. Cet outil fonctionne en mode alphanumérique. 1.1. Accéder a Poutil SQL*Plus ‘Se connecter ila machine tolline. cit. fr % sqlplus ‘pour lancer SOL*Plus & partir du shell ‘SOL"Plus: Release 9.2.0.2.0- Production ‘©Copyright 1982, 2002, Oracle Corporation. Al rights reserved. Entrez lo nom utilsteur: votre_Jogin_unix Entrez le mot de passe : Connects a Oracle Enterprise Edlion Release 8 1.7.0.0 - Production With the Partitioning option Server Reloase 9.2.0..0 ~ Production SQL> prompt SOL*Plus, artente dune commande Unvert Paul sABATIR 1UP Sistre aie end een 1.2, Changer votre mot de passe ORACLE SQL> passw (Changing password for votre_login_unix ld password: clet New password: "= Retype new password: Password changed [La demande de changement peut étre automatique lors de la premigre connexion. Choisir un mot de passe que vous pourez retenir facilement !! 1 1.3. Quitter Poutil SQL*Plus SQL> host ou! sortie sans terminer la session SQL> exit ov quit sortie et fin de session Disconnected trom Oracles ‘ retour sous le shell courant 1.4, Exécuter une requéte sous SQL*Plus ‘SQL> requéte SaL. Saisie de la requéte @ exécuter Terminer par 3 pour déclencher linterprétation de la requéte courante pour terminer la requéte sans exécuter La requéte courante est mémorisée dans un buffer et peut faire objet de ‘commandes d’édition (ef §5. Annexe). 2. FONCTIONS DU LANGAGE SQL ‘SQL est un langage normalisé, non provédural et ensembliste qui se divise en 2 aroupes de commandes LDD : Langage de description de données + LMD : Langage de manipulation de données Unventé Pau SABATIR 1UP Ssémesrnde Bases de comées 2.4. Le langage de description de données (LDD) (Création et modification du sehéma de la base de données. Ces commandes ‘gissent sur le dietionnaire de données. CREATE pour erger tout élément du schéma conceptuel (table, vue, index, ..) ALTER Pour modifier tout élément dj existant DROP Pour supprimer un élément du schéma 2.4.1. Créer une nouvelle table Une table ORACLE correspond a la réalisation du schéma d'une relation 2.4.4.4. Syntaxe de la commande CREATE TABLE: ‘CREATE TABLE nom_tablo Catt typecatt_1 INOT NULL], atl2 ——type_att2 [NOT NULL}; atl type_att_N [NOT NULL] ); ‘Vi € [1.N, type_atti correspond au domaine de dei la donnée élémentaire correspondant & attribut att_|. tion (ou type) de La clause NOT NULL est facultative (ef § 33.2). 2.4.4.2. Principaux types 6lémentaires VARCHAR2(L) chaine de earactéres alphanumériques de longueur variable (L <= 4000), NUMBER valeur numérique (L fixé & 40) NUMBER(L) valeur numérique & L chiffres maximum NUMBER(LM) valeur numérique & L (<= 38) chiffies maximum dont M aprés le point décimal DATE valeur de type chaine de caractéres correspondant ‘une date exprimée sous la forme DD-MMM-YY (ex :01-FEB-95') LONG caine de caractéres de longueur variable pouvant Uniorate Pou SABATIER TUP S2éme annie Bases de coondos atteindre 2 GigaQetets => restriction : un seul atribut de ce type par table RAW(N) donnée binaire de N octets (N <= 2000) LONG RAW donnée binaire pouvantatteindre 2 GigaOetets ROWID hhexadécimale représentant 'adresse unique dun tuple Remarque : toute chaine de earactéres ainsi que toute valeur de type DATE doit étre mentionnée entre quotes. Ex : ‘23.JUN-88, ‘Base de données’ 2.4.4.3. Attribution dune valeur par défaut Lots de la définition d'un attribut, il est possible de lui assigner une valeur ar défaut en utilisant la clause DEFAULT. Cette valeur sera prise en ‘compte uniquement lorsque aucune autre valeur n’aura été spéeifige pour Pattribut correspondant lors de I'insertion d'un nouveau tuple. ait type_ett [NOT NULL] DEFAULT Remargue : La valeur donnée par défaut peut étre une constante ou une variable systéme (USER, SYSDATE, . ..). Son type doit étre compatible avec le type de Vattribut auquel elle est associée. En aucun cas elle ne peut référencer un autre attibut 2.4.4.4. Résultat de la commande CREATE TABLE Création d'une table selon le schéma spécifié. Cele-ci ne contient aucune données. La description de la table (ou schéma) est enregistrée dans le dictionnaire de données. 2.4.4.8. Signification de Ia clause NOT NULL CCause facultative qui, lorsqu’elle est mentionnée pour un attribut donné, interdit la présence de tuples pour lesquels la valeur de T'atribut concerné ne serait pas spécifiée (=> pas de valeur NULL), 2.1.1.6. Acces fla description (attributs, types, ..) une table ‘SQL > desc nom_table rivers Pau SABATIER 1UP Semen Besos de connor 2.4.2. Créer une table a partir d'une table déja existante CREATE TABLE nom_tablo AS SELECT att, att2, ., attN FROM table_initiale [WHERE conditions de sélection ] cf. § 2.2.5. pour la syntaxe d'une requéte de sélection SELECT Une nouvelle table est eréée, constituge des atributs mentionnés dans la clause SELECT (méme nom et méme type). Si Ia table iniiale contient ‘dgji des données, celles-ci seront importées dans la nouvelle table. 2.4.3. Modifier le schéma d'une table 2.4.3.4. Syntaxe de la commande ALTER TABLE ALTER TABLE nom_table ADD | MODIFY (nouvel_att type_nouvel_att/ [NOT NULL | NULL] ) Suivant la nature de opération a effectuer, on choisit le mot clé ‘ADD ou MODIFY. Si Pattribut est défini NOT NULL et que on veut supprimer cette ‘contrainte, il faut obligatoirement utiliser le mot elé NULL. 2.1.3.2. Ajout d'une nouvelle colenne : ADD Contsainte : Pour qu'un attribut NOT NULL soit ajouté, it faut impérativement que la table soit vide 2.4.3.3. Modification d'une colonne existante : MODIFY ‘Contraintes = pour enlever la clause NOT NULL, il faut explicitement ‘mentionner Ia clause NULL ; + pour ajouter Ia clause NOT NULL ou diminuer la taille d'un attribut, faut impérativement que la table soit vide ; + on peut augmenter sans contrainte la taille ’un attibut norte Paul SABATIER IUP Sse anne Bases de données 2.1.4. Supprimer une table 2.4.8.1. Syntaxe do la commande DROP TABLE DROP TABLE nom_table Résultat de la suppression d'une table (1) le contenu de la table est supprimé (2) Ia description de la table (ou schéma de la relation) est effacée du dietionnaire de données 2.4.5. Renommer une table RENAME nom_table TO nouveau_nom ; 2.2. Le langage de manipulation de données (LMD) Deux aspects : Mise jour et consultation des données INSERT pour insérer de nouveaux tuples dans une table UPDATE pour modifier des tuples dj existants DELETE Pour supprimer un ou plusieurs tuples d'une table SELECT pour consulter 1a base de données (tuples, partie de tuples, résultats de caleuls effectués sur les données de la base, .) 2.2.1. Insérer un tuple dans une table 2.2.1.4, Syntaxe de la commande INSERT INSERT INTO nom_table [ (allt, atl2,..., aN) ] VALUES (val_1, val_2, .,val_N) ; Sila liste des attibuts concemés par l'insertion n'est pas spéeifige, ce sont {ous les atributs dela table qui sont pris en compte. Si une souscliste d'attributs est spécifige, la valeur NULL est affectée ‘automatiquement aux attributs non mentionnés dans cette liste nseraté Pau SABATIER uP se ree Bases de dombes Les valeurs sont affectées suivant ordre des atributs mentionnés, Toute valeur doit étre compatible avec la definition de P'atribut (type, tale ct éventuellement clause NOT NULL) auquel elle est affectée. 22.41 Roquéte d'insertion paramétrée INSERT INTO nom_tabie Lat, att 2, att.N)) VALUES (Batt_1, &att2_2,.., &att_N) ; Spécitication d'un paramétre : &chaine_prompt Le & indique qu'il doit y avoir substitution entre la donnée saisie en réponse au prompt spécifié (Enter a value for chaine_prompt) et le paramétre désigné par &chaine_prompt. Le systéme demande une & une les valeurs a insérer. La requéte peut étre relancée avec la commande run (cf $5. Annexe) Attention a l'oubli des "' lors de la saisie de données de type chatines de cearactéres. = astuce : dans la requéte, spécifier les paramétres de type chaine ou DATE en intégrant directement les quotes ‘Bchaine_prompt’. ceci permet leur prise en compte automatique. 2.2.4.3. Combinaison de requétes INSERT et SELECT INSERT INTO nom_table [(att_1, att_2,.., alt_N)] VALUES SELECT .... FROM ....WHERE ...]; Les valeurs a insérer peuvent provenir d'autres tables, Celles-ci sont alors ‘obtenues au moyen d'une sous-requéte SELECT (cf. §2.2.5). Univers Pou SABATER IUP S36 anne ses de donne 2.2.2. Modifier les tuples d'une table la commande UPDATE A. Syntax: UPDATE nom_table SET atl_1_a_modifier= nouvelle_val_1 [, att_2-4 modifier = nowvelle_val_2 [WHERE condition ; La nouvelle valeur peut tre = une valeur simple ( valeur numérique, alphanumérique, date, »,ou NULL si cete valeur est autorisée) ; + lerésultar d'un calcul; + ou encore celui d'une requéte SELECT & condition toutefois qu'elle ne renvoie qu'une seule valeur. La clause WHERE est facultative. Si elle n'est pas spécifiée, tous les tuples de la table font objet de la mise a jour sinon, seuls ceux vérifant la ‘condition posée le sont. (cf. §2.2.5.2 pour la formulation des conditions dans la clause WHERE). 2.2.2.2. Requdte de mise & jour paramétrée Le méme mécanisme que celui présenté §2.2.1,2. peut etre utilisé pour effectuer plusieurs requétes de mises & jour similaires mais portant sur des valeurs différentes qui seront alors demandées 4 l'utilisateur. 2.2.3. Supprimer les tuples d'une table 2.2.3.4. Syntaxe de la commande DELETE DELETE FROM nom_tabie [WHERE condition niet Pau SABATIER 1UP St3dme année eee ae conntes Si la clause WHERE n’est pas spécifige, tous les tuples de la table cconcemée sont supprimés, sinon seuls ceux vérifiant la condition introduite dans la clause WHERE le sont. (cf. §2.2.5.2 pour la formulation des conditions dans la clause WHERE), Requéte de suppression paramétrée Le méme mécanisme que celui présenté §1.3.1.2. peut etre utilisé pour cffectuer plusieurs requétes de suppression similaires mais portant sur des valeurs différentes qui seront alors demandées a l'utilisateur. 2.2.41. Mises & jour différées Les mises & jour effectuées ne sont pas directement répercutées sur la base dde données. Elles sont apparentes mais non définitives tant qu’elles n'ont pas fait objet dune validation. COMMIT pour valider les mises i jour efTectuses depuis la demitre validation ROLLBACK pour annuler toutes les mises & jour effectuées depuis le dernier point de validation Remarque : toute opération de description de données (ef. §2.1) ainsi que la sortie normale de SQL*Plus entraine automatiquement exécution d'un ‘COMMIT. 2.2.4.2. Notion de transaction Crest un ensemble de requétes de mises a jour consécutives, comprises entre 2 points (début et Fin) et formant un tou indissoiable. connexion & out (SQL*PIus) fin de la transaction préeédente ind’une transaction + ordre explicite (COMMIT / ROLLBACK) + déconnexion de Moutil ou erreur systéme + aprés une requéte valide du L.D.D nwa Pau SABATIER (UP Sse argo Bases de orbs 2.2.4.3. Validation automatique On peut positionner une option (par défaut a OFF) qui permet de valider automatiquement chaque mise a jour. ‘SET AUTOCOMMIT ON 2.2.5. Consulter une table 2.2.5.1. Syntaxe de la commande SELECT sans criteres de sélection SELECT [ DISTINCT ] données_recherchées FROM nom_table Dans la clause SELECT on spécitie les données recherehées suivant une des symtaxes suivantes : pour désigner l'ensemble des attributs de la table att_1,... att_Npour désigner explicitement les atributs & sélectionner| expr_t,.. expr_N Pour spécifier une liste d'expressions & calculer (expressions arithmétiques ou fonctions d'agrégats) La clause DISTINCT permet de ne faire apparaitre les valeurs qu'une seule fois (élimination des doubles). ‘La clause FROM indique le nom de la table sur laquelle porte la sélection 2.2.5.2. Syntaxe de la commande SELECT avec critares de sélection SELECT [ DISTINCT ] donnéos_recherchées FROM nom_table WHERE condition_selection : La clause WHERE introduit une condition (ou prédicat). Celle-ci est constituée dune expression booléenne simple, ou bien Pune combinaison «expressions booléennes (négations, conjonctions, disjonctions). Seuls les ‘tuples (ou lignes) de la table vérifiant la condition sont sélectionnées, Uneraté Pal SABATIER 1UP Sime ane Bases ae coenses Expressions boolvennes = égalité = ou > différence > supérieur supérieur ou égal représente un caractére Queleonque. Ex: x lke 'B_le’ L’opérateur logique NOT peut étre utilisé pour abtenir Ia négation de chacune de ces expressions ( NOT IN, NOT BETWEEN, IS NOT NULL, ..) Univer Pau SABATIER 1UP Si 3éme anne Bases ce conntes 2.2.5.3. Consultation avec regroupement : clause GROUP BY. Cette clause s'utilise systématiquement avee une fonction d’agrégat (cf. 922. SELECT [DISTINCT] données_recherchées FROM nom_table [WHERE condition_selection } GROUP BY att_regroupement [HAVING condition_regroupement |; La clause GROUP BY permet deffectuer des regroupements en fonction de a valeur du ou des attributs spécifiés dans cette clause (attributs de sgroupement). Les données sélectionnées seront alors regroupées en autant e paquets que de valeurs possibles pour l'ensemble des attributs de sroupement. Sur chaque paquet sera ensuite effectué le calcul ‘correspondant ala fonction d’agrégat & appliquer Attention ‘la clause SELECT ne peut contenit QUE : ‘un ou plusieurs attributs dans la mesure ol il s‘agit d'un attribut de _groupement présent dans Ia clause GROUP BY ; * une fonction d'agrégat appliquée respectivement & chaque paquet dde données résultant du regroupement La clause HAVING est spécifique au GROUP BY. Elle permet de filtrer les regroupements en ne gardant que ceux qui vérifient la condition posée dans cete clause, 2.2.5.4. Consultation avec classement : clause ORDER BY SELECT [ DISTINCT ] données_recherchées FROM nom_table [WHERE condition_selection | [GROUP BY ORDER BY t classement [ DESC J; La clause ORDER BY permet d'introduire un ow plusieurs attributs de classement (16 maximum). Le résultat de la requéte SELECT sera alors fordonné suivant tes valeurs du ou des attributs indiqués. Les attributs rier Pau SABKTIER 1UP S1 3b anne Beses de conntes ‘mentionnés dans cette clause doivent étre cités également dans la clause SELECT, Loption DESC est spécifier pour chaque attribut de classement que Ion Souhaite ordonner de maniére décroissante plut6t que eroissante qui est option choisie par défaut (ASC), Dans une requéte SELECT seules les clauses SELECT et FROM sont obligatoires. Les clauses WHERE, GROUP BY ct ORDER BY dépendent du type de sélection que Pon veut faire 2.2.6. Opératours et Fonctions Ces opérateurs et fonctions permettent le calcul de valeurs & partir de celles enregistrées dans la base de données, qu’elles soient numériques, de type ccaractére ou date + Opérateurs arithmétiques unaires + nombre positif| + nombre négatit + Opérateurs arithmétiques binaires + addition + soustraction * multiplication 1 division + Opérateurs sur les chaines de caractires Il concaténation de 2 chaines de caractéres + Opérateurs applicables aux données de type DATE Valeur_date +/- nombre_de_jours + Prineipales fonctions mumériques ABS(n) valeur absolue de n POWER (m,n) ‘m puissance n SQRT(n) racine carrée de n ‘MmoD(m,n) reste de la division de m par n + Principates fonctions sur les chaines de caractores LOWER(chaine) chaine en minuscules UPPER (chaine) chaine en majuscules INITCAP(chaine) premiére letre en majuscules REPLACE(chaine, cht, ch2) replace toute occurrence de ccht dans la chaine par ch2 SUBSTR(chaine, pt, p2) extrait la partie de la chaine située entre les postions pt et p2 Unieraté Pau SABATIER UP Ststme année ‘Bases de comes + Principales fonctions sur les dates SYSDATE date du jour (renvoie la date systéme) NEXT_DAY(4, j) date du jour partir dela date d + Fonetions de conversion TO_NUMBER, TO_CHAR, TO_DATE permettent la conversion d'une caine en nombre ou en date, d'expressions en chaine de caractéres, + Fonetions diverses NVL(expr, val) renvoie val si expr NULL DECODE(expr, val, res) _renvoie res sila valeur de expr est val 2.2.7. Fonctions d’agrégats Une fonction d’agrégat s'applique aux groupes de données sélectionnées par la requéte. Si la clause GROUP BY est utilise, la fonction d'agrégat Stapplique & chacun des groupes résultant de V'application du GROUP BY, sinon elle sapplique au résultat du SELECT. Une fonction dagrégat ne peut figurer uniquement que dans la clause SELECT d'une requéte. Elle concerne la donnée, atribut ou expression, passée en paramétre (@xpr), AVG(2xpr) Moyenne des valeurs sélectionnées MAX(expr) Maximum MIN(expr) Minimum ‘SUM(expr) Somme STDDEV(expr) Ecart type VARIANCE (expr) Variance COUNT(expr) ‘Nombre de valeurs slectionnées ‘COUNT(’) Nombre de tuples résultat Remarque : toutes ces fonetions ignorent la valeur NULL 2.2.8. Consulter plusieurs tables Une opération de jointure permet de rassembler sur une méme ligne résutat, des informations provenant de plusicurs tables. Ces informations sont liges par une condition appelée condition ou prédicat de jointure. Universe Pau SABATIER UP St34mearnte ‘Bases ce domes 2.2.8.1. Forme procédurale SELECT [ DISTINCT ] données_recherchées FROM nom_table_1 WHERE att_jointure_1 IN ( SELECT att jointure_2 La requéte formulée fait intervenir plusieurs nivéaux d'imbrication de requétes SELECT (sous requétes de sélection imbriquées). 2.2.8.2. Forme rolationnelle ‘SELECT [ DISTINCT ] données_recherchées FROM table_t, table_2, .. table_N WHERE conditions_de_jointure ; Romargue : En cas dambiguité sur les noms d'attributs ou les noms de tables intervenant dans une méme requéte il est possible d'avoir recours : = au préfixage du nom d'un attribut par le nom de 1a table ‘auguel il appartient : nom_table.nom_att; + AP uilisation d'un alias pour renommer localement une table. 2.2.9. Opérations ensemblistes Ces_3 opérations permettent de faire union (UNION) , intersection (INTERSECT) ou Ia diffrence (MINUS) d'un ensemble de données obtenu per un premier SELECT avec un autre ensemble de données obtenu: par un second SELECT portant sur les mémes types de données que le premier SELECT... UNION | INTERSECT | MINUS SELECT... ; 2.3. Contréler "acces aux données I permet daccorder ou de retirer des priviléges afin de contrbler Paccés aux données. Univ Pau SABATIER IUP Siatme anne Bases de connor GRANT pour accorder le droit d'aceds & une table REVOKE pour retirer le droit d'accés accordé précédemment 2.3.4, Accorder des droits d’accés ou privileges Ltaccord de priviléges peut se faire & 2 niveaux : celui de 'administrateur du SGBD et celui du simple utilisateur. 2.3.1.4. Privilages accordés par Padministrateur GRANT liste_de_privléges TO liste_utiisateurs | PUBLIC [WITH ADMIN OPTION] ; Is concement entre autres : Ia génération d'un nouvel _utlisateur (CONNECT), Iautorisation de eréer des objets (RESOURCE), le rile @administrateur (DBA) .. 2.3.4.2. Priviléges accordés & un simple utilisateur GRANT priviléges_accordes ‘ON nom_tabie TO liste_utlisateurs | PUBLIC [WITH GRANT OPTION] ; Les droits d'accés sont gérés selon les principes suivants = (1) Putlisateur qui erée une table en est le proprstaire et par défaut le seul & pouvoir y aceéder 5 (2) seul le propriéiaire d'une table peut la supprimer ; (G) les autres uilisateurs ORACLE ne peuvent accéder & une table que si son propriiaire les y a autorisé Liste de priviléges pouvant érre accordés sur une table ALTER ‘modification du schéma de Ia table DELETE suppression de données dans la table UPDATE (*) ‘modification de données INSERT (*) ajout de données SELECT consultation de données INDEX création d'index sur la table REFERENCES (*) référence a un attribut dela table ALL tous les prviléges Univer Pau SABATIER IUP Si2ime sone condos (*) Possibilité de restreindre Je droit d'accés a la liste d'attributs ‘mentionnés (UPDATE(attt, att), .) PUBLIC indique que Ie privilége accordé concerne tous les utilsateurs Sinon, chaque utilisateur est désigné par son nom d'usager (fourn lors de la connexion & sqlplus) seul ou préeédé de OPS$ dans les anciennes versions Oracle, Pour désigner la table d'un autre usager, on utilise la notation pointée nom_usager.nom_table. Si la clause WITH GRANT OPTION est spécifige alors Putilisateur ayant regu les droits d'accés a également I'autorisation de les transmettre a d'autres utlisteurs. (Redistribution des droits de manigre higrarchique), 2.3.2. Retrait de droits d’accés REVOKE priviléges_retires ‘ON nom_table FROM liste_utiisateurs | PUBLIC ; 3. INTEGRITE DES DONNEES ORACLE et le langage SQL permettent de spécifier quatre types de contraintes d'intégrité Contrainte de domaine Contrainte d’enitéet de elé Contrainte de référence Contrainte d'application 3.1. Caractéristiques générales d'une contrainte 3.1.1. Nom et spécification d'une contrainte Chaque contrainte posséde un nom unique qui permet de I'identifier et se caractétise parla spécification de la contrainte & véritier, CONSTRAINT nom_contrainte specification_contrainte Unser Pau SABATIER 1UP S134me anne ‘ates de donner Le nom est donné (1)soit directement par Iutilisateur lors de la eréation de la contrainte nom_contrainte (2) soit par le systéme ORACLE si aucun nom n'est danné. Dans ce cas le ‘nom attibué par le systéme est composé de la chaine SYS_C et suivi d'un numéro : SYS_CO01S345 Ce nom est ensuite utilisé dans les messages d'erreurs, dans le dietionnaire de données, ainsi que pour les opérations de suppression, dactivation ou inhibition de la contrainte, Conseil: pour des questions de lisibilité des messages d'erreur affichés lorsque Ia contrainte n'est pas respectée, il est préférable de donner un nom significati & chaque contrainte créée (1) 3.1.2, Niveau de définition d'une contrainte ‘Chaque contrainte est rattachée au schéma d'une table, Suivant sa nature, elle peut concerer un ou plusieurs atributs de cette table. Elle peut étre détinie + soit au niveau d'un attribut lorsque la contrainte posée ne eonceme que celui-ei (NOT NULL, UNIQUE, ...); + soit au niveau de la table lorsque la contrainte conceme lensemble de la table eVou porte sur un ensemble d’attributs, 3.2. Gestion des contraintes Les contraintes sur les données d'une table peuvent étre spécfiges au moment de la création de la table (CREATE TABLE) ou bien ultérieurement par ‘modification du schéma de la table(ALTER TABLE) . 3.2.1. Ajouter une ou plusieurs contraintes ALTER TABLE niom_fable ADD (CONSTRAINT nom_contrainte specification_contrainte , [CONSTRAINT ) Les contraintes et leurs earaetéristiques principales sont stockées dans le lictionnaire de données. Univers Pau SABATIER UP S3éme anne Bases de donb 3.2.2. Activer, inhiber et supprimer une contrainte ALTER TABLE nom_table ENABLE|DISABLE|DROP CONSTRAINT nom_contrainte ; Lors de sa création, la contrainte est considérée parle systtme comme active. Pour modifier son statu, ilsuffit de choisir 'une des trois actions possibles : ENABLE (activer), DISABLE (désactiver) ou DROP (supprimer). 3.3. Contraintes intégrite 3.34. Contrainte de domaine Elle permet de contrdler le ype et la taille de la donnée. Ces caractéristiques sont spécifiées obligatoirement lors de la création de la table et de la Aéfinition de chacun des atributs, 3.3.2, Contraintes de non nullité, d'unicité et de clé primaire I s'agit de controler la présence ou non de valeurs mules, Uunicité d'une valeur d'attribut ou d'un groupe d'attributs, et de définir la clé primaire dune table, NOT NULL : obligation de donner une valeur pour tout attribut qui est défini avee cette clause (cf §2.1.1.5). Cette clause doit tre spécifige sur la méme ligne que la défintion de I'attribut (ef. § 2.1.1.1) et pourra étre annulée par NULL (cf. §2.1.3.1), UNIQUE : chaque tuple de Ia table doit avoir une valeur unique pour Vattribut concemé. Cette clause doit étre spécifige sur la méme ligne que la définition de I'attribut Remarguc : Ces 2 clauses s‘appliquent & un attibut et peuvent méme ére ‘combinées. Mais en aucun eas leur combinaison ne permet de définir une clé primaire. Il faut définir une contrainte spécifique PRIMARY KEY : clause definie au niveau de la table. Elle ne peut apparaitre 4u’une seule fois pour une table donnée. Une elé primaire peut étre composée «un ou de plusieurs attributs. L'ensemble de la elé primaire pourra alors étre référeneé dans une autre table comme clé éirangére. La liste des attributs

You might also like