Datenstrukturen definieren

Im ersten Schritt sehen wir uns an, wie Datenstrukturen definiert werden können. In SQL verwendet man dazu den Befehl CREATE TABLE:

test=# \h CREATE TABLE
Command:     CREATE TABLE
Description: define a new table
Syntax:
CREATE [ [ GLOBAL | LOCAL ] { TEMPORARY | TEMP } ] TABLE table_name (
  { column_name data_type [ DEFAULT default_expr ] 
      [ column_constraint [ ... ]
]
    | table_constraint
    | LIKE parent_table [ { INCLUDING | EXCLUDING } DEFAULTS ] }  
      [, ... ]
)
[ INHERITS ( parent_table [, ... ] ) ]
[ WITH OIDS | WITHOUT OIDS ]
[ ON COMMIT { PRESERVE ROWS | DELETE ROWS | DROP } ]
[ TABLESPACE tablespace ]

where column_constraint is:

[ CONSTRAINT constraint_name ]
{ NOT NULL |
  NULL |
  UNIQUE [ USING INDEX TABLESPACE tablespace ] |
  PRIMARY KEY [ USING INDEX TABLESPACE tablespace ] |
  CHECK (expression) |
  REFERENCES reftable [ ( refcolumn ) ] [ MATCH FULL | 
  MATCH PARTIAL | MATCH SIMPLE ]
    [ ON DELETE action ] [ ON UPDATE action ] }
[ DEFERRABLE | NOT DEFERRABLE ] [ INITIALLY DEFERRED | 
  INITIALLY IMMEDIATE ]

and table_constraint is:

[ CONSTRAINT constraint_name ]
{ UNIQUE ( column_name [, ... ] ) 
  [ USING INDEX TABLESPACE tablespace ] |
  PRIMARY KEY ( column_name [, ... ] ) 
  [ USING INDEX TABLESPACE tablespace ] |
  CHECK ( expression ) |
  FOREIGN KEY ( column_name [, ... ] ) REFERENCES reftable 
  [ ( refcolumn [, ... ] ) ]
    [ MATCH FULL | MATCH PARTIAL | MATCH SIMPLE ] 
    [ ON DELETE action ] [ ON UPDATE action ] }
[ DEFERRABLE | NOT DEFERRABLE ] [ INITIALLY DEFERRED | 
  INITIALLY IMMEDIATE ]

CREATE TABLE ist einer der mächtigsten Befehle überhaupt. Wie Sie unschwer erkennen können, ist die Syntax reich an Möglichkeiten und stellt eine Vielzahl von Elementen zur Verfügung, die die exakte Definition einer Tabelle erst ermöglichen.

Jede Datenbank wird CREATE TABLE leicht anders implementieren - in Oracle wird die Syntax leicht anders sein als in PostgreSQL. Sie sollten sich daher vor dem Erzeugen einer Datenstruktur mit den Details der Implementierung beschäftigen.



Subsections

http://www.postgresql.at