Overblog Suivre ce blog
Editer l'article Administration Créer mon blog
16 juin 2012 6 16 /06 /juin /2012 15:25

 

DELETE FROM.

Comment supprimer des lignes dans une table avec la commande SQL DELETE.
Comment utiliser la commande SQL DELETE sur une table Oracle.
Comment supprimer des doublons dans une table avec DELETE.

L'instruction sql delete from est utilisée pour supprimer des lignes existantes dans une table.
DELETE supprime une ou plusieurs lignes dans une table ou vue Oracle.

Vous pouvez supprimer des lignes dans une table, si cette table est dans votre schéma ou si vous avez reçu le privilège objet DELETE sur la table.
Si vous avez le privilège system DELETE ANY TABLE, vous pouvez alors supprimer des lignes de tables dans toutes les tables des schéma.

Respectez les contraintes définies sur la table sous peine d'échec avec l'instruction DELETE.

Syntaxe SQL DELETE FROM TABLE.

 
 DELETE [FROM] [schéma.]Nom_Table [@DBLink] [WHERE (conditions)] ; 

sql-delete-from

Table de test pour les suppressions avec l'instruction DELETE.

 SQL> SELECT * FROM emp; EMPNO ENAME JOB MGR HIREDATE SAL COMM DEPTNO ---------- ---------- --------------- ---- ---------- ---------- ---------- ---------- 1 SMITH CLERK 800,5 10 2 ALLEN SALESMAN 4 20/02/1985 1600 300 30 3 WARD SALESMAN 4 22/02/1983 1250 500,56 30 4 JONES MANAGER 02/04/1981 2975 30 5 MARTIN SALESMAN 4 28/09/1987 1250 1400 40 SQL> 

 

Supprimer toutes les lignes d'une table avec DELETE FROM.

Nous ne mettons pas de clause WHERE avec des conditions pour supprimer toutes les lignes d'une table Oracle.
Toules les lignes de la table emp seront supprimées.
Vous pouvez aussi utiliser la commande sql TRUNCATE TABLE pour vider une table de tous ses enregistrements.

 
 SQL> DELETE emp; 5 ligne(s) supprimée(s). ou SQL> DELETE FROM emp; 5 ligne(s) supprimée(s). SQL> SELECT * FROM emp; aucune ligne sélectionnée SQL> 

 


 

DELETE FROM avec la clause WHERE de conditions.

 
 SQL> DELETE FROM emp WHERE deptno=30; 3 ligne(s) supprimée(s). SQL> SELECT * FROM emp; EMPNO ENAME JOB MGR HIREDATE SAL COMM DEPTNO ---------- ---------- --------------- ---- ---------- ---------- ---------- ---------- 1 SMITH CLERK 800,5 10 5 MARTIN SALESMAN 4 28/09/1987 1250 1400 40 SQL> 

 


 

DELETE FROM avec une sous-requête dans clause WHERE.

Utilisation de sous-requête pour établir la condition de suppression dans la clause WHERE.
Ici nous supprimons les lignes de la table dont le salaire est supérieure à la moyenne de tous les salaires de la table emp.

 
 SQL> DELETE FROM emp WHERE sal > (SELECT AVG(sal) FROM emp); 2 ligne(s) supprimée(s). SQL> SELECT * FROM emp; EMPNO ENAME JOB MGR HIREDATE SAL COMM DEPTNO ---------- ---------- --------------- ---- ---------- ---------- ---------- ---------- 1 SMITH CLERK 800,5 10 3 WARD SALESMAN 4 22/02/1983 1250 500,56 30 5 MARTIN SALESMAN 4 28/09/1987 1250 1400 40 SQL> 

 


 

DELETE FROM avec une liste dans la clause WHERE.

Utilisation d'une liste pour effectuer la suppression de lignes dans une table.
Ici nous supprimons toutes les lignes de la table dont le numéro DEPTNO est 10 ou 20 ou 30.

 
 SQL> DELETE FROM emp WHERE deptno IN(10, 20, 30); 4 ligne(s) supprimée(s). SQL> SELECT * FROM emp; EMPNO ENAME JOB MGR HIREDATE SAL COMM DEPTNO ---------- ---------- --------------- ---- ---------- ---------- ---------- ---------- 5 MARTIN SALESMAN 4 28/09/1987 1250 1400 40 SQL> 

 


 

SUPPRESSION DE DOUBLONS AVEC DELETE FROM

Utilisation d'une sous-requête pour supprimer les lignes en doublons sur le numéro DEPTNO.
Ici nous avions 3 lignes dont le DEPTNO etait égale à 30, aprés exécution de l'instruction DELETE suivante, nous avons maintenant une ligne unique dont le numéro DEPTNO est égale à 30.

 
 SQL> DELETE emp WHERE rowid NOT IN (SELECT MAX(rowid) FROM emp GROUP BY deptno); 2 ligne(s) supprimée(s). SQL> SELECT * FROM emp; EMPNO ENAME JOB MGR HIREDATE SAL COMM DEPTNO ---------- ---------- --------------- ---- ---------- ---------- ---------- ---------- 1 SMITH CLERK 800,5 10 4 JONES MANAGER 02/04/1981 2975 30 5 MARTIN SALESMAN 4 28/09/1987 1250 1400 40 SQL> 

 

Haut de Page www.dba-ora.fr

 

Liens en rapport avec l'article qui sont susceptibles de vous intéresser
• TRUNCATE TABLE ORACLE

Partager cet article

Repost 0
Published by Oracle SQL - dans COMMANDES SQL DML-LMD
commenter cet article

commentaires