Vous êtes sur la page 1sur 11

Langage SQL pour Oracle

Les principaux types de donnes ainsi que leurs limites


sont dcrits dans le tableau
type
chaines

syntaxe

description

limites

CHAR

un seul caractre

CHAR(n)

chaine de longueur fixe n(complte


par des espaces)

1<= n <=2000

VARCHAR2 (n)

chaine de longueur variable n


(taille ajuste au contenu)

1<=n <=4000

NUMBER(p)

entier p chiffres dcimaux

NUMBER (p, s)

nombre rel virgule fixe p chiffres


dcals de s chiffres aprs la virgule

NUMBER

nombre rel virgule flottante avec


environ 16 chiffres significatifs

DATE

entier dcrivant le nombre de


secondes coules depuis le 01/01/4712 0:00:00

de
caractres

1<= p <=38
-84<=s <=127

nombres

date et
heure

du 01/01/-4712 au 31/12/9999
a` la seconde prs

CLIENTS

COMMANDES
ARTICLES

Num_cli

Numero_cd

Nom_cli

Date_cd

Prenom_cli

Num_cli

Naissance_li

Numero_art
Designation
Prix_unite
Quantite

Ecrire les instructions SQL qui permettent de crer ces trois tables

CREATE TABLE clients


(
Num_cli NUMBER(6) CONSTRAINT pk_clients PRIMARY KEY,
Nom_cli VARCHAR2(63) NOT NULL,
Prenom_cli VARCHAR2 (63),
Naissance_cli DATE
);
CREATE TABLE commandes
(
Numero_cd NUMBER(8) CONSTRAINT pk_commandes PRIMARY KEY,
Date_cd DATE DEFAULT SYSDATE,
Num_cli NUMBER(6) CONSTRAINT fk_commandes_to_clients REFERENCES clients
(Num_cli)
);
CREATE TABLE articles
(
Numero_art NUMBER(6) CONSTRAINT pk_articles PRIMARY KEY, designation
VARCHAR2(255) UNIQUE,
Prix_unite NUMBER(8,2) NOT NULL,
Quantite NUMBER(5)
);

Modification la structure dune table


Supprimer une table

ALTER TABLE clients ADD (code_postal


CHAR(5));
ALTER TABLE articles MODIFY (designation
VARCHAR2(127));
DROP TABLE clients;
Pour retrouver toutes les tables de linstance Oracle en cours :
SELECT * FROM user_tables;
Pour connaitre la liste des colonnes dune table :
DESCRIBE nom_de_la_table; ou bien DESC nom_de_la_table;

Cl primaire composite
CLIENTS

COMMANDES
Lignes_commandes

Num_cli

Numero_cd

Nom_cli

Date_cd

Prenom_cli

Num_cli

Naissance_li

commande
article

quantite_cd

ARTICLES
Numero_art
Designation
Prix_unite
Quantite

Donner la requte SQL pour crer la table Lignes_commandes sachant


quelle a comme cl primaire composite (commande,article)

CREATE TABLE lignes_commandes (


-- dclaration des colonnes et de leurs contraintes simples
commande NUMBER(8) CONSTRAINT fk_lignes_to_commandes
REFERENCES commandes(numero_cd),
article NUMBER(6) CONSTRAINT fk_lignes_to_articles
REFERENCES articles(numero_art),
Quantite_cd NUMBER(4) NOT NULL,
-- dclaration des contraintes qui portent sur une cl primaire composite
CONSTRAINT pk_lignes_commandes PRIMARY KEY (commande, article),
);

Pour lister les contraintes(CONSTRAINT) des


tables utilisateurs de linstance encours :
SELECT * FROM user_constraints;

CLIENTS

COMMANDES

ARTICLES

Lignes_commandes

Num_cli

Numero_cd

Nom_cli

Date_cd

Prenom_cli

Num_cli

commande
article
quantite_cd

Naissance_li

Numero_art
Designation

Prix_unite
Quantite
REFUS

Requte SQL pour crer la table REFUS sachant quelle a pour


PRIMARY KEY (commande_refus, article_refus, date_refus)
Et pour FOREIGN KEY (commande_refus, article_refus) qui
font REFERENCES aux champs (commande,article) de la table
Lignes_commandes

Commande_refus
Article_refus
Date_refus
Quantite_refus

Motif

CREATE TABLE REFUS (


Commande_refus NUMBER(8),
Article_refus NUMBER(6),
Date_refus DATE,
Quantite_refus NUMBER(4),
Motif VARCHAR2(255),
CONSTRAINT pk_refus PRIMARY KEY (commande_refus,
article_refus, date_refus),
CONSTRAINT fk_refus_to_lignes FOREIGN KEY
(commande_refus, article_refus) REFERENCES
lignes_commandes(commande, article),
);