SQL PLUS (ORACLE)

Datenbanken Übersicht <--- ---> PL/SQL (Oracle)

select * from tab;           //alle Tabellen anzeigen
describe tablename       //Metadaten anzeigen
edit                              //Letzter Befehl editieren
run                               //Letzter Befehl ausführen
@dateiname.sql            //sql script datei ausführen
rollback                        //letzte mutation rückgangig

SQL Syntax Data Definition Language (DDL)

CREATE TABLE [OwnerName.]TableName (
            TableID             INTEGER NOT NULL,
            Name               CHAR(20) NULL,
            Anzahl              DECIMAL(7,2) NULL,
            Datum              DATE DEFAULT sysdate,
            PRIMARY KEY(TableID)
);

ALTER TABLE TableName
            [ (ADD | MODIFY) namefk FOREIGN KEY(Name) REFERENCES otherTableName ]
            [ ADD | DROP TableContraints(z.B. namefk) ]

DROP TABLE TableName [ RESTRICT / CASCADE ]
RESTRICT: (default) fals referenzen bestehen wird operation abgebrochen.
CASCADE: Constraints(referenzen) und Views werden mitgelöscht.

SQL Syntax Data Manipulation Language (DML)

INSERT INTO TableName (Name, Anzahl) VALUES ('Development', 20.04)

SELECT

SELECT * FROM TableName;                           //liefert alle Zeilen

SELECT DISTINCT Name, Anzahl                      //keine Mehrfachnennungen
FROM TableName                                            //sortieren nach name(absteigend) und
ORDER BY Name DESC, Anzahl ASC               //Anzahl(aufsteigend)

SELECT Name, Anzahl
FROM TableName
WHERE Name='Schneider' AND Anzahl>200     //Bedingungen mit WHERE
             OR Anzahl BETWEEN 100 AND 300     //AND, OR, BETWEEN
            AND Name IN ('Schneider', 'Silvio')         //IN

WHERE Name LIKE('___%')                             //mindest 3 Zeichen
SELECT Name AS 'Mitarbeiter'                         //Überschrift ändern
WHERE Chef IS NOT NULL                              //keine Nullwerte

SELECT Abfragen mit Gruppenfunktionen

SELECT MAX(Anzahl) FROM Table                   //Maximum
SELECT MIN(Anzahl) FROM Table                    //Minimum
SELECT AVG(Anzahl) FROM Table                   //Durchschnitt
SELECT SUM(Anzahl) FROM Table                   //Summe aller Werte

SELECT COUNT(*) AS 'Anzahl' FROM Table     //Anzahl Tupels zählen
SELECT MIN(Wohnort), COUNT(Wohnort)          //Kunstgriff
FROM Angestellter
WHERE Wohnort='Luzern'                                                       //Case sensitive
SELECT COUNT (DISTINCT Wohnort) FROM Angestellter           //Anzahl Wohnorte

SELECT Abfragen mit GROUP BY und HAVING

SELECT AbtNr FROM Angestellter
GROUP BY AbtNr                                            //nach Abteilung gruppieren
HAVING COUNT(*) >=5                                     //min. 5 Mitarbeiter

JOINS  verbindet Tabellen

SELECT ab.Name, a.Name                               //alias verwenden
FROM Abteilung ab, Angestellter a                    //alias definieren
WHERE ab.AbtNr = a.AbtNr                              //Tabellen über Fremd/PrimaerSchlüssel verbinden

SELECT Unterabfragen

SELECT Salaer                                                //Angestellter der Entwicklung
FROM Angestellter a, Abteilung abt                   //mit dem kleisten Lohn
WHERE Abt.AbtNR=a.AbtNr
AND Abteilung.Name = 'Entwicklung'
AND Salaer =
            (SELECT MIN(Salaer)
             FROM Angestellter a, Abteilung abt
             WHERE a.AbtNr = aAbtNr
             AND abt.Name='Entwicklung')

SELECT Name                                     //Alle Mitarbeiter die noch nicht zugewiesen sind
FROM Angestellter
WHERE PersNr NOT IN            //Komplement
            (Select PersNr
             FROM Projektzuteilung )

UPDATE TUPEL

UPDATE Angestellter                            //Mitarbeiter hat gezügelt
SET Wohnort='Luzern'
WHERE Name='Hans, Muster'

DELETE TUPEL

DELETE FROM Angestellter
WHERE Name='XY'

Datenbanken Übersicht <--- ---> PL/SQL (Oracle)