Mercredi 8 juin 2011 3 08 /06 /Juin /2011 10:22

 

Création d'une TABLE Oracle avec l'ordre SQL CREATE TABLE.

Comment créer une TABLE dans ma base de données Oracle ? .

Rappel :

• Pour créer une table dans votre schéma, il vous faut le privilège CREATE TABLE ou le privilège CREATE ANY TABLE.
• On crée une table avec la commande SQL CREATE TABLE.
• On modifie la structure d'une table avec la commande SQL ALTER TABLE.
• On supprime une table avec la commande SQL DROP TABLE.
• On vide totalement une table avec la commande SQL TRUNCATE TABLE.

 

Autoriser les privilèges CREATE TABLE ou CREATE ANY TABLE.

 
SQL> GRANT CREATE TABLE TO SCOTT;

Grant succeeded.

SQL> GRANT CREATE ANY TABLE TO SCOTT;

Grant succeeded.

SQL>

CREATE ANY TABLE autorise la création de tables dans tout schéma.
CREATE TABLE autorise la création de tables uniquement dans son schéma.

 

Syntax commande SQL CREATE TABLE.

 
CREATE TABLE [ schema. ]table
   (
   [ column datatype [DEFAULT expr] [NOT NULL][(inline_constraint | inline_ref_constraint )],
     column datatype... ],
   [table_constraint [,…]]
   [table_ref_constraint [,…]]
   )
   [TABLESPACE nom_tablespace]
   [LOGGING | NOLOGGING]
   ... 
   ;

 

Exemple 1 CREATE TABLE avec une PRIMARY KEY et CHECK.

 
CREATE TABLE scott.vehicule
    ( vehicule_id     NUMBER(6)
    , vehicule_marque VARCHAR2(30) CONSTRAINT ck_vehic_marq_nn NOT NULL
    , vehicule_modele VARCHAR2(30) CONSTRAINT ck_vehic_mod_nn NOT NULL
    , date_sortie     DATE         
    , vehicule_prix   NUMBER(10,2) 
    , CONSTRAINT pk_vehicule_id    PRIMARY KEY (vehicule_id)
    ) 
   TABLESPACE data; 
 
SQL> COLUMN CONSTRAINT_NAME FORMAT A20
SQL> COLUMN INDEX_NAME FORMAT A20
SQL> COLUMN COLUMN_NAME FORMAT A15
SQL> SET LINESIZE 150
SQL> SELECT   a.CONSTRAINT_NAME,
  2           a.CONSTRAINT_TYPE,
  3           a.INDEX_NAME,
  4           b.COLUMN_NAME,
  5           b.POSITION
  6    FROM   all_constraints a, all_cons_columns b
  7   WHERE       a.owner = 'SCOTT'
  8           AND a.TABLE_NAME = 'VEHICULE'
  9           AND a.CONSTRAINT_NAME = b.CONSTRAINT_NAME;

CONSTRAINT_NAME      C INDEX_NAME           COLUMN_NAME       POSITION
-------------------- - -------------------- --------------- ----------
PK_VEHICULE_ID       P PK_VEHICULE_ID       VEHICULE_ID              1
CK_VEHIC_MOD_NN      C                      VEHICULE_MODELE
CK_VEHIC_MARQ_NN     C                      VEHICULE_MARQUE

SQL>

 

 

Exemple 2 CREATE TABLE avec une PRIMARY KEY (INDEX COMPOSITES sur 3 Colonnes).

 
CREATE TABLE scott.vehicule
    ( vehicule_id     NUMBER(6)
    , vehicule_marque VARCHAR2(30) DEFAULT 'RENAULT'
    , vehicule_modele VARCHAR2(30) 
    , date_sortie     DATE         
    , vehicule_prix   NUMBER(10,2) 
    , CONSTRAINT pk_vehicule_id PRIMARY KEY (vehicule_id,
                                             vehicule_marque,
                                             vehicule_modele)
    ) 
   TABLESPACE data;
 
SQL> COLUMN CONSTRAINT_NAME FORMAT A20
SQL> COLUMN INDEX_NAME FORMAT A20
SQL> COLUMN COLUMN_NAME FORMAT A15
SQL> SET LINESIZE 150
SQL> SELECT   a.CONSTRAINT_NAME,
  2           a.CONSTRAINT_TYPE,
  3           a.INDEX_NAME,
  4           b.COLUMN_NAME,
  5           b.POSITION
  6    FROM   all_constraints a, all_cons_columns b
  7   WHERE       a.owner = 'SCOTT'
  8           AND a.TABLE_NAME = 'VEHICULE'
  9           AND a.CONSTRAINT_NAME = b.CONSTRAINT_NAME;

CONSTRAINT_NAME      C INDEX_NAME           COLUMN_NAME       POSITION
-------------------- - -------------------- --------------- ----------
PK_VEHICULE_ID       P PK_VEHICULE_ID       VEHICULE_ID              1
PK_VEHICULE_ID       P PK_VEHICULE_ID       VEHICULE_MARQUE          2
PK_VEHICULE_ID       P PK_VEHICULE_ID       VEHICULE_MODELE          3

SQL>

 

Exemple 3 CREATE TABLE avec un Index UNIQUE (unicité) et 3 CHECK.

 
CREATE TABLE scott.vehicule
    ( vehicule_id     NUMBER(6)
    , vehicule_marque VARCHAR2(30)
    , vehicule_modele VARCHAR2(30) 
    , date_sortie     DATE         CONSTRAINT ck_vehic_date_nn NOT NULL
    , vehicule_prix   NUMBER(10,2) CONSTRAINT ck_vehic_prix_nn NOT NULL
    , CONSTRAINT ck_vehic_prix_min CHECK (vehicule_prix > 0) 
    , CONSTRAINT un_vehicule_id    UNIQUE (vehicule_id)
    ) 
   TABLESPACE data; 
COMMENT ON COLUMN SCOTT.VEHICULE.VEHICULE_PRIX IS 'Prix neuf';
 
SQL> COLUMN CONSTRAINT_NAME FORMAT A20
SQL> COLUMN INDEX_NAME FORMAT A20
SQL> COLUMN COLUMN_NAME FORMAT A15
SQL> SET LINESIZE 150
SQL> SELECT   a.CONSTRAINT_NAME,
  2           a.CONSTRAINT_TYPE,
  3           a.INDEX_NAME,
  4           b.COLUMN_NAME,
  5           b.POSITION
  6    FROM   all_constraints a, all_cons_columns b
  7   WHERE       a.owner = 'SCOTT'
  8           AND a.TABLE_NAME = 'VEHICULE'
  9           AND a.CONSTRAINT_NAME = b.CONSTRAINT_NAME;

CONSTRAINT_NAME      C INDEX_NAME           COLUMN_NAME       POSITION
-------------------- - -------------------- --------------- ----------
UN_VEHICULE_ID       U UN_VEHICULE_ID       VEHICULE_ID              1
CK_VEHIC_PRIX_MIN    C                      VEHICULE_PRIX
CK_VEHIC_PRIX_NN     C                      VEHICULE_PRIX
CK_VEHIC_DATE_NN     C                      DATE_SORTIE

SQL>

 

Liens en rapport avec l'article et qui sont susceptibles de vous intéresser
• Ajouter un champ de table Oracle ALTER TABLE ADD
• Modifier un champ de table Oracle ALTER TABLE MODIFY
Par Daniel Roesch - Publié dans : TABLES - INDEX
Ecrire un commentaire - Voir les 0 commentaires
Retour à l'accueil

À lire aussi…

DBA Online

Download Ressources Oracle

Rechercher

Tutoriel - Cours

Paramètres Instance

Oracle 10G - DBA -

Syndication

  • Flux RSS des articles
Contact - C.G.U. - Rémunération en droits d'auteur - Signaler un abus - Articles les plus commentés