Informazioni sulle istruzioni DML (Data Manipulation Language)
Data manipulation language (DML) statements access and manipulate data in existing tables.
Nell'ambiente SQL*Plus è possibile immettere un'istruzione DML dopo il prompt SQL>.
Nell'ambiente SQL Developer è possibile immettere un'istruzione DML nel Foglio di lavoro. In alternativa, è possibile utilizzare il riquadro delle connessioni a SQL Developer per accedere ai dati e manipolarli.
Per vedere l'effetto di un'istruzione DML in SQL Developer, potrebbe essere necessario selezionare il tipo di oggetto dello schema dell'oggetto modificato nel frame Connessioni, quindi fare clic sull'icona Aggiorna.
L'effetto di un'istruzione DML non è permanente fino a quando non si esegue il commit della transazione che la include. Una transazione è una sequenza di istruzioni SQL che Oracle Database tratta come una singola unità (può trattarsi di un'unica istruzione DML). Fino a quando non ne viene eseguito il commit, una transazione può essere sottoposta a rollback (annullata). Per ulteriori informazioni sulle transazioni, vedere "Informazioni sulle istruzioni di controllo delle transazioni".
Per ulteriori informazioni sulle istruzioni DML, vedere anche: Oracle Database SQL Language Reference
Informazioni sull'istruzione INSERT
L'istruzione INSERT inserisce le righe in una tabella esistente.
La forma consigliata più semplice dell'istruzione INSERT ha la seguente sintassi:
INSERT INTO table_name (list_of_columns)
VALUES (list_of_values);
Ogni colonna in list_of_columns deve avere un valore valido nella posizione corrispondente in list_of_values. Pertanto, prima di inserire una riga in una tabella bisogna sapere quali sono le colonne della tabella e quali sono i relativi valori validi. Per ottenere queste informazioni utilizzando SQL Developer, vedere Esercitazione: Visualizzazione delle proprietà e delle informazioni della tabelle EMPLOYEES con SQL Developer. Per ottenere queste informazioni con SQL*Plus, utilizzare l'istruzione DESCRIBE. Ad esempio:
DESCRIBE EMPLOYEES;
Risultato:
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'istruzione INSERT nell'Esempio 3-1 inserisce una riga nella tabella EMPLOYEES per un dipendente per la quale sono noti tutti i valori delle colonne.
Per inserire una riga in una tabella, non è necessario conoscere i valori delle colonne per inserire una riga, ma è necessario conoscere i valori delle colonne NOT NULL. Se non si conosce il valore di una colonna che può essere NULL, è possibile omettere tale colonna da list_of_columns. Per impostazione predefinita, viene utilizzato il valore NULL.
L'istruzione INSERT nell'Esempio 3-2 inserisce una riga nella tabella EMPLOYEES per un dipendente per cui si conoscono tutti i valori delle colonne, ad eccezione di SALARY. Per ora, SALARY può avere il valore NULL. Quando lo stipendio sarà noto, è possibile modificarlo con l'istruzione UPDATE (vedere l'Esempio 3-4).
L'istruzione INSERT nell'Esempio 3-3 tenta di inserire una riga nella tabella EMPLOYEES per un dipendente per cui non si conosce il valore di LAST_NAME.
Esempio 3-1 Uso dell'istruzione INSERT quando sono disponibili tutti i dati
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
);
Risultato:
1 row created.
Esempio 3-2 Uso dell'istruzione INSERT quando non tutte le informazioni sono disponibili
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
);
Risultato:
1 row created.
Esempio 3-3 Uso dell'istruzione INSERT non corretto
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
);
Risultato:
ORA-01400: cannot insert NULL into ("HR"."EMPLOYEES"."LAST_NAME")
Vedere anche:
-
Oracle Database SQL Language Reference per informazioni sull'istruzione INSERT
-
Oracle Database SQL Language Reference per informazioni sui tipi di dati
-
"Esercitazione: Aggiunta di righe alle tabelle con lo Strumento Inserisci riga"
Informazioni sull'istruzione UPDATE
L'istruzione UPDATE aggiorna (modifica i valori) un insieme di righe di tabella esistenti.
Una forma semplice di istruzione UPDATE presenta la seguente sintassi:
UPDATE table_name
SET column_name = value [, column_name = value]...
[ WHERE condition ];
Ogni valore deve essere valido per il relativo nome_colonna. Se si include la clausola WHERE, l'istruzione aggiorna il valore delle colonne solo nelle righe che soddisfano la condizione.
L'istruzione UPDATE in Esempio 3-4 aggiorna il valore della colonna SALARY nella riga inserita nella tabella EMPLOYEES in Esempio 3-2, prima che lo stipendio del dipendente fosse noto.
L'istruzione UPDATE nell'Esempio 3-5 aggiorna la percentuale di commissione per ogni dipendente nel dipartimento 80.
Esempio 3-4 Uso dell'istruzione UPDATE per aggiungere dati
UPDATE EMPLOYEES
SET SALARY = 8500
WHERE LAST_NAME = 'Keats';
Risultato:
1 row updated.
Esempio 3-5 Uso dell'istruzione UPDATE per aggiornare più righe
UPDATE EMPLOYEES
SET COMMISSION_PCT = COMMISSION_PCT + 0.05
WHERE DEPARTMENT_ID = 80;
Risultato:
34 rows updated.
Vedere anche:
-
Oracle Database SQL Language Reference per informazioni sull'istruzione UPDATE
-
Oracle Database SQL Language Reference per informazioni sui tipi di dati
-
"Esercitazione: Modifica dei dati nelle tabelle nel riquadro dei dati"
Informazioni sull'istruzione DELETE
L'istruzione DELETE elimina righe da una tabella.
Una forma semplice di istruzione DELETE presenta la seguente sintassi:
DELETE FROM table_name [ WHERE condition ];
Se si include la clausola WHERE, l'istruzione elimina solo tutte le righe che soddisfano la condizione. Se si omette la clausola WHERE, l'istruzione elimina tutte le righe dalla tabella, ma non la tabella vuota. Per eliminare una tabella, utilizzare l'istruzione DROP TABLE.
L'istruzione DELETE in Esempio 3-6 elimina le righe inserite nell'Esempio 3-1 e nell'Esempio 3-2.
Esempio 3-6 Uso dell'istruzione DELETE
DELETE FROM EMPLOYEES
WHERE HIRE_DATE = TO_DATE('01-JAN-07', 'dd-mon-yy');
Risultato:
2 rows deleted.
Vedere anche:
-
Oracle Database SQL Language Reference per informazioni sull'istruzione DELETE
-
Oracle Database SQL Language Reference per informazioni sull'istruzione DROP TABLE