jeudi 11 octobre 2012

Que signifie DDL, DML, DCL et TCL en Oracle ?

Le DDL pour Data Definition Language ou Langage de définition des données, qui regroupe les ordres utilisés pour créer, modifier ou supprimer les structures de la table de la BD (Tables, Index, Vues, et d'autres objets). Il s'agit principalement des commandes telles que CREATE, ALTER et DROP.

Le DML pour Data Manipulation Language ou Langage de manipulation des données, qui regroupe les ordres utilisés pour manipuler les données contenues dans la BD. Il s'agit principalement des commandes telles que SELECT, INSERT, DELETE et UPDATE.

Le DCL pour Data Control Language, qui regroupe les ordres utilisés pour gérer la sécurité des accès aux données. Il s'agit principalement des commandes telles que GRANT et ROVOKE.

Le TCL pour Transaction Control Language, qui regroupe les ordres utilisés pour gérer la validation ou non des mises à jour effectuées sur la BD. Il s'agit principalement des commandes telles que COMMIT et ROLLBACK.

TRUNCATE TABLE ORACLE VS DELETE

La commande DELETE permet d'effacer des enregistrements d'une table. Cette opération peut être lente s'il y a un très grand nombre d'enregistrement au niveau de la table. À chaque opération, on met à jour les enregistrements UNDO ainsi que les enregistrements REDO LOGS.

Il est possible de revenir en arrière pour récupérer des données en cas de l'effacement avec un ROLLBACK.

L'ordre TRUNCATE permet de supprimer toutes les lignes d'une table. Ce n'est pas un ordre du LMD mais un ordre du LDD donc cela signifie qu'il déclenche un COMMIT implicite. Il n'est pas possible de récupérer les données après un TRUNCATE donc il faut l'utiliser avec précaution.
Cette opération est très rapide même s'il y a un très grand nombre d'enregistrements au niveau de la table. On ne génère pas ni UNDO, ni REDO LOGS.

Attention, pas de rollback possible avec la commande Oracle Truncate Table.


En terme de performance, le TRUNCATE est plus rapide que le DELETE. Le système effectue moins de manipulation interne avec un TRUNCATE (pas de passage par le cache, journalisation moindre....).

En revanche s'il existe des clés étrangères, le TRUNCATE ne fonctionnera pas. Il faut également avoir des droits importants pour utiliser le TRUNCATE. Pour plus de détails avec des exemples, visiter mon site web qui sera accessible dans quelques mois à cette url: www.oraweb.ca