next Transaction Control
up Einführung in PL / SQL Oracle 8i/9i
previous Constraints
  Contents   Index

Subsections


Data Manipulation Language (DML)


INSERT

Normalerweise werden Datensätze mit Hilfe eines benutzerfreundlichen Front-End-Programms in die Tabellen eingetragen. Intern geschieht aber nichts weiter wie ein Aufruf der INSERT-Anweisung. Für das Erzeugen von Testdaten ist es ebenfalls recht hilfreich, die INSERT-Anweisung zu beherrschen. Eine INSERT-Anweisung wird erst durch ein COMMIT festgeschrieben. Alle Spalten, die auf NOT NULL definiert wurden, müssen selbstverständlich angegeben werden. Der allgemeine Syntax einer INSERT-Anweisung sieht folgendermaßen aus:
insert into tablename 
         (spalte1,spalte2 ... spalte n) 
  values (value1, value2  ... value n)
;
insert into emp
               (empno,ename,deptno,job) 
        values (11,'Hager', 20,'SALESMAN')
;
Es wird in die Tabelle Mitarbeiter (emp) ein neuer Datensatz hinzugefügt. Es handelt sich um den neuen Mitarbeiter Herrn Hager mit der Mitarbeiternummer 11, der Abteilungsnummer 20 und dem Job SALESMAN.
insert into emp 
  values (10,'Huber','SALESMAN',7902,'1.1.1990',2000,NULL,10)
;
Da hier hinter emp keine Spalten angegeben wurden, müssen alle Spalten in der entsprechenden Reihenfolge im Teil VALUES angegeben werden. Erzeugt wird durch die Anweisung ein neuer Mitarbeiter mit der Mitarbeiternummer 10, dem Namen Huber, dem Job SALESMAN, dem Vorgesetzten mit der Nummer 7902 (Herr Ford), dem Einstellungsdatum 1.1.1990, dem Gehalt 2000, ohne Kommission und der Abteilung Nummer 10.

Datensätze können auch auf Basis einer Abfrage hinzugefügt werden. Mit dieser Methode ist es zum Beispiel möglich, sehr schnell sehr große Datenmengen zu Testzwecken zu erzeugen. Denn was nutzt Ihnen eine Testdatenbank, die nur ein paar Tausend Datensätze besitzt. Als erstes erzeugen wir eine Tabelle namens SALESMAN mit zwei Spalten namens empno und ename.

create table salesman(empno int, ename char(20));
Anschließend wird diese Tabelle mit einer INSERT- Anweisung und einer Unterabfrage mit Daten gefüllt.
insert into salesman 
  select empno,ename from emp where job = ,'SALESMAN'
;
select * from salesman;
EMPNO ENAME
---------------
7499  ALLEN
7521  WARD
7654  MARTIN
7844  TURNER
  10  Huber
  11  Hager
Mit Hilfe von Skripten können Sie ebenfalls Daten in eine Tabelle einfügen. Schauen wir uns folgendes kleine Skript etwas genauer an (eine detaillierte Einführung in Skripte würde den Rahmen dieser Unterlage sprengen).
ACCEPT Mitarbeiternummer PROMPT 'Geben Sie die Mitarbeiternummer an'
ACCEPT Mitarbeitername PROMPT 'Geben Sie den Mitarbeiternamen an'
ACCEPT Job PROMPT 'Geben Sie den Job des Mitarbeiters an'
INSERT INTO emp(empno,ename,job) 
         VALUES(&mitarbeiternummer,'&mitarbeitername','&job')
;
Speichern Sie dieses Skript ab (z.B. als ~/test/skript1.sql) und führen Sie es innerhalb von SQL PLUS aus (start ~/test/skript1.sql). Sie werden nacheinander zur Eingabe der entsprechenden Werte aufgefordert und am Ende wird der Datensatz eingefügt.


UPDATE

Mit der Anweisung UPDATE ist es möglich, Datensätze innerhalb einer Tabelle zu aktualisieren bzw. zu ändern. Eine Update-Anweisung kann durchaus mehrere Datensätze 'zugleich' ändern. Mit der WHERE-Einschränkung können Sie angeben, welche Datensätze geändert werden sollen.
update tablename set spalte = neuen_spaltenwert where bedingung;
UPDATE EMP SET sal = sal*1.1 where job = 'SALESMAN';
Das Gehalt aller SALESMAN wird um 10% erhöht.
UPDATE EMP SET job = 'Verkäufer' where job= 'SALESMAN';

select ename,job from emp;

ENAME       JOB
------------------------
SMITH       CLERK
ALLEN       Verkäufer
WARD        Verkäufer
JONES       MANAGER
MARTIN      Verkäufer
BLAKE       MANAGER
CLARK       MANAGER
SCOTT       ANALYST
KING        PRESIDENT
TURNER      Verkäufer
ADAMS       CLERK
JAMES       CLERK
FORD        ANALYST
MILLER      CLERK
Der Job SALESMAN wird in der gesamten Tabelle emp umbenannt in Verkäufer.


DELETE

Löschoperationen werden in SQL durch die DELETE-Anweisung ausgeführt. Auch Löschoperationen müssen genau wie auch INSERT- und UPDATE-Anweisungen durch ein COMMIT bestätigt werden. Falls die Löschoperationen am Ende doch nicht durchgeführt werden sollen, so können diese mit ROLLBACK zurückgerollt werden.
delete from tabellenname where bedingung
DELETE FROM emp where job = 'SALESMAN';
Es werden alle Datensätze der Tabelle Mitarbeiter (emp) gelöscht,bei denen der Job SALESMAN ist.
DELETE FROM emp;
Es werden alle Datensätze der Tabelle Mitarbeiter (emp) gelöscht.
next Transaction Control
up Einführung in PL / SQL Oracle 8i/9i
previous Constraints
  Contents   Index


Stefan Hietel dama.go GmbH, Robert Warnke http://rowa.giso.de