CREATE TABLE-Anweisung (SQL, Oracle)

Die CREATE TABLE-Anweisung dient zur Anlage von Tabellen? im DBS. Sie gehört zum Sprachumfang der SQL-DDL. Hier ist nur der Auszug aus dem Befehl zu finden, der für das Anlegen von Spalten und Integritätsbedingungen relevant ist. Die vielen Optionen zur Spezifikation einer optimierten Speicherung der Daten sind hier nicht zu finden, zum einen, weil sie äußerst umfangreich sind und zudem trotz aller Standardisierungen doch recht herstellerspezfisch ausfallen. Für weitere Recherchen sei auf die Online-Hilfen der verschiedenen Hersteller verwiesen.

Syntax der CREATE-TABLE·Anweisung (Auszug):

 <CREATE TABLE Anweisung (SQL, Oracle, Auszug)> ::=
    CREATE TABLE Tabellenname  {( <Spaltendefinition>  [ , <Spaltendefinition> ]...
                                | <Tabellenbedingung>  [ , <Tabellenbedingung> ]...  
                                )} 
                              | { AS SELECT-Anweisung } ;

  <Spaltendefinition> ::=
    Spaltenname <SQL-Datentyp> [ DEFAULT <Ausdruck> ] 
                               [ <Spaltenbedingung> [ , <Spaltenbedingung> ]... ]

Beispiele:

  -- Hier nur Spaltenbedingungen
  CREATE TABLE Lager (
    LAnr  INTEGER  CONSTRAINT lager_pk PRIMARY KEY,
    LaBez CHAR(20) CONSTRAINT lager_uk UNIQUE,
    Plz   INTEGER  DEFAULT 56137 NOT NULL);

  -- hier nur Tabellenbedingungen, außer NOT NULL
  -- Da bei der REFERENCES-Klausel keine Spalten angegeben werden, 
  -- wird automatisch der dortige Primärschlüssel verwendet.
  CREATE TABLE Auftragsposition(
    AuftragsNr NUMERIC(10) NOT NULL,
    TNr        NUMERIC(10) NOT NULL,
    Menge      NUMERIC(10) DEFAULT 1 NOT NULL),
    CONSTRAINT aufpos_pk       PRIMARY KEY (Auftragsnr, TNr),
    CONSTRAINT aufpos_teile_fk FOREIGN KEY (TNr) REFERENCES Teile;

  -- hier wird eine komplette Tabellendefinition auf eine neue Tabelle übertragen,
  -- allerdings werden dabei unter Oracle alle CONSTRAINTS bis auf die NOT NULL CONSTRAINTS nicht übernommen
  -- Die Spaltennamen können dabei auch verändert werden.
  CREATE TABLE LAGER_KOPIE 
    AS SELECT * FROM LAGER;

siehe auch : ALTER TABLE, DROP TABLE, Namensraum

Quellen:

  • ANSI/ISO/IEC 9075-1:2003. Part 1 "SQL/Framework", ISO International Organization for Standardization / ANSI American National Standards Institute, September 2003
  • ANSI/ISO/IEC 9075-2:2003. Part 2 "SQL/Foundation", ISO International Organization for Standardization / ANSI American National Standards Institute, Dezember 2003
  • Elmasri, Ramez/Navathe, Shamkant B.: "Grundlagen von Datenbanksystemen" , Pearson Studium, München, 2002, ISBN 3-8273-7021-3
  • Faeskorn-Woyke, Heide/Bertelsmeier, Birgit/Riemer, Petra/Bauer, Elena: "Datenbanksysteme - Theorie und Praxis mit SQL2003, Oracle und MySQL", Pearson Education, München, 2007, ISBN 978-3-8273-7266-6
  • Kemper, Alfons/Eickler, André: "Datenbanksysteme", Oldenbourg, München, 2009, 978-3-486-59018-0
  • Melton, Jim/Simon, Alan R.: "SQL: 1999 - Understanding Relational Language Components", Morgan Kaufmann, San Francisco, 2001, ISBN 1558604561
  • Oracle® Database SQL Language Reference 11g Release 2 (11.2), E17118-03, August 2010, http://download.oracle.com/docs/cd/E11882_01/server.112/e17118.pdf
  • Saake, Gunter/Sattler, Kai-Uwe/Heuer, Andreas: "Datenbanken - Konzepte und Sprachen", mitp-Verlag, Redline GmbH, Heidelberg, 2007, ISBN 3-8266-1664-2
  • Vossen, Gottfried: "Datenmodelle, Datenbanksprachen und Datenbankmanagementsysteme", Oldenbourg, München, 2008, ISBN 978-3-486-27574-2

Kategorie: SQL, C