Example create table

De wiki.nexiat.fr
Aller à la navigation Aller à la recherche
Fiche express
Type Exemple DDL Oracle
Contexte Création de table, contraintes NOT NULL / clé primaire / clé étrangère
Voir aussi Example create primary foreign key · Example create tablespace

Script de base pour créer deux tables liées — DEPT (services) et EMP (employés), le schéma de démonstration le plus classique de la documentation Oracle. Il montre l'enchaînement complet : suppression préalable (idempotence), création avec stockage explicite, ajout de la clé primaire (avec index dédié dans un tablespace séparé), contraintes NOT NULL, puis clé étrangère entre les deux tables.

Script

/* ------------------------------------------------------
 * CREATE TABLE (DEPT)
 * ------------------------------------------------------ */

PROMPT Dropping Table (dept)...
DROP TABLE dept CASCADE CONSTRAINTS
/

PROMPT Creating Table (dept)...
CREATE TABLE dept (
    deptno  NUMBER(2)
  , dname   VARCHAR2(14)
  , loc     VARCHAR2(13)
)
TABLESPACE users
STORAGE (
  INITIAL     128K
  NEXT        128K
  MINEXTENTS  1
  MAXEXTENTS  121
  PCTINCREASE 0
)
/

ALTER TABLE dept
  ADD CONSTRAINT dept_pk PRIMARY KEY (deptno)
  USING INDEX
  TABLESPACE idx
  STORAGE (
    INITIAL     64K
    NEXT        64K
    MINEXTENTS  1
    MAXEXTENTS  121
    PCTINCREASE 0
  )
/

ALTER TABLE dept
  MODIFY (dname CONSTRAINT dept_nn1 NOT NULL)
/

/* ------------------------------------------------------
 * CREATE TABLE (EMP)
 * ------------------------------------------------------ */

PROMPT Dropping Table (emp)...
DROP TABLE emp CASCADE CONSTRAINTS
/

PROMPT Creating Table (emp)...
CREATE TABLE emp (
    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)
)
TABLESPACE users
STORAGE (
  INITIAL     128K
  NEXT        128K
  MINEXTENTS  1
  MAXEXTENTS  121
  PCTINCREASE 0
)
/

ALTER TABLE emp
  ADD CONSTRAINT emp_pk PRIMARY KEY (empno)
  USING INDEX
  TABLESPACE idx
  STORAGE (
    INITIAL     64K
    NEXT        64K
    MINEXTENTS  1
    MAXEXTENTS  121
    PCTINCREASE 0
  )
/

ALTER TABLE emp
  MODIFY (
    ename    CONSTRAINT emp_nn1 NOT NULL
  , job      CONSTRAINT emp_nn2 NOT NULL
  , hiredate CONSTRAINT emp_nn3 NOT NULL
)
/

ALTER TABLE emp
  ADD CONSTRAINT emp_fk1 FOREIGN KEY (deptno)
  REFERENCES dept (deptno)
/

Comme pour toute clé étrangère, il est recommandé d'indexer la colonne côté table enfant (emp.deptno ici) pour éviter les verrouillages de table complets lors des suppressions/mises à jour sur la table parente — voir le détail dans Example create primary foreign key.

Voir aussi