DarkSQL by Darkleo.com

DarkSQL Einführung in die Syntax

Data Definition Language (DDL)
Tabellen
Anlegen einer Tabelle
Löschen einer Tabelle
Ändern der Tabelle
Index
Key (Primary und Foreign)
Ansichten (Views)
Data Manipulation Language (DML)
INSERT
UPDATE
DELETE
Anfragen: SELECT
WHERE-Klausel
Herstellerspezifisches
Die Systemtabellen
Ex- und Import der Daten
Definitionen
Notation der Befehle

Data Definition Language (DDL)

Tabellen

Anlegen einer Tabelle

Eine Datenbank besteht aus mehreren Tabellen, die zunächst einmal erzeugt werden müssen.

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>
ALTER TABLE <TabellenName> ALTER <VorhandeneSpalte NeuerDatentyp>

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>;

Ansichten (Views)

Mit CREATE VIEW kann eine Tabelle eingeschränkt werden. und damit verschiedenen Benutzern nur Teile der Datenbank zur Verfügung gestellt werden.

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

UPDATE <TabellenName> 
 SET <FeldName>=<Wert> [,<FeldName>=<Wert>]* <WhereKlausel>

DELETE

DELETE FROM <TabellenName> <WhereKlausel>

Anfragen: SELECT

Eine Abfrage wird durch den Befehl SELECT realisiert. Die Besonderheiten liegen in seinen Parametern.

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

Herstellerspezifisches

Die Systemtabellen

Die Anzeige der Datenbankstruktur erfolgt durch Abfrage der Data Dictionary Tabellen. Es handelt sich um ganz normale Abfragebefehle, die auf die Systemtabellen angewendet werden. Die Namen und die Struktur der Tabellen sind von Hersteller zu Hersteller verschieden.

Oracle

SELECT * FROM USER_TABLES;
SELECT * FROM ALL_TABLES;
SELECT * FROM DBA_TABLES;

gupta/Centura

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.

Definitionen

FeldDeklarationen::
<Feldname> <Typ> [NOT NULL] [ , <Feldname> <Typ> [NOT NULL] ]*

FeldNamensListe::
<Feldname> [ ,<Feldname> ]*

Eine durch Komma getrennte Liste von Feldnamen.

Typ::
Der Datentyp kann einer der folgenden sein:

CHAR(<n>)Zeichenkette
NUM [(<StellenZahl> [, <NachKommaStellen>])]ganzzahlig
FLOATFließkomma
DATEDatum: Konstante: 12/24/1999

TabellenName
Eine Tabelle, ein View oder eine virtuelle Tabelle, die durch eine Abfrage gebildet wird.

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 *