Data Manipulation Language (DML)
Fügt neue Zeilen in eine Tabelle hinzu
  Syntax:
  INSERT INTO tabelle [(spalte, ...)] VALUES (value, ...);
  Beispiel:
  INSERT INTO emp
  (empno, ename, job, deptno)
  VALUES
  (8000,'HUBER','TRAINEE',40);
  INSERT INTO dept
  VALUES
  (50, 'HEAD_QUARTER', null);
Kopiert Zeilen aus einer anderen Tabelle
  Syntax:
  INSERT INTO  tabelle [(spalte ...)]
               unterabfrage
Beispiel:
  INSERT INTO emp_copy
  SELECT * FROM emp WHERE job = 'MANAGER';
 
Syntax:
UPDATE tabelle
SET spalte = value  ändert vorhandene Zeilen
[WHERE condition]  ändert bestimmte Zeilen 
Beispiel:
  UPDATE emp SET sal = 2000
  WHERE deptno = 10;
  UPDATE emp
  SET sal = 1111, comm = 1000, deptno = 50
  WHERE ename =  'HUBER';
  UPDATE emp
  SET (deptno, sal, comm) =
      (SELECT deptno, sal, comm
       FROM emp WHERE empno = 7499)
  WHERE ename =  'MILLER';
Löscht Zeilen aus einer Tabelle
  Syntax:
  DELETE FROM  tabelle
              [WHERE condition] 
  Beispiel:
  DELETE FROM emp
  WHERE job = 'TRAINEE';
  DELETE FROM emp
  WHERE deptno = (SELECT MIN(deptno)FROM emp);
Kombination von INSERT- und UPDATE-Anweisungen (ab 9i) 
  Syntax:
MERGE INTO   tabelle                   
               USING tabelle
               ON (condition) 
WHEN MATCHED THEN UPDATE
               SET (condition) 
WHEN NOT MATCHED THEN INSERT
              (condition)  
  Beispiel:
   MERGE INTO annsal a USING emp e
   ON (a.empno = e.empno)
   WHEN MATCHED THEN UPDATE
   SET a.peryear = (e.sal*12)
   WHEN NOT MATCHED THEN INSERT
   (a.empno, a.peryear)
   VALUES (e.empno, e.sal*12); 
Transaktionen
 
   COMMIT;                                               → Datenänderungen werden permanent festgeschrieben
   ROLLBACK;                                          → alle Änderungen werden zurückgesetzt
   ROLLBACK TO SAVEPOINT test;    → alle vorgenommenen Änderungen werden bis zum SAVEPOINT zurückgesetzt
 
Sperrmechanismen
   SET TRANSACTION READ COMMITTED;  → (Standardeinstellung)
   SET TRANSACTION READ ONLY;          → erlaubt nur Lesen der Daten, kein Ändern
 
Data Definition Language (DDL)
Erstellt Tabelle mit Spalten und -attributen 
  Syntax:    
   CREATE TABLE tabellenname   
               (spalte type(n), ...)
  Beispiel:
CREATE TABLE kollegen (
   k_nr number(3) NOT NULL,
   nname varchar2(20),
   ort varchar2(20) DEFAULT 'MÜNCHEN');
Datentypen
    ⇒z.B. number[(p,s)], varchar2(n), char[(n)], date
Erstellt Tabelle mittels Unterabfrage aus anderer Tabelle 
  Syntax: 
CREATE TABLE tabellenname 
          AS   subquery 
  Beispiel:
CREATE TABLE dept10 AS 
   SELECT empno, ename, sal*12 j_gehalt,
   hiredate FROM emp WHERE deptno = 10;
Fügt eine neue Spalte in eine Tabelle 
 Syntax: 
ALTER TABLE  tabellenname
          ADD  (spalte type(n), ...)
 Beispiel:
 ALTER TABLE kollegen ADD (email char(30));
 
Ändert eine vorhandene Spalte
  Syntax:
ALTER TABLE  tabellenname
            Modify (spalte type(n), ...)
  Beispiel:
ALTER TABLE kollegen 
   MODIFY (email varchar2(35));
Löscht eine Spalte aus einer Tabelle
  Syntax:
      DROP COLUMN spalte 
  Beispiel:
ALTER TABLE emp DROP COLUMN job;
   ALTER TABLE dept DROP COLUMN deptno
   CASCADE CONSTRAINTS;
Löscht die gesamte Tabelle unwiderruflich 
 Syntax:
DROP TABLE  tabellenname; 
Beispiel:
 
DROP TABLE kollegen;
DROP TABLE dept CASCADE CONSTRAINTS;
Benennt eine Tabelle um
  Syntax:
RENAME  table TO table_neu 
 Beispiel:     
RENAME kollegen TO ex_kollegen;
 
Leert eine Tabelle
  Syntax:
TRUNCATE TABLE tabellenname 
  Beispiel:     
TRUNCATE TABLE ex_kollegen;
 
Views
Bettet Unterabfrage in die Anweisung 'CREATE VIEW' mit ein
  Syntax:
CREATE VIEW  viewname    
                AS subquery 
  Beispiel:
CREATE OR REPLACE VIEW empvu20 (nr, nname,
   beruf) AS SELECT empno, ename, job FROM emp
   WHERE deptno = 20 WITH CHECK OPTION;
 
Löscht eine View
  Syntax:
DROP VIEW  viewname 
  Beispiel:
DROP VIEW empvu20;
Fügt Daten einer View hinzu
  Syntax:
 INSERT INTO  view [(spalte, ...)]  
                                VALUES (value, ...) 
  Beispiel:
INSERT INTO emp_view (empno, ename, deptno)
   VALUES (9000,'HUGO',20);
Benutzen einer Inline View als Datenquelle
 Syntax:
SELECT  spalte, spalte  
FROM tabelle alias,
(inline view) alias 
bedingung
  Beispiel:
SELECT a.ename, a.sal, a.deptno, b.maxsal  
   FROM emp a, (SELECT deptno, max(sal) maxsal       
                FROM emp GROUP BY deptno) b
   WHERE a.deptno = b.deptno
   AND a.sal<b.maxsal;
Top-N-Analysen ermitteln die größten bzw. kleinsten Werte einer Spalte
  Syntax:
SELECT rownum alias, spalte, ...   
   FROM (inline view   
   ORDER BY spalte)
   bedingung  
  Beispiel:
SELECT rownum rang, ename, sal
   FROM (SELECT ename, sal FROM emp
         ORDER BY sal desc)
   WHERE rownum< = 5;