Info zu Data Manipulation Language- (DML-)Anweisungen
Data Manipulation Language-(DML-)Anweisungen greifen auf Daten in vorhandenen Tabellen zu und ändern sie.
In der SQL*Plus-Umgebung können Sie eine DML-Anweisung nach der Eingabeaufforderung SQL> eingeben.
In der SQL Developer-Umgebung können Sie eine DML-Anweisung in das Arbeitsblatt eingeben. Alternativ können Sie für den Zugriff auf die Daten und die zugehörigen Tools den SQL Developer-Verbindungsframe und die zugehörigen Tools verwenden.
Um die Auswirkung einer DML-Anweisung in SQL Developer zu sehen, müssen Sie möglicherweise den Schemaobjekttyp des geänderten Objekts im Schritt "Verbindungen" auswählen und dann auf das Symbol "Aktualisieren" klicken.
Die Auswirkung einer DML-Anweisung ist erst dauerhaft, wenn die Transaktion, die die DML-Anweisung enthält, festgeschrieben wurde. Eine Transaktion ist eine Folge von SQL-Anweisungen, die Oracle Database als Einheit behandelt (es kann sich um eine einzelne DML-Anweisung handeln). Bis zum Festschreiben einer Transaktion kann diese zurückgerollt (rückgängig gemacht) werden. Weitere Informationen zu Transaktionen finden Sie unter "Info zu Transaktionssteuerungs-Anweisungen".
Siehe auch: Oracle Database SQL Language Reference für weitere Informationen zu DML-Anweisungen
Anweisung INSERT
Mit der INSERT-Anweisung werden Zeilen in einer vorhandenen Tabelle eingefügt.
Die einfachste empfohlene Form der INSERT-Anweisung weist folgende Syntax auf:
INSERT INTO table_name (list_of_columns)
VALUES (list_of_values);
Jede Spalte in list_of_columns muss über einen gültigen Wert an der entsprechenden Position in list_of_values verfügen. Bevor Sie eine Zeile in einer Tabelle einfügen können, müssen Sie daher die Spalten der Tabelle und ihre gültigen Werte kennen. Informationen über das Abrufen dieser Informationen mithilfe von SQL Developer finden Sie unter Tutorial: Eigenschaften und Daten der Tabelle EMPLOYEES mit SQL Developer anzeigen. Wenn Sie diese Informationen mithilfe von SQL*Plus abrufen möchten, verwenden Sie die Anweisung DESCRIBE. Beispiel:
DESCRIBE EMPLOYEES;
Ergebnis:
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)
Mit der INSERT-Anweisung in Beispiel 3-1 wird in der EMPLOYEES-Tabelle eine Zeile für einen Mitarbeiter eingefügt, für die alle Spaltenwerte bekannt sind.
Sie dürfen nicht alle Spaltenwerte kennen, um eine Zeile in eine Tabelle einzufügen, aber Sie haben die Werte aller NOT NULL-Spalten. Wenn Ihnen der Wert einer Spalte, die NULL sein kann, nicht bekannt sind, können Sie diese Spalte in list_of_columns weglassen. Der Wert wird dann standardmäßig auf NULL festgelegt.
Mit der INSERT-Anweisung in Beispiel 3-2 wird in der EMPLOYEES-Tabelle eine Zeile für einen Mitarbeiter eingefügt, für die alle Spaltenwerte außer SALARY bekannt sind. Vorübergehend darf für SALARY der Wert NULL sein. Sobald der Wert bekannt sind, kann er mit der UPDATE-Anweisung geändert werden (siehe Beispiel 3-4).
Mit der INSERT-Anweisung in Beispiel 3-3 wird in der EMPLOYEES-Tabelle eine Zeile für einen Mitarbeiter eingefügt, für den LAST_NAME nicht bekannt ist.
Beispiel 3-1: INSERT-Anweisung verwenden, wenn alle Informationen verfügbar sind
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
);
Ergebnis:
1 row created.
Beispiel 3-2: INSERT-Anweisung verwenden, wenn nicht alle Informationen verfügbar sind
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
);
Ergebnis:
1 row created.
Beispiel 3-3: Falsche Verwendung der INSERT-Anweisung
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
);
Ergebnis:
ORA-01400: cannot insert NULL into ("HR"."EMPLOYEES"."LAST_NAME")
Siehe:
-
Oracle Database SQL Language Reference für Informationen über die INSERT-Anweisung
-
Oracle Database SQL Language Reference für Informationen zu Datentypen
Info zur UPDATE-Anweisung
Mit der UPDATE-Anweisung wird eine Gruppe von bereits vorhandenen Tabellenzeilen aktualisiert (d.h. sie ändert ihre Werte).
Eine einfache Form der UPDATE-Anweisung hat folgende Syntax:
UPDATE table_name
SET column_name = value [, column_name = value]...
[ WHERE condition ];
Jeder Wert muss für seinen column_name gültig sein. Bei Verwendung der WHERE-Klausel werden die Spaltenwerte durch diese Anweisung nur in jenen Zeilen aktualisiert, welche die Bedingung erfüllen.
Die UPDATE-Anweisung in Beispiel 3-4 aktualisiert den Wert der Spalte SALARY in der Zeile, die in Beispiel 3-2 in die Tabelle EMPLOYEES eingefügt wurde, bevor das Gehalt des Angestellten bekannt war.
Mit der UPDATE-Anweisung in Beispiel 3-5 wird der Prozentsatz für Provisionen für alle Mitarbeiter in Abteilung 80 aktualisiert.
Beispiel 3-4: Mittels der UPDATE-Anweisung Daten hinzufügen
UPDATE EMPLOYEES
SET SALARY = 8500
WHERE LAST_NAME = 'Keats';
Ergebnis:
1 row updated.
Beispiel 3-5: Mittels der UPDATE-Anweisung mehrere Zeilen aktualisieren
UPDATE EMPLOYEES
SET COMMISSION_PCT = COMMISSION_PCT + 0.05
WHERE DEPARTMENT_ID = 80;
Ergebnis:
34 rows updated.
Siehe:
-
Oracle Database SQL Language Reference für Informationen zur UPDATE-Anweisung
-
Oracle Database SQL Language Reference für Informationen zu Datentypen
Info zur DELETE-Anweisung
Mit der Anweisung DELETE werden Zeilen aus einer Tabelle entfernt.
Eine einfache Form der DELETE-Anweisung hat folgende Syntax:
DELETE FROM table_name [ WHERE condition ];
Wenn Sie die WHERE-Klausel einbindet, löscht die Anweisung nur Zeilen, die Bedingung erfüllen. Wenn Sie die WHERE-Klausel nicht einbunden, werden alle Zeilen aus der Tabelle gelöscht, die leere Tabelle bleibt jedoch erhalten. Verwenden Sie die Anweisung DROP TABLE, um eine Tabelle zu löschen.
Die DELETE-Anweisung in Beispiel 3-6 löscht die Zeilen, die in Beispiel 3-1 und Beispiel 3-2 eingefügt wurden.
Beispiel 3-6: Anweisung DELETE
DELETE FROM EMPLOYEES
WHERE HIRE_DATE = TO_DATE('01-JAN-07', 'dd-mon-yy');
Ergebnis:
2 rows deleted.
Siehe:
-
Oracle Database SQL Language Reference für Informationen über die DELETE-Anweisung
-
Oracle Database SQL Language Reference für Informationen zur Anweisung DROP TABLE
-
"Tutorial: Zeilen mit dem Tool "Ausgewählte Zeile(n) löschen" aus Tabellen entfernen"