1ère année cycle d’ingénieur
Ingénierie Informatique et Technologies Emergentes (2ITE)
Système de Gestion des Bases
de données relationnelle
(SGBDR)
Prof. HANINE Mohamed
Laboratoire Télécommunications, Réseaux et Informatique (TRI)
ENSA Eljadida, Université Chouaib Doukkali, Maroc
Email:
[email protected] Année Universitaire 2021/2022
Plan
• Introduction
• Notion de bases de données et de SGBD
• Systèmes d’information et bases de données
• Introduction aux modèles de systèmes de gestion de bases de données (SGBD) : hiérarchique, réseau, relationnel, objet
• Les bases de données relationnelles
• Le modèle relationnel : notions de domaine, relation, attribut, contraintes d'intégrité
• SGBD relationnels : fonctionnalités et structure – Le cas d’oracle
• Algèbre relationnelle
• Langage SQL (définition de structures, manipulation, contrôle d’accès)
• Manipulations des objets d’une BD :
• Tables
• Jointures
• vues
• Requêtes
• Index
Année Universitaire 2021/2022
Fonctions Mono-Ligne
Entrée Sortie
Fonction
arg 1 La fonction
exécute une action
arg 2
Valeur
résultante
arg n
Année Universitaire 2021/2022
Deux Types de Fonctions SQL
Fonctions
Fonctions Fonctions
mono-ligne multi-ligne
Année Universitaire 2021/2022
Fonctions Mono-Ligne
• Manipulent des éléments de données
• Acceptent des arguments et ramènent une valeur
• Agissent sur chacune des lignes rapportées
• Ramènent un seul résultat par ligne
• Peuvent modifier les types de données
• Peuvent être imbriquées
Année Universitaire 2021/2022
Fonctions Mono-Ligne
Caractère
Générale Numérique
Fonctions
Conversion Date
mono-ligne
• Agissent sur chacune des lignes rapportées
• Acceptent des arguments et ramènent une valeur par ligne
Année Universitaire 2021/2022
Fonctions Caractère
Fonction
caractère
Fonctions de conversion Fonctions de manipulation
majuscules/minuscules des caractères
LOWER CONCAT
UPPER SUBSTR
INITCAP LENGTH
INSTR...
Année Universitaire 2021/2022
Utilisation des Fonctions de
Conversion Majuscules/Minuscules
• Afficher le matricule, le nom et le numéro de département de l’employé Blake.
SQL> SELECT empno, ename, deptno
2 FROM emp
3 WHERE ename = 'blake';
no rows selected
SQL> SELECT empno, ename, deptno
2 FROM emp
3 WHERE LOWER(ename) = 'blake';
EMPNO ENAME DEPTNO
--------- ---------- ---------
7698 BLAKE 30 Année Universitaire 2021/2022
Utilisation des Fonctions de
Manipulation des Caractères
SQL> SELECT ename, CONCAT (ename, job), LENGTH(ename),
2 INSTR(ename, 'A')
3 FROM emp
4 WHERE SUBSTR(job,1,5) = 'SALES';
ENAME CONCAT(ENAME,JOB) LENGTH(ENAME) INSTR(ENAME,'A')
---------- ------------------- ------------- ----------------
MARTIN MARTINSALESMAN 6 2
ALLEN ALLENSALESMAN 5 1
TURNER TURNERSALESMAN 6 0
WARD WARDSALESMAN 4 2
Année Universitaire 2021/2022
Fonctions Numériques
• ROUND : Arrondit la valeur à la précision spécifiée
ROUND(45.926, 2) 45.93
• TRUNC : Tronque la valeur à la précision spécifiée
• TRUNC(45.926, 2) 45.92
• MOD : Ramène le reste d’une division
MOD(1600, 300) 100
Année Universitaire 2021/2022
Utilisation de la Fonction MOD
• Calculer le reste de la division salaire par commission pour
l’ensemble des employés ayant un poste de vendeur.
SQL> SELECT ename, sal, comm, MOD(sal, comm)
2 FROM emp
3 WHERE job = 'SALESMAN';
ENAME SAL COMM MOD(SAL,COMM)
---------- --------- --------- -------------
MARTIN 1250 1400 1250
ALLEN 1600 300 100
TURNER 1500 0 1500
WARD 1250 500 250
Année Universitaire 2021/2022
Utilisation des Dates
• Oracle stocke les dates dans un format numérique interne : siècle, année,
mois, jour, heures, minutes, secondes.
• Le format de date par défaut est DD-MON-YY.
• La fonction SYSDATE ramène la date et l’heure courante.
• DUAL est une table qu'on peut utiliser pour visualiser SYSDATE.
Année Universitaire 2021/2022
Utilisation d’Opérateurs
Arithmétiques avec les Dates
SQL> SELECT ename, (SYSDATE-hiredate)/7 WEEKS
2 FROM emp
3 WHERE deptno = 10;
ENAME WEEKS
---------- ---------
KING 830.93709
CLARK 853.93709
MILLER 821.36566
Année Universitaire 2021/2022
Fonctions Date
FONCTION DESCRIPTION EXEMPLE
Nombre de mois situés MONTHS_BETWEEN ('01-SEP-95‘
MONTHS_BETWEEN entre deux dates , '11-JAN-94')
19.6774194
Ajoute des mois ADD_MONTHS ('11-JAN-94',6)
ADD_MONTHS calendaires à une date '11-JUL-94'
Date du jour qui suit la NEXT_DAY('01-SEP-95', 'FRIDAY')
NEXT_DAY date spécifiée '08-SEP-95'
LAST_DAY Dernier jour du mois LAST_DAY('01-SEP-95‘)
'30-SEP-95'
SQL> SELECT empno, hiredate, MONTHS_BETWEEN(SYSDATE,hiredate)TENURE,
2 ADD_MONTHS(hiredate, 6) REVIEW,NEXT_DAY(hiredate, ’FRIDAY’),
3 LAST_DAY(hiredate)
4 FROM emp
5 WHERE MONTHS_BETWEEN (SYSDATE, hiredate)<200;
Année Universitaire 2021/2022
Fonctions de Conversion
Conversion
de types
de données
Conversion Conversion
de types de types
de données de données
implicite explicite
Année Universitaire 2021/2022
Conversion de Types de Données
Implicite
• Pour les affectations, Oracle effectue automatiquement les conversions suivantes:
De Vers
VARCHAR2 ou CHAR NUMBER
VARCHAR2 ou CHAR DATE
NUMBER VARCHAR2
DATE VARCHAR2
Année Universitaire 2021/2022
Conversion de Types de
Données Explicite
TO_NUMBER TO_DATE
NUMBER CHARACTER DATE
TO_CHAR TO_CHAR
Année Universitaire 2021/2022
Utilisation de la Fonction
TO_CHAR avec les Dates
TO_CHAR(date, 'fmt')
• Le modèle de format fmt:
• Doit être placé entre simples quotes et différencie les majuscules et
minuscules.
• Comporte un élément fm qui supprime les espaces de remplissage ou
les zéros de tête
SQL> SELECT empno, TO_CHAR(hiredate, ’MM/YY’) Month_Hired
2 FROM emp
3 WHERE ename = ’BLAKE’;
Année Universitaire 2021/2022
Utilisation de la Fonction
TO_CHAR avec les Dates
SQL> SELECT ename,
2 TO_CHAR(hiredate, 'fmDD Month YYYY') HIREDATE
3 FROM emp;
ENAME HIREDATE
---------- -----------------
KING 17 November 1981
BLAKE 1 May 1981
CLARK 9 June 1981
JONES 2 April 1981
MARTIN 28 September 1981
ALLEN 20 February 1981
...
14 rows selected.
Année Universitaire 2021/2022
Afficher des Données
Issues de Plusieurs Tables
Année Universitaire 2021/2022
Données sur plusieurs tables
• Afficher les colonnes de plusieurs tables ( jointure )
Année Universitaire 2021/2022
Qu'est-ce qu'une Jointure ?
Une jointure sert à extraire des données de plusieurs tables.
SELECT table1.column, table2.column
FROM table1, table2
WHERE table1.column1 = table2.column2;
• Ecrivez la condition de jointure dans la clause WHERE.
• Placez le nom de la table avant le nom de la colonne lorsque celui-ci
figure dans plusieurs tables.
Année Universitaire 2021/2022
Produit Cartésien
• Un produit cartésien de deux tables est la combinaison de toutes les lignes de la
première table avec toutes les lignes de la deuxième table
• Un produit cartésien est obtenu Lorsqu'une condition de jointure n'est pas valide
ou est totalement omise
• Un produit cartésien tend à générer un grand nombre de lignes et le résultat est
rarement exploitable.
• Les produits cartésiens sont utiles pour certains tests lorsque vous devez générer
un grand nombre de lignes afin de simuler une quantité importante de données
Année Universitaire 2021/2022
Produit Cartésien
Année Universitaire 2021/2022
Produit Cartésien
• On obtient un produit cartésien lorsque :
• Une condition de jointure est omise
• Une condition de jointure est incorrecte
• Pour éviter un produit cartésien, toujours insérer une
condition de jointure correcte dans la clause WHERE.
Année Universitaire 2021/2022
Types de jointure
• Il existe plusieurs types de jointure:
1. Jointure naturelle (Equijointure)
2. Clause USING
3. Jointure croisée
4. Jointures externes complète ( gauche ou droite )
Année Universitaire 2021/2022
Jointure naturelle
• Utiliser la clause NATURAL JOIN.
• Cette clause se base sur les colonnes des deux tables portant le même nom.
• Elle sélectionne les lignes des deux tables dont les valeurs sont identiques
dans toutes les colonnes qui correspondent.
• Si les colonnes portant le même nom présentent des types de donnés
différents, une erreur est renvoyée.
Année Universitaire 2021/2022
Le schéma de la base Employée
Année Universitaire 2021/2022
Jointure Naturelle
• La table LOCATIONS est jointe à la table DEPARTMENT par la colonne
LOCATION_ID, qui est la seule colonne portant le même nom dans les
deux tables.
Année Universitaire 2021/2022
Qu'est-ce qu'une Equijointure ?
EMP DEPT
EMPNO ENAME DEPTNO DEPTNO DNAME LOC
------ ------- ------- ------- ---------- --------
7839 KING 10 10 ACCOUNTING NEW YORK
7698 BLAKE 30 30 SALES CHICAGO
7782 CLARK 10 10 ACCOUNTING NEW YORK
7566 JONES 20 20 RESEARCH DALLAS
7654 MARTIN 30 30 SALES CHICAGO
7499 ALLEN 30 30 SALES CHICAGO
7844 TURNER 30 30 SALES CHICAGO
7900 JAMES 30 30 SALES CHICAGO
7521 WARD 30 30 SALES CHICAGO
7902 FORD 20 20 RESEARCH DALLAS
7369 SMITH 20 20 RESEARCH DALLAS
... ...
14 rows selected. 14 rows selected.
Clé étrangère Clé primaire
Année Universitaire 2021/2022
Extraction d'Enregistrements
avec les Equijointures
SQL> SELECT emp.empno, emp.ename, emp.deptno,
2 dept.deptno, dept.loc
3 FROM emp, dept
4 WHERE emp.deptno=dept.deptno;
EMPNO ENAME DEPTNO DEPTNO LOC
----- ------ ------ ------ ---------
7839 KING 10 10 NEW YORK
7698 BLAKE 30 30 CHICAGO
7782 CLARK 10 10 NEW YORK
7566 JONES 20 20 DALLAS
...
14 rows selected.
Année Universitaire 2021/2022
Jointure avec USING
• Si plusieurs colonnes portent le même nom, la clause NATURAL JOIN
peut être modifiée avec la clause USING.
• Cette clause permet de designer les colonnes qui doivent être utilisées
pour une équijointure.
• Il faut pas utilisé des alias dans les tables de référence
Année Universitaire 2021/2022
Jointure avec USING
Jointure avec USING
Différencier les noms de colonne
• Utiliser les préfixes avant les noms de colonnes pour différencier les noms
de colonnes présent dans plusieurs tables.
• Utiliser des alias de colonnes pour distinguer les colonnes qui présentent
des noms identiques, mais qui résident dans des tables différentes
• N’utiliser pas des alias sur les colonnes identifiées dans la clause USING
et indiquées ailleurs dans l’instruction SQL
Utilisation d'Alias de Table
• Simplifiez les requêtes avec les alias de table.
SQL> SELECT emp.empno, emp.ename, emp.deptno,
2 dept.deptno, dept.loc
3 FROM emp, dept
4 WHERE emp.deptno=dept.deptno;
SQL> SELECT e.empno, e.ename, e.deptno,
2 d.deptno, d.loc
3 FROM emp e, dept d
4 WHERE e.deptno=d.deptno;
Non-Equijointures
EMP SALGRADE
EMPNO ENAME SAL GRADE LOSAL HISAL
------ ------- ------ ----- ----- ------
7839 KING 5000 1 700 1200
7698 BLAKE 2850 2 1201 1400
7782 CLARK 2450 3 1401 2000
7566 JONES 2975 4 2001 3000
7654 MARTIN 1250 5 3001 9999
7499 ALLEN 1600
7844 TURNER 1500
7900 JAMES 950
... "Les salaires (SAL) de la table
14 rows selected. EMP sont compris entre le
salaire minimum (LOSAL) et le
salaire maximum (HISAL) de la
table SALGRADE"
Extraction d'Enregistrements
avec les Non-Equijointures
SQL> SELECT e.ename, e.sal, s.grade
2 FROM emp e, salgrade s
3 WHERE e.sal
4 BETWEEN s.losal AND s.hisal;
ENAME SAL GRADE
---------- --------- ---------
JAMES 950 1
SMITH 800 1
ADAMS 1100 1
...
14 rows selected.
Jointures Externes
EMP DEPT
ENAME DEPTNO DEPTNO DNAME
----- ------ ------ ----------
KING 10 10 ACCOUNTING
BLAKE 30 30 SALES
CLARK 10 10 ACCOUNTING
JONES 20 20 RESEARCH
... ...
40 OPERATIONS
Pas d'employés dans le département
OPERATIONS
Jointures Externes
• Les jointures externes permettent de visualiser des lignes qui ne répondent
pas à la condition de jointure.
• L'opérateur de jointure externe est le signe (+).
SELECT table.column, table.column
FROM table1, table2
WHERE table1.column(+) = table2.column;
SELECT table.column, table.column
FROM table1, table2
WHERE table1.column = table2.column(+);
Utilisation des Jointures
Externes
SQL> SELECT e.ename, d.deptno, d.dname
2 FROM emp e, dept d
3 WHERE e.deptno(+) = d.deptno
4 ORDER BY e.deptno;
ENAME DEPTNO DNAME
---------- --------- -------------
KING 10 ACCOUNTING
CLARK 10 ACCOUNTING
...
40 OPERATIONS
15 rows selected.
Autojointures
EMP (WORKER) EMP (MANAGER)
EMPNO ENAME MGR EMPNO ENAME
----- ------ ---- ----- --------
7839 KING
7698 BLAKE 7839 7839 KING
7782 CLARK 7839 7839 KING
7566 JONES 7839 7839 KING
7654 MARTIN 7698 7698 BLAKE
7499 ALLEN 7698 7698 BLAKE
"Dans la table WORKER, MGR équivaut à EMPNO dans la
table MANAGER"
Liaison d'une Table à Elle-même
SQL> SELECT worker.ename||' works for '||manager.ename
2 FROM emp worker, emp manager
3 WHERE worker.mgr = manager.empno;
WORKER.ENAME||'WORKSFOR'||MANAG
-------------------------------
BLAKE works for KING
CLARK works for KING
JONES works for KING
MARTIN works for BLAKE
...
13 rows selected.
Jointure avec ON
• la condition de la jointure naturelle est une équijointure de toutes les
colonnes portants le même nom
• Utiliser la clause ON pour indiquer des conditions arbitraires ou pour
désigner les colonnes à joindre
• La condition de jointure et différente et distincte des autres conditions de
recherche
• La clause ON facilite la lecture du code
Auto-jointure avec ON
Auto-jointure avec ON
Appliquer des conditions supplémentaires
avec ON
Jointure sur plusieurs tables avec ON
Produit cartésien ( avec cross join)
Regrouper les Données
avec les Fonctions de Groupe
Deux Types de Fonctions SQL
Fonctions
Fonctions Fonctions
mono-ligne multi-ligne
Année Universitaire 2021/2022
Introduction
• les fonctions de groupe opèrent sur des ensembles de lignes afin de renvoyer un
seul résultat par groupe
Année Universitaire 2021/2022
Introduction
• Type de fonctions de groupe
Année Universitaire 2021/2022
Type de fonctions de groupe
Année Universitaire 2021/2022
Fonction de groupe syntaxe
Année Universitaire 2021/2022
Utilisation des fonctions AVG et SUM
• Les fonctions de groupe AVG et SUM sont utilisées sur les données numériques :
• Les fonctions MIN et MAX sont utilisé pour les valeurs numérique, les caractères
et les dates
Année Universitaire 2021/2022
Utilisation de la fonction COUNT
• COUNT (*) renvoie le nombre de ligne dans une table :
• La fonction COUNT( expr) renvoie le nombre de lignes avec des valeurs
non nulles pour expr:
Année Universitaire 2021/2022
Fonctions de groupe et valeurs NULL
• Les fonctions de groupe ignorent les valeurs nulles dans la colonnes :
• La fonction NVL( colonne) force les fonctions de groupe à inclure les
valeurs nulles
Année Universitaire 2021/2022
Créer des groupes de données
• Créer des groupes de données
Année Universitaire 2021/2022
Syntaxe
• On peut utiliser la clause GROUP BY afin de diviser les lignes d'une table en
groupes
Utiliser la clause GROUP BY
• Toutes les colonnes de la liste SELECT qui ne sont pas incluses dans des
fonctions de groupe doivent figurer dans la clause GROUP BY.
Année Universitaire 2021/2022
Erreurs d'Utilisation des Fonctions
de Groupe dans une Requête
• Toute colonne ou expression de la liste SELECT autre
qu'une fonction de groupe, doit être incluse dans la clause
GROUP BY.
SQL> SELECT deptno, COUNT(ename)
2 FROM emp;
SELECT deptno, COUNT(ename)
*
ERROR at line 1:
ORA-00937: not a single-group group function
Utiliser la clause GROUP BY
• La colonne dans GROUP BY ne doit pas nécessairement figurer dans la
clause SELECT :
Année Universitaire 2021/2022
Regrouper sur plusieurs colonnes
Année Universitaire 2021/2022
Regrouper sur plusieurs colonnes
• La fonction SUM est donc appliquée à la colonne de salaire pour tous les ID de
poste de chaque groupe de numéros de département.
Année Universitaire 2021/2022
Restreindre les résultats des groupes
Année Universitaire 2021/2022
Restreindre les résultats des groupes
• Pour restreindre les résultats dans un groupe on utilise la clause HAVING.
• Le serveur oracle exécute cette clause de la façon suivantes :
• 1. Les lignes sont regroupées.
• 2. La fonction de groupe est appliquée
• 3. Les groupes qui correspondent à la clause HAVING s’affichent
Année Universitaire 2021/2022
Utilisation de HAVING
• Afficher le numéro et le salaire maximal des départements dont le salaire
maximal est supérieur à 10 000 $.
Année Universitaire 2021/2022
Utilisation de HAVING
• Afficher l'ID de poste (non responsable) et le salaire mensuel total de
chaque poste dont la rémunération totale dépasse 13 000 $
Année Universitaire 2021/2022
MODIFICATION DES DONNEES
Année Universitaire 2021/2022
Langage de Manipulation des Données
• Un ordre du LMD est exécuté lorsque :
• Vous ajoutez des lignes à une table
• Vous modifiez des lignes existantes dans une table
• Vous supprimez des lignes d'une table
• Une transaction est un ensemble d'ordres du LMD formant une unité de travail
logique.
Année Universitaire 2021/2022
Ajout d'une Nouvelle Ligne
dans une Table
50 DEVELOPMENT DETROIT
Nouvelle ligne "…insérer une nouvelle
DEPT ligne dans la table DEPT
DEPTNO DNAME LOC
…"
------ ---------- --------
10 ACCOUNTING NEW YORK
20 RESEARCH DALLAS DEPT
30 SALES CHICAGO DEPTNO DNAME LOC
40 OPERATIONS BOSTON ------ ---------- --------
10 ACCOUNTING NEW YORK
20 RESEARCH DALLAS
30 SALES CHICAGO
40 OPERATIONS BOSTON
50 DEVELOPMENT DETROIT
Année Universitaire 2021/2022
L'Ordre INSERT
• L'ordre INSERT permet d'ajouter de nouvelles lignes dans une table.
INSERT INTO table [(column [, column...])]
VALUES (value [, value...]);
• Cette syntaxe n'insère qu'une seule ligne à la fois.
Année Universitaire 2021/2022
Insertion de Nouvelles Lignes
• Insérez une nouvelle ligne en précisant une valeur pour chaque colonne.
• Eventuellement, énumérez les colonnes dans la clause INSERT.
• Indiquez les valeurs dans l'ordre par défaut des colonnes dans la table.
• Placez les valeurs de type caractère et date entre simples quotes.
NB : les chaines de caractères sont entre apostrophes
Année Universitaire 2021/2022
Insertion de Lignes Contenant
des Valeurs NULL
• Méthode implicite : ne spécifiez pas la colonne dans la liste.
SQL> INSERT INTO dept (deptno, dname )
2 VALUES (60, 'MIS');
1 row created.
• Méthode explicite: spécifiez le mot-clé NULL dans la clause Values
SQL> INSERT INTO dept
2 VALUES (70, 'FINANCE', NULL);
1 row created.
Année Universitaire 2021/2022
Insertion de Valeurs Spéciales
• La fonction SYSDATE renvoie la date et l'heure courantes.
SQL> INSERT INTO emp (empno, ename, job,
2 mgr, hiredate, sal, comm,
3 deptno)
4 VALUES (7196, 'GREEN', 'SALESMAN',
5 7782, SYSDATE, 2000, NULL,
6 10);
1 row created.
Année Universitaire 2021/2022
Insertion de Valeurs au Moyen
de Variables de Substitution
• Création d'un script interactif au moyen de paramètres de substitution SQL*Plus.
SQL> INSERT INTO dept (deptno, dname, loc)
2 VALUES (&department_id,
3 '&department_name', '&location');
Enter value for department_id: 80
Enter value for department_name: EDUCATION
Enter value for location: ATLANTA
1 row created.
Année Universitaire 2021/2022
Création d'un Script Contenant
des Messages Personnalisés
• ACCEPT stocke la valeur dans une variable.
• PROMPT affiche votre texte.
ACCEPT department_id PROMPT 'Please enter the -
department number:'
ACCEPT department_name PROMPT 'Please enter -
the department name:'
ACCEPT location PROMPT 'Please enter the -
location:'
INSERT INTO dept (deptno, dname, loc)
VALUES (&department_id, '&department_name',
‘&location’);
Année Universitaire 2021/2022
Copie de Lignes d'une Autre Table
• Ecrivez votre ordre INSERT en spécifiant une sous-interrogation.
• N'utilisez pas la clause VALUES.
• Le nombre de colonnes de la clause INSERT doit correspondre à celui de la
sous-interrogation.
SQL> INSERT INTO managers(id, name, salary, hiredate)
2 SELECT empno, ename, sal, hiredate
3 FROM emp
4 WHERE job = 'MANAGER';
3 rows created.
Année Universitaire 2021/2022
Modification des Données
EMP
d'une Table
EMPNO ENAME JOB ... DEPTNO "…modifier une
7839 KING PRESIDENT 10 ligne
7698 BLAKE MANAGER 30 de la table EMP…"
7782 CLARK MANAGER 10
7566 JONES MANAGER 20
...
EMP
EMPNO ENAME JOB ... DEPTNO
7839 KING PRESIDENT 10
7698 BLAKE MANAGER 30
7782 CLARK MANAGER 20
10
7566 JONES MANAGER 20
...
Année Universitaire 2021/2022
L'Ordre UPDATE
• Utilisez l'ordre UPDATE pour modifier des lignes existantes.
UPDATE table
SET• column = value [, column = value]
[WHERE condition];
• Si nécessaire, vous pouvez modifier plusieurs lignes à la fois.
Année Universitaire 2021/2022
Modification de Lignes
d'une Table
• La clause WHERE permet de modifier une ou plusieurs lignes spécifiques.
SQL> UPDATE emp
2 SET deptno = 20
3 WHERE empno = 7782;
1 row updated.
• Si vous omettez la clause WHERE, toutes les lignes sont modifiées.
SQL> UPDATE employee
2 SET deptno = 20;
14 rows updated.
Année Universitaire 2021/2022
Modification de données
(en fonction d’autre table )
L'exemple ci-dessus met à jour la table COPY_EMP en fonction des valeurs de la
table EMPLOYEES. Il remplace le numéro de département de tous les employés
dont l'ID de poste est le même que celui de l'employé 200 par le numéro de
département actuel de l'employé 100.
Année Universitaire 2021/2022
Suppression des données
Supprimer les lignes existantes à l’aide de l’instruction DELETE.
Syntaxe : DELETE [FROM] table
[WHERE condition];
• La clause WHERE permet de supprimer une ou plusieurs lignes
spécifiques.
SQL> DELETE FROM departments
2 WHERE department_name = 'DEVELOPMENT';
1 row deleted.
• Si vous omettez la clause WHERE, toutes les lignes sont supprimées.
SQL> DELETE FROM department;
4 rows deleted.
Année Universitaire 2021/2022
Suppression de données ( toutes les
lignes de la table)
Instruction TRUNCATE:
Supprime toutes les lignes d’une table, la table est vide mais sa structure est intacte.
C’est une instruction appartenant au LDD et no au LMD.
Ne pas être annulé facilement.
Année Universitaire 2021/2022
Suppression de Lignes :
Erreur de Contrainte d'Intégrité
SQL> DELETE FROM dept
2 WHERE deptno = 10;
DELETE FROM dept
*
ERROR at line 1:
ORA-02292: integrity constraint (USR.EMP_DEPTNO_FK)
violated - child record found
Année Universitaire 2021/2022
Transactions de Base de Données
Une transaction :
• Commence à l'exécution du premier ordre SQL
• Se termine par l'un des événements suivants :
• COMMIT ou ROLLBACK
• Exécution d'un ordre LDD ou LCD (validation automatique)
• Fin de session utilisateur
• Panne du système
Année Universitaire 2021/2022
Contrôle des Transactions
Transaction
INSERT UPDATE INSERT DELETE
COMMIT Savepoint A Savepoint B
ROLLBACK to Savepoint B
ROLLBACK to Savepoint A
ROLLBACK
Année Universitaire 2021/2022
Transaction de base de données
Gérer les transactions
Année Universitaire 2021/2022
Transaction de base de données
Traitement implicite
• Une validation automatique se produit dans les cas suivants :
Une Instruction LDD est exécutée
Une Instruction LCD est exécutée
L’utilisateur quitte SQLPlus sans exécuté explicitement d’instruction COMMIT ou ROLLBACK
Une annulation automatique lorsque le système connait une défaillance quelconque.
Année Universitaire 2021/2022
Etat des données avant l’opération
COMMIT et ROLBACK
L’état actuelle des données peut être récupéré.
L’utilisateur actuel peut examiner les résultats des opérations LMD à l’aide de l’instruction SELECT.
Les autres utilisateurs ne peuvent pas afficher les résultats des instructions LMD exécutées par
l’utilisateur actuel.
Les lignes affectées sont verrouillés; les autres utilisateurs ne peuvent donc pas modifier les données des
lignes affectées.
Année Universitaire 2021/2022