Muniqsoft Training

Auswahl  

15 CREATE TABLE Beispiele für Oracle (Version 10.2 bis 19c) 

Oracle
SQL
RDBMS 12.x
20.03.18 (MP)
11.12.18 (MM)
CREATE Table, Tabellenerstellung, External Table, Collation, Primary Key, Foreign Key, Temporäre Tabelle

Body

In unserem heutigen Tipp widmen wir uns dem wichtigsten Konzept einer Datenbank überhaupt: Der Tabelle!

Nachdem ich immer wieder nach Beispielen zu speziellen CREATE TABLE Befehlen suchen muss, war es mal an der Zeit eine eigene Zusammenfassung zu erstellen.

Fall 1: Eine Tabelle soll mit den gängigsten numerischen Datentypen erstellt werden:

CREATE TABLE t (
  c1 BINARY_DOUBLE,
  c2 BINARY_FLOAT,
  c3 DEC,
  c4 DECIMAL,
  c5 FLOAT,
  c6 INT,
  c7 INTEGER,
  c8 NUMBER(9,2),
  c9 NUMERIC );


Fall 2: Als nächstes nehmen wir die sonstigen Datentypen:

CREATE TABLE t (
  c1 char(1),
  c2 char,
  c3 varchar2(4000),
  c4 varchar(4000),
  c5 BLOB,
  c6 CLOB,
  c7 BFILE,
  c8 RAW(2000),
  c9 date,
  c10 timestamp,
  c11 rowid );


Fall 3: Die Tabelle soll mit der neuen LOB Speichertechnik (ab 11.1), den Securefiles, erstellt werden:

CREATE TABLE t (
  c1 NUMBER,
  c2 CLOB,
  CONSTRAINT t_pk PRIMARY KEY (c1) )
  LOB(c2) STORE AS SECUREFILE my_lob_tbs;


Fall 4: Die Tabelle soll erst dann physisch angelegt werden, wenn die erste Zeile eingetragen wurde:

CREATE TABLE t (
  c1 NUMBER )
  SEGMENT CREATION DEFERRED;


Fall 5: Die Tabelle soll mit dem Attribut NOLOGGING erstellt werden:

CREATE TABLE t (
  c1 INT,
  c2 VARCHAR2(4000) )  -- AB 12.2 bis 32767 möglich
  NOLOGGING;


Nachträglich kann die Tabelle wieder in LOGGING bzw. NOLOGGING geändert werden:

ALTER TABLE t LOGGING;
ALTER TABLE t NOLOGGING;


Fall 6: Sie wollen einen speziellen Tablespace für die Tabelle angeben:

CREATE TABLE t (
  c1 INT,
  c2 VARCHAR2(4000) )
  TABLESPACE user_tbs;


Fall 7: Die Tabelle soll einen Primärschlüssel besitzen:

CREATE TABLE t (
  c1 INT PRIMARY KEY );


Fall 8: Die Tabelle soll einen Fremdschlüssel (Foreign Key) besitzen:

CREATE TABLE t (
  c1 INT,
  c2 INT,
  c3 INT,
  CONSTRAINT fk_cons FOREIGN KEY (c1, c2,c3) REFERENCES t2(c1, c2,c3);


Fall 9: Die Tabelle soll eine spezielle Sortierung für eine Spalte eingestellt bekommen. Diese Funktion steht erst ab 12.2 zur Verfügung. Außerdem muss der Parameter max_string_size= EXTENDED gesetzt sein.

CREATE TABLE t (
  c1 NUMBER,
  c2 VARCHAR2(2000 CHAR) COLLATE GERMAN_CI );


Fall 10: Die Tabelle soll nur die Daten temporär aufbewahren (bis zum Sessionende):

CREATE GLOBAL TEMPORARY TABLE t (
  c1 INT,
  c2 VARCHAR2(4000) )
  ON COMMIT PRESERVE ROWS;


Fall 11: Die Tabelle soll nur die Daten temporär aufbewahren (bis zum Transaktionsende):

CREATE GLOBAL TEMPORARY TABLE t (
  c1 INT,
  c2 VARCHAR2(4000) )
  ON COMMIT DELETE ROWS;


Fall 12: Ab Version 18 kann eine temporäre Tabelle erzeugt werden, die zum Transaktionsende samt Definition gelöscht wird.
Hinweis: Sie muss ein Prefix (ora$ptt) im Namen aufweisen. Dies kann jedoch über den Initialisierungsparameter PRIVATE_TEMP_TABLE_PREFIX geändert werden.

CREATE PRIVATE TEMPORARY TABLE ora$ptt_t (
  c1 NUMBER,
  c2  VARCHAR2(20) )
  ON COMMIT DROP DEFINITION;


Fall 13: Auch erst ab Version 18 verfügbar, ist die zweite Variante der privaten temporären Tabelle, die erst zum Sessionende gelöscht wird:

CREATE PRIVATE TEMPORARY TABLE ora$ptt_t (
  c1 NUMBER,
  c2  VARCHAR2(20) )

  ON COMMIT PRESERVE DEFINITION;


Fall 14: Die Tabelle soll sich die Änderungs-SCN pro Zeile und nicht nur pro Block merken:

CREATE TABLE t (
  c1 INT,
  c2 VARCHAR2(4000) )
  ROWDEPENDENCIES;


Fall 15: Die Tabelle soll auf einer Datei basieren, die ausserhalb der Datenbank liegt:

Als Benutzer mit DBA Rechten ausführen:

CREATE DIRECTORY utl_dir as 'C:\temp';
GRANT read,write ON DIRECTORY utl_dir TO scott;


Als Benutzer SCOTT ausführen:

CREATE TABLE scott.emp_ext (
  EMPNO     NUMBER(4),
  ENAME     VARCHAR2(10),
  JOB       VARCHAR2(9),
  MGR       NUMBER(4),
  HIREDATE  DATE,
  SAL       NUMBER(7,2),
  COMM      NUMBER(7,2),
  DEPTNO    NUMBER(2) )
ORGANIZATION EXTERNAL
  (
    TYPE ORACLE_LOADER
    DEFAULT DIRECTORY UTL_DIR
    ACCESS PARAMETERS
      (
        RECORDS DELIMITED BY NEWLINE
        FIELDS TERMINATED BY ','
        MISSING FIELD VALUES ARE NULL
          (
            empno,
            ename,
            job,
            mgr,
            hiredate   CHAR(21) DATE_FORMAT DATE MASK "DD-MON-YYYY HH24:MI:SS",
            sal,
            comm,
            deptno
          )
       )
     LOCATION ('emp.txt')
   )
  PARALLEL 1
  REJECT LIMIT UNLIMITED;

 

Die umfangreiche CREATE TABLE Bibliothek für Oracle

Besuchen Sie uns doch bei einer unsere über 40 Oracle Schulungen in München - Unterhaching.