Example create table
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
- Example create primary foreign key — détail de l'ajout de clé primaire/étrangère et de l'index associé
- Example create tablespace — création des tablespaces USERS/IDX utilisés ici
- Example create table buffer pools — variante avec affectation explicite du buffer pool
- Example create temporary tables — tables temporaires (GLOBAL TEMPORARY), objet distinct