A propos des instructions DML (Data Manipulation Language)

Les instructions DML (Data Manipulation Language) accèdent aux données des tables existantes et les manipulent.

Dans l'environnement SQL*Plus, vous pouvez saisir une instruction DML après l'invite SQL>.

Dans l'environnement SQL Developer, vous pouvez entrer une instruction DML dans la feuille de calcul. Vous pouvez également utiliser le cadre de connexion à SQL Developer et des outils de SQL Developer pour accéder aux données et la manipuler.

Pour visualiser l'effet d'une instruction DML dans SQL Developer, vous pouvez être amené à sélectionner le type d'objet de schéma de l'objet modifié dans le cadre Connexions, puis à cliquer sur l'icône Actualiser.

L'effet d'une instruction DML devient permanent lorsque vous validez la transaction qui inclut l'instruction. Une transaction est une séquence d'instructions SQL qu'Oracle Database traite comme une unité (il peut s'agir d'une instruction LMD unique). Tant qu'elle n'est pas validée, la transaction peut être annulée. Pour plus d'informations sur les transactions, reportez-vous à la section "A propos des instructions de contrôle de transaction".

Voir aussi : Référence du langage SQL Oracle Database pour plus d'informations sur les instructions LMD.

A propos de l'instruction INSERT

L'instruction INSERT insère des lignes dans une table existante.

La syntaxe de la forme la plus simple recommandée pour l'instruction INSERT est la suivante :

INSERT INTO table_name (list_of_columns)
VALUES (list_of_values);

Chaque colonne de list_of_columns doit posséder une valeur valide dans la position correspondante de list_of_values. Par conséquent, avant d'insérer une ligne dans une table, vous devez savoir quelles colonnes la table possède et quelles sont leurs valeurs valides. Pour obtenir ces informations à l'aide de SQL Developer, reportez-vous à la rubrique "Tutoriel : Visualisation des propriétés et de données des tables EMPLOYEES avec SQL Developer". Pour obtenir ces informations via SQL*Plus, utilisez l'instruction DESCRIBE. Exemple :

DESCRIBE EMPLOYEES;

Résultats :

Name                                      Null?    Type
----------------------------------------- -------- ------------

EMPLOYEE_ID                               NOT NULL NUMBER(6)
FIRST_NAME                                         VARCHAR2(20)
LAST_NAME                                 NOT NULL VARCHAR2(25)
EMAIL                                     NOT NULL VARCHAR2(25)
PHONE_NUMBER                                       VARCHAR2(20)
HIRE_DATE                                 NOT NULL DATE
JOB_ID                                    NOT NULL VARCHAR2(10)
SALARY                                             NUMBER(8,2)
COMMISSION_PCT                                     NUMBER(2,2)
MANAGER_ID                                         NUMBER(6)
DEPARTMENT_ID                                      NUMBER(4)

L'instruction INSERT de l'exemple 3-1 insère une ligne dans la table EMPLOYEES pour un employé dont toutes les valeurs de colonne sont connues.

Vous n'avez pas besoin de connaître toutes les valeurs de colonne pour insérer une ligne dans une table, mais vous devez connaître les valeurs de toutes les colonnes NOT NULL. Si vous ne connaissez pas la valeur d'une colonne qui peut être NULL, vous pouvez omettre cette colonne de list_of_columns. Par défaut, sa valeur est NULL.

L'instruction INSERT de l'Exemple 3-2 insère une ligne dans la table EMPLOYEES pour un employé dont toutes les valeurs de colonne sont connues sauf SALARY. Pour l'instant, SALARY peut avoir la valeur NULL. Lorsque vous connaissez le salaire, vous pouvez la modifier à l'aide de l'instruction UPDATE (reportez-vous à l'exemple 3-4).

L'instruction INSERT de l'Exemple 3-3 tente d'insérer une ligne dans la table EMPLOYEES pour un employé dont LAST_NAME n'est pas connu.

Exemple 3-1 Utilisation de l'instruction INSERT lorsque toutes les informations sont disponibles

INSERT INTO EMPLOYEES (
  EMPLOYEE_ID,
  FIRST_NAME,
  LAST_NAME,
  EMAIL,
  PHONE_NUMBER,
  HIRE_DATE,
  JOB_ID,
  SALARY,
  COMMISSION_PCT,
  MANAGER_ID,
  DEPARTMENT_ID
)
VALUES (
  10,              -- EMPLOYEE_ID
  'George',        -- FIRST_NAME
  'Gordon',        -- LAST_NAME
  'GGORDON',       -- EMAIL
  '650.506.2222',  -- PHONE_NUMBER
  '01-JAN-07',     -- HIRE_DATE
  'SA_REP',        -- JOB_ID
  9000,            -- SALARY
  .1,              -- COMMISSION_PCT
  148,             -- MANAGER_ID
  80               -- DEPARTMENT_ID
);

Résultats :

1 row created.

Exemple 3-2 Utilisation de l'instruction INSERT lorsque toutes les informations ne sont pas disponibles

INSERT INTO EMPLOYEES (
  EMPLOYEE_ID,
  FIRST_NAME,
  LAST_NAME,
  EMAIL,
  PHONE_NUMBER,
  HIRE_DATE,
  JOB_ID,          -- Omit SALARY; its value defaults to NULL.
  COMMISSION_PCT,
  MANAGER_ID,
  DEPARTMENT_ID
)
VALUES (
  20,              -- EMPLOYEE_ID
  'John',          -- FIRST_NAME
  'Keats',         -- LAST_NAME
  'JKEATS',        -- EMAIL
  '650.506.3333',  -- PHONE_NUMBER
  '01-JAN-07',     -- HIRE_DATE
  'SA_REP',        -- JOB_ID
  .1,              -- COMMISSION_PCT
  148,             -- MANAGER_ID
  80               -- DEPARTMENT_ID
);

Résultats :

1 row created.

Exemple 3-3 Utilisation incorrecte de l'instruction INSERT

INSERT INTO EMPLOYEES (
  EMPLOYEE_ID,
  FIRST_NAME,      -- Omit LAST_NAME (error)
  EMAIL,
  PHONE_NUMBER,
  HIRE_DATE,
  JOB_ID,
  COMMISSION_PCT,
  MANAGER_ID,
  DEPARTMENT_ID
)
VALUES (
  20,              -- EMPLOYEE_ID
  'John',          -- FIRST_NAME
  'JOHN',          -- EMAIL
  '650.506.3333',  -- PHONE_NUMBER
  '01-JAN-07',     -- HIRE_DATE
  'SA_REP',        -- JOB_ID
  .1,              -- COMMISSION_PCT
  148,             -- MANAGER_ID
  80               -- DEPARTMENT_ID
);

Résultats :

ORA-01400: cannot insert NULL into ("HR"."EMPLOYEES"."LAST_NAME")

Voir aussi :

A propos de l'instruction UPDATE

L'instruction UPDATE met à jour (change les valeurs de) un ensemble de lignes à table existantes.

Dans une forme simple, l'instruction UPDATE présente la syntaxe suivante :

UPDATE table_name
SET column_name = value [, column_name = value]...
[ WHERE condition ];

Chaque valeur doit être valide pour son nom de colonne (column_name). Si vous incluez la clause WHERE, l'instruction met à jour la valeur des colonnes uniquement dans les lignes qui respectent la condition.

L'instruction UPDATE de l'Exemple 3-4 met à jour la valeur de la colonne SALARY de la ligne qui a été insérée dans la table EMPLOYEES de l'Exemple 3-2, avant que le salaire de l'employé ne soit connu.

L'instruction UPDATE de l'Example 3-5 met à jour le pourcentage de commission pour chaque employé du département 80.

Exemple 3-4 Utilisation de l'instruction UPDATE pour ajouter des données

UPDATE EMPLOYEES
SET SALARY = 8500
WHERE LAST_NAME = 'Keats';

Résultats :

1 row updated.

Exemple 3-5 Utilisation de l'instruction UPDATE pour mettre à jour plusieurs lignes

UPDATE EMPLOYEES
SET COMMISSION_PCT = COMMISSION_PCT + 0.05
WHERE DEPARTMENT_ID = 80;

Résultats :

34 rows updated.

Voir aussi :

A propos de l'instruction DELETE

L'instruction DELETE supprime des lignes d'une table.

Dans une forme simple, l'instruction DELETE présente la syntaxe suivante :

DELETE FROM table_name [ WHERE condition ];

Si vous incluez la clause WHERE, l'instruction supprime uniquement Les lignes qui respectent la condition. Si vous omettez la clause WHERE, l'instruction supprime toutes les lignes de la table mais la table vide existe toujours. Pour supprimer une TABLE, utilisez l'instruction DROP TABLE.

L'instruction DELETE de l'Exemple 3-6 supprime les lignes insérées dans l'Exemple 3-1 et l'Exemple 3-2.

Exemple 3-6 Utilisation de l'instruction DELETE

DELETE FROM EMPLOYEES
WHERE HIRE_DATE = TO_DATE('01-JAN-07', 'dd-mon-yy');

Résultats :

2 rows deleted.

Voir aussi :