Overblog Suivre ce blog
Editer l'article Administration Créer mon blog
8 juin 2011 3 08 /06 /juin /2011 10:22

 

CREATE TABLE - Création 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.

 

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] ... ; 

 

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> 

 

 

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> 

 

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

Partager cet article

Repost 0
Published by Oracle SQL - dans TABLES
commenter cet article

commentaires