Introduction au langage SQL pour Oracle
Introduction au langage SQL pour Oracle
Professeur : ASSALE Adjé Louis 1/33 INP-HB Professeur : ASSALE Adjé Louis 2/33 INP-HB
ORACLE LE LANGAGE SQL ORACLE LE LANGAGE SQL
• Le type LONG permet de stocker des chaînes de caractères d’une 1.1.5. Les gros objets
longueur maximale de 2 GO. Son utilisation est soumise à certaines
restrictions : Les gros objets (LOB, Large Objects) sont utilisés pour gérer des données de
- pas de spécification de longueur maximale gros volume non structurées telles que les images, les sons, la vidéo et le texte.
- une colonne de ce type ne peut figurer ni dans une expression, ni dans un On a deux catégories de LOB :
prédicat • LOB interne
- une table ne peut comporter qu’une seule colonne de ce type - le type CLOB permet de stocker des objets de type chaîne de
caractères tels que des documents. La taille maximale d’une
Les constantes chaînes de caractères sont entre quotte : exemple ′ASSALE′ colonne est de 4 Go.
- le type BLOB permet de stocker des objets en représentation
binaire : graphiques, vidéo ou son. La taille maximale d’une
1.1.2. Nombres colonne est de 4 Go.
• LOB externe
Les données numériques comprennent les nombres entiers, les nombres le type BFILE permet de stocker une liste de pointeurs vers des
décimaux et les nombres en virgule flottante. fichiers de données binaires extérieurs à la base de données. La
Le type NUMBER [(précision [,échelle])] permet de les représenter. taille maximale du fichier externe est de 4 Go.
• précision : nombre entier de chiffres significatifs, de 1 à 38 (38 par
défaut) ; Il est possible de définir plusieurs colonnes de type LOB pour une table.
• échelle : nombre de chiffres à droite de la marque décimale ; prend une Lors de la création d’une table, il est possible d’attribuer aux colonnes de type
valeur comprise entre –84 et +127. LOB des paramètres de stockage différents de ceux de la table.
Les ordres SQL ne sont pas capables de gérer directement des colonnes de type
LOB, il faut utiliser le package DBMS_LOB.
1.1.3. Date
Le type DATE permet de stocker des informations comprenant une date et/ou 1.1.6. Gestion des gros objets
une heure. La représentation externe est définie par le paramètre
NLS_DATE_FORMAT du fichier de configuration du SGBDR. Exemple : le • Initialisation des colonnes de type LOB
format DD-MON-YY donne ′03-FEV-99′.
Avant toute affectation de valeur à une colonne de type LOB, il faut l’initialiser
à vide. On utilise les fonctions EMPTY_CLOB() et EMPTY_BLOB,
1.1.4. Binaires respectivement pour les types CLOB et BLOB. Par contre le type BFILE peut
être initialisé à NULL.
• Le type RAW (n) permet de stocker des données de type binaire de Soit la table Personne (N_pers number, Nom varchar2(20), Description Clob,
longueur fixe de valeur maximale de 2 000 octets Photo Blob, Emprunte Bfile)
sous SQL*PLUS, les données sont affichées sous forme hexadécimale.
Une insertion ou une modification d’une donnée se fait donc an spécifiant Insert into Personne (145, ‘ASSALE Yvann’, empty_clob(), empty_blob(), Null) ;
sa valeur hexadécimale sous forme de chaîne de caractères.
Exemple : insert into Test(Coln_Raw) values (‘1B5A’) ; insère dans la • Modification des colonnes de type LOB
table Test la séquence ESC Z dont la valeur hexadécimale est 1B5A
• Le type LONG RAW est identique au type LONG pour les données La commande UPDATE modifie les valeurs des colonnes de type LOB. Pour un
binaires. colonne de type BFILE, on utilise la fonction BFILENAME(‘nom répertoire’,
‘nom fichier’) pour préciser le chemin d’accès aux fichiers.
Professeur : ASSALE Adjé Louis 3/33 INP-HB Professeur : ASSALE Adjé Louis 4/33 INP-HB
ORACLE LE LANGAGE SQL ORACLE LE LANGAGE SQL
Fonction Action
READ Permet de consulter une partie d’une colonne
SUBSTR Exécuter la fonction SUBSTR sur la colonne CLASSE
#Code_cl
INSTR Exécute la fonction INSTR sur la colonne Intitulé
GETLENGTH Donne la longueur (nombre d’octets) utilisée par la donnée Effectif
COMPARE Compare le contenu de deux colonnes
WRITE Ecrit une donnée dans une colonne à partir d’un octet donné
APPEND Ajoute des données à une colonne
ERASE Supprime tout ou partie des données d’une colonne Le schéma logique est le suivant :
TRIM Exécute la fonction RTRIM sur la colonne
COPY Copie tout ou partie d’une colonne dans une autre Etudiant (Matricule, Nom, Prénoms, Sexe, Code_cl)
Livre (Code_Liv, Titre, Auteur, Genre, Prix)
Classe (Code_cl, Intitulé, Effectif)
1.2 Schéma de la base de données Emprunt (Matricule, Code_Liv, Sortie, Retour)
Soit le Modèle Conceptuel de Données suivant : Les attributs soulignés font partir de la clé primaire, les attributs en italique sont
des clés étrangères.
Etudiant Livre
Matricule 0,N Emprunt 0,N Code_Liv 1.3 Création de Table et de Vue
Nom Sortie Titre
Prénoms Retour Auteur
Sexe Genre
Syntaxes :
Prix Create Table <nom de table>
1,1 (<attribut1><type attrribut1><Contraite1>,
∈ <attribut2><type attrribut2><Contraite2>,
1,N …
Classe
<attributN><type attrributN><ContraiteN>) ;
Code_cl
Intitulé Create View <nom de vue>
Effectif AS <requête de sélection>
<option de test> ;
Description :
Son équivalent selon le modèle Entity/Relationship de CASE est :
La contrainte introduit la notion d’intégrité de données (spécification de
contraintes).
Professeur : ASSALE Adjé Louis 5/33 INP-HB Professeur : ASSALE Adjé Louis 6/33 INP-HB
ORACLE LE LANGAGE SQL ORACLE LE LANGAGE SQL
Pour la requête de sélection voir Langage de manipulation chapitre • Les paramètres de gestion de l’espace sont :
sélection de tuples.
<Option de test> qui s’exprime par « with check option » est facultative. Paramètre Définition
Quand elle est spécifiée, elle impose les restrictions suivantes : PCTFREE Spécifie le pourcentage d’espace dans chaque bloc
• toute modification d’un tuple d’une vue est refusée si elle Oracle réservé pour les futures modifications de
entraîne une exclusion de la vue du tuple concerné. lignes. La valeur par défaut est 10 pour cent.
• Une insertion est refusée si le tuple introduit dans la vue ne PCTUSED Spécifie le pourcentage minimum d’espace utilisé que
satisfait pas au critère de sélection de celle-ci. Oracle maintient dans chaque de données. Un bloc
redevient candidat pour l’insertion de lignes quand son
Exemples : espace utilisé tombe en dessous de PCTUSED. La
Create table Etudiant (Matricule char(6) primary key, Nom char(20) Not valeur par défaut est 40 pour cent.
Null, Prénoms char(40)) ; INITRANS Indique le nombre d’entrées de transactions
initialement allouées dans l’entête du bloc.
Create view Roman MAXTRANS Indique le nombre maximum de transactions pouvant
AS Select Titre, Auteur, Genre From Livre Where Genre = ′roman′ ; accéder simultanément au bloc.
• Les paramètres de stockage sont :
Syntaxe de destruction de Table et Vue :
Drop Table <nom de table> ; Paramètre Description
Drop View <nom de vue> ; INITIAL Taille en octets du premier extent alloué à un
segment ; le défaut équivaut à cinq blocs de
• Création de table avec option de stockage données.
Oracle permet d’ajouter les options suivantes pour la gestion de l’espace de NEXT Taille en octets de l’extent suivant alloué à un
stockage : segment; le défaut équivaut à cinq blocs de
CREATE TABLE nom_table (…) données.
[PCTFREE pourcentage] [PCTUSED pourcentage] MAXETENTS Spécifie le nombre total d’extents. La valeur
[INITRANS nombre] [MAXTRANS nombre] minimale est 1. La valeur par défaut et la valeur
[TABLESPACE nom_tablespace] maximale dépendent de la taille du bloc de
[STORAGE ([INITIAL valeur] données.
[NEXT valeur] UNLIMITED spécifie que les extents doivent
[MINEXTENTS nombre] être automatiquement alloués au fur et à mesure
[MAXEXTENTS nombre] des besoins.
[PCTINCREASE pourcentage]) MINEXTENTS Nombre total d’extents à allouer lorsque le
] segment est créé ; la valeur par défaut est 1..
[CLUSTER nom_cluster] PCTINCREASE Pourcentage d’accroissement des extents suivant
[ENABLE | DISABLE contrainte] le dernier extent incrémental alloué ; la valeur par
[AS requête] ; défaut est 50%. NEXT = NEXT * (1 + nouveau
• Modification des paramètres d’allocation d’une table PCTINCREASE/100) dans le cas d’une
ALTER TABLE nom_table modification de PCTINCREASE.
[PCTFREE pourcentage] [PCTUSED pourcentage]
[INITRANS nombre] [MAXTRANS nombre]
[STORAGE paramètres_stockage] 1.4 Modification du schéma d’une table
[DROP contrainte]
Syntaxe :
Professeur : ASSALE Adjé Louis 7/33 INP-HB Professeur : ASSALE Adjé Louis 8/33 INP-HB
ORACLE LE LANGAGE SQL ORACLE LE LANGAGE SQL
Alter Table <nom de table> Add (<col1><type1><contrainte1>,…) ; - Etre une fonction type USER, SYSDATE, etc
Alter Table <nom de table> Modify (<col1><type1><contrainte1>,…) ; - Etre une séquence
Alter Table <nom de table> Drop (<col1>,…) ; (pour certains SGBD)
La valeur par défaut ne peut pas :
Description : - Utiliser les fonctions PL/SQL
Add, Modify et Drop permettent respectivement d’ajouter, de modifier et - Inclure une référence à d’autres colonnes.
de supprimer des colonnes d’une table.
Syntaxe et exemple
Exemple : Create Table Livre ( Code_Liv Char(6) Primary Key,…,
Alter Table Etudiant Add Sexe char(1) ; Prix number(9,0) Default 1000) ;
Professeur : ASSALE Adjé Louis 9/33 INP-HB Professeur : ASSALE Adjé Louis 10/33 INP-HB
ORACLE LE LANGAGE SQL ORACLE LE LANGAGE SQL
Professeur : ASSALE Adjé Louis 11/33 INP-HB Professeur : ASSALE Adjé Louis 12/33 INP-HB
ORACLE LE LANGAGE SQL ORACLE LE LANGAGE SQL
Vue Description
Quand une contrainte est transgressée, ORACLE insère l’adresse de chaque ALL_CONSTRAINTS Définition des contraintes sur les tables
ligne rejetée dans une table ayant la structure suivante : auxquelles l’utilisateur à accès
- le ROWID de la ligne rejetée, ALL_CONS_COLUMNS Définition des contraintes sur les colonnes des
- le nom du propriétaire de la table tables auxquelles l’utilisateur a accès.
- le nom de la table USER_CONSTRAINTS Définition des contraintes sur les tables de
- le nom de contrainte qui a rejeté la ligne l’utilisateur.
Exemple (pour SGBD Oracle) USER_CONS_COLUMNS Définition des contraintes sur les colonnes des
ALTER TABLE commandes ENABLE CONSTRAINT Paye tables de l’utilisateur.
EXCEPTIONS INTO rejets DBA_CONSTRAINTS Définition des contraintes sur toutes les tables
de la base.
Conclusion DBA_CONS_COLUMNS Définition des contraintes sur les colonnes de
toutes les tables de la base.
A l’aide des contraintes :
- dans Oracle, les vues suivantes permettent de visualiser les contraintes : 1.6.2. Clusters, Tables et Index
Professeur : ASSALE Adjé Louis 13/33 INP-HB Professeur : ASSALE Adjé Louis 14/33 INP-HB
ORACLE LE LANGAGE SQL ORACLE LE LANGAGE SQL
Les clusters correspondent à un mode de rangement (facultatif) des lignes des l’expression comme clé de hash.
tables d’une base de données. On appelle cluster un ensemble de tables HASHKEYS n Création d’un hash cluster ; n est le nombre de
regroupées parce qu’elles partagent une ou plusieurs colonnes (clé primaire et clé de hash.
référence) et qu’elles sont souvent utilisées ensemble dans les opérations de
jointure. • La création des tables qui composent le cluster ; ici, on spécifie le
cluster utilisé et les colonnes qui entrent dans la composition de la
Les lignes de plusieurs tables relatives à une même clé de cluster sont stockées clé du cluster :
dans le même bloc. Ce mode de rangement favorise les requêtes qui font CREATE TABLE …
intervenir ces tables simultanément. …
CLUSTER nom_cluster (colonne [, colonne] …)
La clé de cluster est constituée d’une ou plusieurs colonnes que les tables en où colonne est le nom de colonne de la table participant à la
cluster ont en commun. définition de la clé de cluster.
On distingue deux types de clusters : • Et éventuellement la création d’un index de cluster et/ou de table :
• Indexé : dans ce cas, un index de cluster doit être crée sur la clé de CREATE [UNIQUE | BITMAP] INDEX nom_index
cluster avant toute opération sur les tables du cluster. ON {nom_table (col [ASC | DESC] [, col [ASC | DESC]] …) |
• A hashage : dans ce cas, les lignes des tables sont stockées et CLUSTER nom_cluster
accessibles par l’intermédiaire de la fonction de hash. [INITRANS valeur] [MAXTRANS valeur]
[TABLESPACE nom_tablespace]
[Link]. Création de tables en cluster [STORAGE param_stockage]
[PCTFREE valeur]
La création de tables en cluster nécessite deux étapes : [NOSORT]
• La création du cluster :
CREATE CLUSTER nom_cluster UNIQUE : interdit que deux lignes aient la même valeur (n’est plus
(colonne [, colonne] …) utilisé avec Oracle8).
[PCTUSED valeur] [PCTFREE valeur] BITMAP : indique que l’index doit être créé en structure bitmap.
[SIZE valeur]
[INITRANS valeur] [MAXTRANS valeur] [Link]. Modification et suppression de clusters
[TABLESPACE nom_tablespace]
[STORAGE param_stockage] • La modification s’effectue par :
[INDEX] ALTER CLUSTER nom_cluster
[ [HASH IS expression] [HASHKEYS n] ] ; [PCTUSED valeur] [PCTFREE valeur]
[SIZE valeur]
les paramètres sont : [INITRANS valeur] [MAXTRANS valeur]
[STORAGE param_stockage]
Paramètre Effet
colonne Nom et type de colonne composant la clé de • Et la suppression par :
cluster. DROP CLUSTER nom_cluster
SIZE Espace moyen nécessaire pour enregistrer toutes [INCLUDING TABLES [CASCADE CONSTRAINTS]] ;
les lignes relatives à une même valeur de clé de
cluster. INCLUDING TABLES permet de supprimer les tables associées, sinon il
INDEX Création d’un cluster avec un index crée sur la faudrait les supprimer avant de supprimer le cluster.
clé de cluster (option par défaut). CASCADE CONSTRAINTS permet de supprimer toutes les contraintes
HASH IS Désactive la fonction de hash interne et définit d’intégrité qui font référence à la clé primaire des tables en cluster.
Professeur : ASSALE Adjé Louis 15/33 INP-HB Professeur : ASSALE Adjé Louis 16/33 INP-HB
ORACLE LE LANGAGE SQL ORACLE LE LANGAGE SQL
Lorsqu’un attribut nécessite un ensemble de valeurs uniques dans un DROP SEQUENCE [Schéma.]nom_séquence
environnement multi-utilisateurs, il est conseillé de faire générer ces valeurs en
associant une séquence à l’attribut. • Utilisation
• Création d’une définition de séquence Utilisé dans un ordre SELECT, INSERT ou UPDATE en tant que
pseudocolonne, par :
CREATE SEQUENCE [Schéma.]nom_séquence - nom_sé[Link] : qui génère à chaque référence la
[INCREMENT BY {1 | valeur}] valeur suivante (ou la première valeur lors de la première
[START WITH valeur] référence)
[{MAXVALUE valeur | NOMAXVALUE}] - nom_sé[Link] : donne la valeur courante du
[{MINVALUE valeur | NOMINVALUE}] numéro de séquence à condition qu’un numéro ait été généré par
[{CYCLE | NOCYCLE}] un appel à NEXTVAL au cours de la même session.
[{CACHE valeur | 20} | NOCACHE] ;
Exemple :
Paramètre Signification Create sequence num_dépot
nom_séquence Nom du numéro de séquence enregistré dans le Start with 10000
dictionnaire des données Incrment by 1
INCREMENT Pas d’incrémentation du numéro de séquence. Peut être Nomaxvalue
positif ou négatif. Nocycle ;
START WITH Valeur de départ du numéro de séquence. Elle est par
défaut égale à MINVALUE pour une séquence Insert intop Dépôt (Num) Values (num_dé[Link]) ;
ascendante et à MAXVALUE pour une séquence
descendante 2. Langage de Manipulation de Données (L.M.D.)
CYCLE Lorsque le numéro de séquence atteint la valeur
MAXVALUE (respectivement MINVALUE), il repart à
MINVALUE (respectivement MAXVALUE) 2.1 Insertion de tuples
NOMAXVALUE et Limites haute et basse par défaut (1 et 10E27 -1) compte
NOMINVALUE tenu du sens ascendant ou descendant de la génération. Syntaxe :
NOCYCLE Pas de reprise après MAXVALUE ou MINVALUE Insert Into <nom table ou vue>
CACHE Demande une prégénération de numéros de séquence de (<liste de colonnes>)
telle sorte qu’il n’y ait pas d’attente lors d’une demande Values (valeur1,…, valeurN) ;
de valeur. Par défaut, 20 valeurs soont stockées en Ou
mémoire. Insert Into <nom table ou vue>
(<liste de colonnes>)
• Modification/Suppression <requête de sélection> ;
Professeur : ASSALE Adjé Louis 17/33 INP-HB Professeur : ASSALE Adjé Louis 18/33 INP-HB
ORACLE LE LANGAGE SQL ORACLE LE LANGAGE SQL
Ou
Description : Update <nom de table ou vue>
La <liste de colonnes> peut être omise ; dans ce cas, chaque colonne du SET (col1, col2, …) = (SELECT attribut1, attribut2, …)
tuple de la table désignée sera affectée. Si la <liste de colonnes> est précisée, [Where <critère de sélection>] ;
chaque colonne choisie doit être séparée de la suivante par une virgule.
La liste valeur doit contenir autant de valeurs et de colonnes concernées L’ordre SELECT doit ramener une seule ligne.
par l’insertion.
Description :
Exemple : Chaque expression peut contenir des fonctions et combiner des
Insert Into Livre opérateurs.
Values (′100′, ′Ah les Hommes′, ′Biton′, ′Nouvelle′,1500) ; N.B. : beaucoup de SGBDR n’autorise pas de modification aux travers
des vues.
Professeur : ASSALE Adjé Louis 19/33 INP-HB Professeur : ASSALE Adjé Louis 20/33 INP-HB
ORACLE LE LANGAGE SQL ORACLE LE LANGAGE SQL
Le <critère de sélection> est une expression booléenne vraie ou fausse. Select L.Code_Liv, Titre, Auteur
L’évaluation de ce critère conditionne le choix ou le rejet du tuple sur lequel il From Livre L, Emprunt E
s’applique. Le <critère de sélection> de la clause Having s’applique aux Where L.Code_Liv = E.Code_Liv And Retour Is Null ;′
partitions créées par Group By. De ce fait la clause Having ne peut exister sans
la clause Group By. L’utilisation de requête SQL dans la clause Where (sous-requête) est
La <liste des tables> est composée de noms de relations ou de vues autorisée à condition de mettre la sous-requête entre parenthèse. Les sous-
séparés par des virgules. Chaque nom peut être associé à un synonyme ou alias requêtes sont utilisées dans les cas suivants :
(expl « Etudiant E , Livre L»).S’il y a plus d’une table dans la <liste de tables> • Avec les opérateurs de comparaison :
penser à une jointure en définissant le critère de jointure dans la clause Where. Select * From Livre Where Prix>(Select AVG(Prix) From Livre) ;
Le <critère d’ordre> est constitué de noms de colonnes de la <liste de • Avec l’opérateur d’ensemble IN :
colonnes> séparés par des virgules, ou d’une liste de numéro séparés par des Select * From Livre Where Code_liv In (Select Code_liv
virgules. Chaque numéro correspond au rang d’une colonne dans la <liste de From Emprunt) ;
colonnes> de la clause Select. A coté de chaque nom de colonne, l’on peut • Avec les contrôles ANY ou ALL :
ajouter la mention « DESC » pour un tri dans un ordre décroissant. Par défaut, Select * From Livre Where Prix >Any (Select Prix
c’est la mention « ASC » ordre croissant. From Livre Where Genre = ‘Roman’) ;
• Avec test d’existence :
Exemples : Select * From Livre Where Exists (Select * From Emprunt
En plus de opérateurs arithmétiques et logiques (+, -, *, /, OR, AND, Where Livre.Code_Liv = Emprunt.Code_Liv);
NOT, =, >=, >, <, <=, <>), les opérateurs particuliers suivants sont utilisés dans • Avec une liste de colonnes dans le Where:
le <critère de sélection> : … Where (col1, col2, …) = (SELECT col1, col2, …)
• Opérateur d’intervalle BETWEEN :
Select * From Livre Where Prix Between 8000 and 10000 ;
• Opérateur d’ensemble IN: 2.5 Notions de privilèges
Select * From Livre Where Prix In (8000, 9000, 10000) ;
• Opérateur de test de valeur nulle IS NULL : Un privilège est le droit attribué à un utilisateur d’exécuter un ensemble donné
Select * From Emprunt Where Retour Is Not Null ; d’ordres SQL ou d’accéder à certains objets de la base de données.
• Opérateur de ressemblance LIKE : Un privilège peut être attribué soit directement à un utilisateur, soit à un rôle. Le
le caractère ′_′ remplace n’importe quel caractère et ′%′ n’importe quel rôle sera ensuite attribué à un ou plusieurs utilisateurs.
séquence de caractères. On distingue deux types de privilèges :
Select * From Livre Where Titre Like ′% les%′;
Select * From Livre Where titre Like ′_A%′;
2.5.1. Privilèges objet
Les fonctions de calcul COUNT(), SUM(), AVG(), MIN() et MAX() peuvent
être utilisées dans la clause Select et dans la clause Having. Elles s’utilisent Ils donnent le droit d’accès à une table, une vue, une séquence, une procédure,
généralement conjointement avec la clause Group By : une fonction ou un package.
Select Sum(Prix) From Livre Where Genre = ′Roman′ ;
Select Auteur, Count(*), Min(Prix), Max(Prix) From Livre Liste des privilèges objet :
Group By Auteur Having Count(*)>=2 ;
Objet Procédure
La spécification d’un critère de jointure est nécessaire dans la clause Where Table Vue séquence fonction
lorsqu’on a plus de 2 tables dans la <liste de tables>. Elle s’effectue par une privilège: package
comparaison d’attributs de différentes tables : ALTER Oui Oui
EXECUTE Oui
Professeur : ASSALE Adjé Louis 21/33 INP-HB Professeur : ASSALE Adjé Louis 22/33 INP-HB
ORACLE LE LANGAGE SQL ORACLE LE LANGAGE SQL
Professeur : ASSALE Adjé Louis 23/33 INP-HB Professeur : ASSALE Adjé Louis 24/33 INP-HB
ORACLE LE LANGAGE SQL ORACLE LE LANGAGE SQL
[CASCADE CONSTRAINTS]
[FORCE] NOT IDENTFIED : Oracle ne vérifie pas les utilisateurs attachés à ce rôle
IDENTIFIED : Oracle vérifie les utilisateurs attachés à ce rôle
CASCADE CONSTRAINTS n’est utilisable qu’avec le privilège BY mot_de_passe : le mot de passe est obligatoire pour activer le rôle
REFERENCES et supprime les possibilités de contraintes référentielles EXTERNALLY : Oracle vérifie l’accès au rôle des utilisateurs se connectant au
accordées. travers du système d’exploitation.
FORCE n’est utilisable qu’avec le privilège EXECUTE pour les objets ayant
des dépendances sur des tables. Pour être effectif, un rôle doit être activé. La commande SET ROLE permet
d’activer ou de désactiver un rôle.
Professeur : ASSALE Adjé Louis 25/33 INP-HB Professeur : ASSALE Adjé Louis 26/33 INP-HB
ORACLE LE LANGAGE SQL ORACLE LE LANGAGE SQL
Les opérateurs addition (+), soustraction (-), multiplication (*) ou division (/)
2.8 Les transactions
permettent de définir une expression sur les nombres.
Les fonctions suivantes leurs sont applicables :
Syntaxe:
Commit Work ; ABS (n) la valeur absolue de n
Rollback Work ; CEIL (n) le plus petit auteur supérieur ou égal à n.
FLOOR (n) la partie entière de n.
Description : MOD (m, n) le reste de la division de m par n.
La transaction, ensemble de commandes, est une unité logique de POWER (m, n) n à la puissance n.
manipulation de données. La fin de la transaction spécifiée par « commit work » ROUND (n [, m]) n arrondi à un nombre à m décimal.
valide toutes les commandes, « rollback work » annule toutes les commandes. SIGN (n) -1 si n < 0
0 si n = 0
3. Spécificités pour ORACLE 1 si n > 0
Professeur : ASSALE Adjé Louis 27/33 INP-HB Professeur : ASSALE Adjé Louis 28/33 INP-HB
ORACLE LE LANGAGE SQL ORACLE LE LANGAGE SQL
SQRT (n) la racine carrée de n $ Le symbole monétaire de la langue utilisée précédera le premier
TRUNC (n [, m]) n tronqué à m décimal après le point décimal. Si m est chiffre significatif
< 0 la troncature se fait avant ce point décimal.
Le masque pour une date est de la forme : ′DD-MON-YY′ ′DD/MM/YY′
′[Link]′ ou une combinaison de caractères spécifiques.
3.1.3. Date
En plus des fonctions d’agrégat, AVG(), SUM(), MIN(), MAX(), COUNT(),
L’ajout d’une durée, exprimée en nombre de jours, à une date, s’effectue sous la Oracle offre : VARIANCE() pour calculer la variance et STDDEV pour calculer
forme : var_date +/- var_nombre. Le résultat est une date. l’écart type ou déviation standard.
L’obtention du nombre de jours séparant deux dates, sous la forme date2-date1 ;
le résultat est un nombre.
Les principales fonctions dates sont : 3.2 Traitement des structures arborescentes
ADD_MONTHS (Date, nombre) : retourne une date
MONTHS_BETWEEN (Date1, Date2) : retourne un nombre Il est possible de manipuler des structures de type liste ou arbre. Pour cela,
LAST_DAY (date) : renvoie la date du dernier jour du mois Oracle a introduit dans l’ordre SELECT après la clause WHERE la clause
correspondant à date. suivante : CONNECT BY condition [START WITH condition].
NEXT_DAY (date, nom_de_jour) : retourne la date du prochain jour de Il suffit d’introduire dans la table un attribut (clé du parent) représentant le lien
la semaine spécifié dans nom_de_jour. avec l’élément suivant ou précédent dans la liste ou dans l’arbre.
ROUND (date [, précision]) : arrondi la date selon la précision spécifiée
(sous forme de masque de date). La clause CONNECT BY condition définit le sens de la liaison. La condition
TRUNC (date [, précision]) : tronque la date à la précision spécifiée. s’exprime sous la forme :
SYSDATE : renvoie la date système Colonne1 = PRIOR colonne2
Ou PRIOR colonne1 = colonne2
Le mot clé PRIOR, associé à l’une ou l’autre colonnes, définit le sens de
3.1.4. Fonctions de conversion et d’agrégat parcours en indiquant la colonne utilisée comme critère de recherche à chaque
niveau.
Les principales fonctions de conversion sont : La condition peut contenir aussi un prédicat. Lorsque ce prédicat n’est pas
TO_CHAR ({date | nombre} [, masque]) : convertir une date ou un satisfait, le parcours de l’arbre s’arrête.
nombre en chaîne de caractères en fonction d’un masque.
TO_DATE (chaîne [, masque]) : convertir une chaîne en date en La clause START WITH condition permet d’indiquer la ligne à utiliser comme
fonction d’un masque. racine de l’arbre ou début de liste. En l’absence de cette clause, un arbre sera
TO_NUMBER (chaîne) : convertir une chaîne en nombre. construit à partir de chaque ligne satisfaisant le prédicat d’une clause WHERE
éventuelle.
Le masque pour un nombre est une chaîne de caractères combinant les
caractères suivants : Il est possible d’obtenir pour chaque ligne le niveau correspondant dans l’arbre
ou dans la liste. La première ligne sélectionnée est de niveau 1. Pour cela on
introduit la variable level dans la clause SELECT.
Caractère Effet
9 Représente un chiffre 4. EXERCICES
0 Représente un chiffre présent même si non significatif
. Point décimal apparent
V Définit la position de séparation entre partie entière et fractionnaire 4.1 TP1
, Une virgule apparaîtra à cet endroit
Professeur : ASSALE Adjé Louis 29/33 INP-HB Professeur : ASSALE Adjé Louis 30/33 INP-HB
ORACLE LE LANGAGE SQL ORACLE LE LANGAGE SQL
• Créer les utilisateurs, INGxx avec le mot de passe INGxx et INGyy avec • Créer le schéma suivant :
le mot de passe INGyy. Classe(Code_cl, Intitule, Effectif)
• attribuer les privilèges de connexion, de création et suppression de tables, Etudiant(Num, Nom, Sexe, Code_cl, Parrain)
vues, synonymes, procédures et déclencheurs à INGxx et les privilèges de Suit(Num, Mat, Note, date_ob)
connexion, modification de session, de création, suppression et Matiere(Mat, Libelle,)
modification de tables, vues synonymes, procédures et déclencheurs dans avec les contraintes de PRIMARY KEY pour toutes les clés primaires,
n’importe quel schéma à INGyy. FOREIGN KEY pour les clés étrangères (Code_cl dans Etudiant, Num
• Se connecter en tant que INGyy/INGyy dans Suit et Mat dans Suit), CHECK sur sexe pour valeur M ou F et
créer la table PERSONNE (Num, Nom, Fonction, Salaire) DEFAULT sur effectif pour valeur 0.
insérer quelques lignes (maximum 5 lignes avec une fonction au moins • Visualiser les informations sur les contraintes des différentes tables.
«Ingénieur »). • Tester les différentes contraintes :
• Se connecter en tant que system/manager et exécuter une commande - insérer les tuples (′BD′, ′Bases de Donnés′) et (′BD′, ′Génie Logiciel′)
SELECT sur la table PERSONNE de INGyy. dans la table Matiere. Que se passe-t-il ?
Tenter de donner à INGxx le privilège SELECT sur la table PERSONNE - désactiver la contrainte PRIMARY KEY de la table Matiere (si
de INGyy. Que se passe-t-il et pourquoi ? nécessaire les contraintes liées), insérer le deuxième tuple. Que constatez-
• Se connecter sous INGyy et donner à INGxx le privilège SELECT sur la vous ?
table PERSONNE. - activer la contrainte PRIMARY KEY de la table Matiere, que se passe-t-
• Vérifier à l’aide d’une vue du dictionnaire que le privilège a été il ?
correctement assigné. - rétablir la table
• Se connecter sous INGxx et vérifier que le privilège a été correctement - tester les contraintes CHECK et FOREIGN KEY.
attribué en utilisant une requête. • Insérer les informations suivantes :
• Se connecter sous INGyy et donner à INGxx la possibilité de mettre à jour
les colonnes Nom et Fonction de la table PERSONNE. Classe Matiere
• Se connecter sous INGxx et vérifier à l’aide de vues du dictionnaire de Code_cl Intitule Effectif Mat Libelle
données l’attribution des privilèges G1 Cracks BD Bases de Données
• Etant connecté sous INGxx, augmenter de 20% les salaires. Que se passe- G2 Soucieux IA Intelligence Artificielle
t-il et pourquoi ? changer la fonction Ingénieur en Technicien. Que se G3 Bosseurs GL Génie Logiciel
passe-t-il et pourquoi ? G4 Fainéants MM Multi-Média
• Etant connecté sous INGxx, créer une table ESSAI à deux colonnes dans G5 Cools SR Système et Réseaux
le schéma de INGyy. Que se passe-t-il et pourquoi ? MT Méthodologies
• Se connecter sous INGyy et créer la table ESSAI dans le schéma de
INGxx. Que se passe-t-il et pourquoi ?
Etudiant Suit
4.2 TP2 Num Nom Sexe Code_cl Parrain Num Mat Note Date_ob
• Se connecter sous system/manager, donner les privilèges système de 1 Assalé M G5 1 IA 80 12/01/98
création, modification et suppression de cluster à INGxx. 2 Adjé M G4 8 3 IA 75 06/08/99
• Se connecter sous INGxx/INGxx. 3 Koffi F G5 5 3 BD 80 23/05/00
• Créer un cluster indexé Mat_Etud avec Num comme clé de cluster. Placer 4 Konan M G2 2 2 BD 90 12/03/98
le cluster dans le tablespace USER_DATA et spécifier 2048 octets 5 Beugré F G1 2 2 SR 100 03/05/97
d’espace pour stocker les lignes apparentées. 6 Dadié M G1 1 5 GL 100 23/11/99
• Créer un Index i_clust_Etud pour ce cluster dans le tablespace USER1 7 Zié M G3 4 5 MM 50 26/10/98
Professeur : ASSALE Adjé Louis 31/33 INP-HB Professeur : ASSALE Adjé Louis 32/33 INP-HB
ORACLE LE LANGAGE SQL
8 Kouassi F G2 1 1 SR 80 15/02/00
9 Guidy F G4 6 9 MT 60 01/03/01
10 Bilé F G2 5 7 GL 45 13/07/98
11 Amon M G4 7 4 SR 90 19/06/97
12 Mel M G5 7 6 BD 60 13/04/99
6 GL 55 30/05/00
12 IA 95 14/08/01
10 BD 50 27/08/00
8 BD 65 31/07/97
11 SR 80 26/10/98
9 BD 50 18/06/99
7 SR 40 09/09/99
10 SR 35 07/07/97