Notizen zu SQL |
CREATE TABLE <TabellenName> ( [ PRIMARY KEY ( <FeldNamensListe> ), ] [ FOREIGN KEY ( <FeldName> ) REFERENCES <TabellenName>, ]* [ UNIQUE ( <FeldNamensListe> ), ] <FeldDeklarationen> ) |
Die Verwendung des Schlüsselwortes UNIQUE an dieser Stelle wird nicht von allen Datenbanken
unterstützt.
In solchen Fällen verwendet man einen INDEX mit dem Attribut UNIQUE.
Löschen einer Tabelle
Mit DROP TABLE <TabellenName>
wird eine Tabelle wieder gelöscht.
Ändern der Tabelle
Das Ändern einer Tabelle sollte vermieden werden, kann
aber durch den Befehl ALTER TABLE erreicht werden.
Nicht alle Datenbanken unterstützen diesen Befehl.
ALTER TABLE <TabellenName> DROP <Spalte> ALTER TABLE <TabellenName> ADD <FeldDeklarationen> ALTER TABLE <TabellenName> MODIFY <FeldDeklaration> |
Mit DROP wird eine Spalte wieder gelöscht.
Mit ADD wird eine oder mehrere Spalten hinzugefügt.
Mit MODIFY wird eine Spalte in ihren Datentyp geändert.
Index
Ein Index ist schneller Zugriffspfad auf die Daten. Durch das Wort UNIQUE
wird gewährleistet, daß der Inhalt für die Tabelle eindeutig
ist.
CREATE [UNIQUE] INDEX <Indexname>
ON <TabellenName> ( <FeldNamensListe> );
|
Key (Primary und Foreign)
Ein Key bietet die Möglichkeit, einzelne Sätze aus anderen Tabellen zu
referenzieren. Die Zieltabelle muss einen Primary Key besitzen, über den
die Zeilen eindeutig bestimmt werden können.
Er wird mit dem
CREATE TABLE
definiert oder kann mit ALTER TABLE nachdefiniert
werden. Ein Primary Key erfordert immer einen unique Index.
Auf den Primary Key kann sich der Foreign Key einer anderen Tabelle beziehen. In dieser Spalte befindet sich der Wert des Primary Key der Zieltabellenzeile, auf den referenziert werden soll. Bevor ein Foreign Key gesetzt wird, muss der Primary Key der Zieltabelle definiert sein.
ALTER TABLE <TabellenName> { [ADD] | DROP }
PRIMARY KEY ( <FeldNamensListe> );
ALTER TABLE <TabellenName> { [ADD] | DROP }
FOREIGN KEY <KeyName> ( <FeldName> ) REFERENCES <TabellenName>;
|
CREATE VIEW <ViewName> [ (<FeldNamensListe>) ] AS SELECT <Select-Parameter> ; |
Wird die FeldNamensListe angegeben, werden die Spaltennamen des FROM-Attribut
auf diese Namen umgesetzt.
Data Manipulation Language (DML)
INSERT
INSERT INTO <TabellenName> ( <FeldNamensListe> ) VALUES (<Wert> [, <Wert>]* ); |
Es kann durch Kombination mit einer Abfrage auch der Inhalt einer oder mehrerer anderer Tabellen eingefügt werden.
INSERT INTO <Tabellenname> [ ( <Feldname> [, <Feldname]* ) ] SELECT <Select-Parameter> ; |
UPDATE <TabellenName> SET <FeldName>=<Wert> [,<FeldName>=<Wert>]* <WhereKlausel> |
DELETE FROM <TabellenName> <WhereKlausel> |
SELECT {<FeldNamensListe> | '*' } FROM <TabellenName> [ <WhereKlausel> ] ;
|
WHERE-Klausel
WHERE wird benutzt um eine Selektion zu realisieren,
also eine Einschränkung der Zeilenzahl.
WHERE <Bedingung> |
Das WHERE kennt neben =, <, >, <>, <= und >= die Vergleichsoperatoren:
| LIKE | enthält die Zeichenkette. Dabei gelten die Wildcards _ für ein Zeichen und % für eine beliebige Zeichenkette. |
| BETWEEN | der Wert liegt zwischen zwei Werten. Beispiel: Wert BETWEEN 'A' AND 'Z' |
| IS NULL | der Wert ist bisher nicht besetzt worden. Beispiel: Wert IS NULL |
GRANT <Rechte> ON <Objekt> TO <Benutzer> |
Als Objekt werden in der Regel Tabellen oder Datenbanken angegeben. Als Rechte können einzelne SQL-Befehle aufgeführt werden oder ALL PRIVILEGES, um alle Rechte über das Objekt zu erlangen.
Mit dem Befehl REVOKE werden diese Rechte wieder entzogen.
REVOKE <Rechte> ON <Objekt> FROM <Benutzer> |
Ein Feld kann durch IS NULL auf NULL abgefragt werden. NOT NULL ist die Festlegung in der Tabellendefinition, dass ein Feld niemals leer sein darf.
Eine Zeichenkettenkonstante wird durch einfache Hochkommata eingeschlossen. Zeichenkettenkonstanten, die nur durch Zeilenvorschübe getrennt sind, werden wie eine Zeichenkettenkonstante behandelt.
Ein Datum wird nach ISO-8601 in der Reihenfolge Jahr, Monat und Tag durch Minuszeichen getrennt geschrieben. Der 23. Mai 1949 schreibt sich also '1949-05-23'. Die Konstante CURRENT_DATE steht für das heutige Datum.
SELECT * FROM USER_TABLES; SELECT * FROM ALL_TABLES; SELECT * FROM DBA_TABLES; |
SELECT * FROM systables; zeigt alle angelegten Tabellen der DB SELECT * FROM syscolumns WHERE tbname='ORDERS'; zeigt alle Spalten der Tabelle ORDERS |
Ex- und Import der Datenbankdaten
gupta / Centura
UNLOAD { ASCII | DIF | [ DATA ] SQL } <DateiName> [ OVERWRITE ] <TabellenName>
LOAD { ASCII | DIF | SQL } <DateiName> ;
|
Mit dem Schlüsselwort ASCII werden reine Textdateien mit den Tabelleninhalten erzeugt. DIF ist ein Standard zum Austausch von Tabellen zwischen Datenbanken und Spreadsheets und enthält keine Strukturinformation. SQL erzeugt eine Datei, die SQL-Befehle enthält, die die Tabelle mit allen Inhalten erzeugen.
Beim Export (UNLOAD) sind nur Tabellen, nicht aber VIEWs zulässig. Auch das Anhängen von WHERE ist nicht möglich.
<DateiName> bezeichnet einen Dateinamen, wie er im Betriebssystem des lokalen Rechners
üblich ist.
Eine durch Komma getrennte Liste von Feldnamen.
Eine durch Komma getrennte Liste von Rechten.
Definitionen
CHAR(<n>) Zeichenkette NUM [(<StellenZahl> [, <NachKommaStellen>])] ganzzahlig FLOAT Fließkomma DATE Datum: Konstante: 12/24/1999 Notation der Befehle
<xxx> | xxx ist durch etwas anderes zu füllen, beispielsweise Namen oder Werte |
[xxx] | xxx kann auftreten, muß aber nicht. |
[xxx]* | xxx kann nicht oder mehrfach auftreten. |
{ xxx | yyy | zzz }
| Es muß exakt eines von xxx oder yyy oder zzz auftreten. |
'x' | Hier ist das Zeichen x, nicht das Metazeichen x gemeint. Bsp.: '*' meint das Zeichen * |
| Homepage | (C) Copyright 1999, 2002, 2010 Arnold Willemer |