0% ont trouvé ce document utile (0 vote)
451 vues68 pages

Introduction aux SGBD et SQL

Ce document décrit les concepts de base de données, de SGBD et du langage SQL. Il présente les différents sous-langages SQL comme le LDD pour définir la structure des tables, leurs types de données et les commandes de création de tables.

Transféré par

Amira Skander
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd
0% ont trouvé ce document utile (0 vote)
451 vues68 pages

Introduction aux SGBD et SQL

Ce document décrit les concepts de base de données, de SGBD et du langage SQL. Il présente les différents sous-langages SQL comme le LDD pour définir la structure des tables, leurs types de données et les commandes de création de tables.

Transféré par

Amira Skander
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd

SGBD (Système de Gestion

de Base de Données)

et

SQL
Plan
• Rappel:
– Rappel Base de Données
– Définition d’un SGBD

• SQL: Langage de base d’un SGBD:


– Langage de définition de données : LDD
– Langage de manipulation de données : LMD
– …
• PL/SQL: Langage procédural :
– Introduction à PL/SQL
– Les structures de contrôle
– Interaction avec un SGBD (Oracle)
– …
Rappel
Rappel: Base de Données
• Définition de Base de Données
– Une Base de Données (BD) : ensemble de données structurées accessible
à plusieurs utilisateurs en même temps.

• Objectifs de Base de Données


– Élimination de la redondance des données.

– Indépendance entre les programmes et les données : on peut isoler le


niveau utilisation (application) de l'organisation physique de données.

– Intégration de données : intégration de toutes les données de l'entreprise


dans un réservoir unique de données.
Comment structurer les données ?

•Les données sont représentées dans des tables

•Le découpage en tables demande une analyse et une


optimisation

•L’analyse doit aller au-delà des besoins immédiats


(abstraction)
Base de données = ensemble de tables
• Chaque table a un nom unique

• Chaque table contient les données relatives à des entités de


même nature.

• Chaque ligne d’une table décrit les données relatives à une


entité.

• Chaque colonne d’une table décrit une propriété des entités

• Les noms de tables et de colonnes constituent le schéma de


la base.
Définition d’un SGBD

• La gestion d'une base de données pose des problèmes


complexes.

• Cette gestion est assurée par des logiciels spécialisés :


=> les Systèmes de Gestion de Bases de Données (SGBD)

Qu'est-ce qu'un SGBD (ou DataBase Management System - DBMS) ?


Logiciel permettant de gérer efficacement de grandes bases de
données.

Exemple : Oracle, DB2, SQL Server, MySQL, PostgreSQL, Microsoft


Access, ...
Objectifs des SGBD
• Organisation des données : le SGBD organise les
données en tables permanentes:

• stockées sur disque; : le SGBD crée les mécanismes


garantissant un accès rapide aux données;

• Gestion des données : le SGBD garantit l'évolution


cohérente des données; il vérifie que les contraintes
(unicité, référence entre tables, etc.) sont respectées.

• Accès aux données : le SGBD permet l'accès aux données


à la fois par les utilisateurs et par les programmes de
traitement de données.
LE LANGAGE SQL
(Structured Query Language)
Introduction
• Les SGBD présentent une interface externe sous forme de langage de
requêtes.

• Celui-ci permet de spécifier les données à sélectionner ou à mettre à


jour sans dire comment les retrouver.

• Plusieurs langages permettant de définir (de créer), de manipuler et de


contrôler les données relationnelles ont été proposés:
• QUEL (QUEry Language),
• QBE (Query By Example) et
• SQL (Structured Query Language).

• L'algèbre relationnelle est la base de développement du langage SQL.

10
Le Langage SQL
• SQL : Structured Query Language (Langage d’interrogation
structuré)
• Développé chez IBM (1970-80)
• Devenu une norme en 1986

• SQL est un Langage de gestion de bases de données pour :


– Interroger une base de données
– Mettre à jour les informations contenues dans les tables
de la base de données
– Définition et Modification du schéma des tables de la
base de données
–…
11
Le Langage SQL
• Aujourd'hui, le langage SQL est normalisé, et est le
standard d'accès aux bases de données relationnelles.

• SQL est un langage simple et concis.

• Il est utilisable directement sur un terminal grâce à l'utilitaire


interactif SQL (SQLPLUS, …)

• ou dans un langage hôte (COBOL, C, C++, JAVA (JDBC), …)

12
Le Langage SQL
• Le langage SQL est basé sur un ensemble d'opérations à
effectuer sur des tables.

• Ces opérations constituent d ’une part l’algèbre relationnelle


et d ’autre part des opérateurs très utiles tels que le tri et les
calculs (agrégats).

• SQL est non-procédural : SQL est un langage de requêtes


qui permet à l’utilisateur de demander un résultat sans se
préoccuper des moyens techniques pour trouver ce
résultat :
• C’est l’optimiseur du SGBD qui se charge de cette tâche.

13
Les sous-langages de SQL
• LDD : Langage de Définition des Données
– Création, Modification et Suppression des objets
– Objets : tables, index, vue, ….

• LMD : Langage de Manipulation des Données


– Ajout, Modification et Suppression des données
– Sélection (recherche) de l’information

• LCD : Langage de Contrôle de l’accès aux Données:


– Gestion des privilèges d'accès aux données
– Notion de rôles et de privilèges

• LCT: Langage de Contrôle des Transactions


– Gestion de la concurrence des opérations
– …
14
Subdivisions du SQL
LCT:
SET TRANSACTION, COMMIT, ROLLBACK

LMD: LCD:
LDD: SELECT,
CREATE, CONNECT,
INSERT, GRANT,
ALTER, UPDATE, REVOKE
DROP DELETE

Programmation SQL:
DECLARE, FETCH, PREPARE,
DESCRIBE, EXECUTE
Langage SQL – Syntaxe général
• SQL est insensible à la casse (majuscule/minuscule) des
caractères.

• Commentaires : /* … */

• Chaîne de caractères : suite de caractères entre deux


apostrophes.

• Noms des objets (tables) : doivent commencer par une


lettre et ne contenir que des caractère de A à Z, les chiffres
de 0 à 9 et le caractère souligné _ (max = 128 caractères) .

• Liste : la virgule est utilisée comme séparateur pour les


éléments de la liste.
16
SQL - LDD
Langage de Définition de Données :
Langage de définition de données :
LDD
• La définition de données dans SQL permet la
définition des objets (tables, …) manipulés par
le SGBD.

• Les commandes du LDD sont :


– CREATE : création des objets.
– ALTER : modification de la structure des objets.
– DROP : suppression des objets.
LDD: Syntaxe de Création des tables
• La Création d’une table consiste à définir:
• son nom,
• les colonnes qui la composent
• et leurs types.

Elle se fait avec la commande SQL :


CREATE TABLE ... … …
Syntaxe de Création des tables
Syntaxe simplifié de la commande CREATE :
create table nom_table
(colonne1 type1(taille),
colonne2 type2(taille),
…………………….
constraint nom_contrainte
type_contrainte,
…………………….
);
PRIMARY KEY

3 Types de Contraintes FOREIGN KEY

CHECK (NOT NULL, UNIQUE)

20
Syntaxe de Création des tables
Exemple

-Création de Table contenant ‘les services d’une entreprise’

CREATE TABLE service


(IdService CHAR(3),
NomService VARCHAR(30),

CONSTRAINT pk_service PRIMARY


KEY(IdService)
);

• CHAR : stocke des chaînes comportant au maximum 255 caractères


dans une colonne de longueur fixe : CHAR(n).
• VARCHAR: Il stocke jusqu'à 4000 caractères dans une seule colonne
pour des chaînes de longueur variable.
21
Création des tables
Définition des colonnes : les types de données

create table nom_table


(colonne1 type1(taille),
colonne2 type2(taille),
…………………….
constraint nom_contrainte type_contrainte,
…………………….
);

• La taille indique la valeur maximale de la longueur du champ.


• Les types de données possibles sont :
– NUMBER(n,m) : stocke les nombres en général entiers positifs et
• n : varie de 1 à 38 et indique le nombre maximum des chiffres à
stocker.
• m : indique le nombre de chiffres situés à droite de la virgule,

– … voir page suivante …


Création des tables:
Définition des colonnes : Les types de données
• CHAR : stocke des chaînes comportant au maximum 255 caractères
dans une colonne de longueur fixe : CHAR(n). Si on ne spécifie pas la
longueur : CHAR, une colonne de ce type ne stocke qu'un seul caractère.

• VARCHAR / VARCHAR2 : Il stocke jusqu'à 4000 caractères dans une


seule colonne pour des chaînes de longueur variable.

• LONG : donnée de type caractère variable allant jusqu'à 2 G. Mais on


ne peut pas employer de fonctions intégrées ni d'opérateurs avec ce type
(pour chercher ou modifier le contenu d'une colonne de ce type). On peut
stocker et récupérer ces données mais pas les manipuler.

• DATE, TIME, … : permet de stocker des informations concernant les


dates et les heures (voir page suivante types de donnée temporels).
Création des tables:
Définition des colonnes : Les types de donnée temporels
– DATE : date du calendrier entre le 1 janvier 1 et 31
décembre 9999.
– TIME : Temps sur 24 heures

– TIMESTAMP : DATE + TIME.

• Exemples de colonnes :
– date_naiss DATE
format iso : ‘aaaa-mm-jj’
– heure_naiss TIME
format iso : ‘hh:mm:ss.nnn’
– date_heure_naiss TIMESTAMP
format iso :’aaaa-mm-jj hh:mm:ss.nnn’
24
Création des tables:
Définition des colonnes : les types de donnée BLOB

• BLOB : Binary Large OBjects


• Famille de type :
– Image
– Son
– Vidéo
– …

25
Exemple : Créer la table Produit ayant comme schéma :
Produit (Numprod, Desprod, Couleur, Poids, Qte_stk, Qte_seuil, Prix)
Avec:
Numprod : de type numérique de taille 6,
Desprod : de type caractère variable de taille 15,
Couleur : de type caractère sur une position,
Poids : de type numérique sur huit positions dont trois chiffre après
la virgule,
Qte_stk : de type numérique sur sept positions dont trois chiffres
après la virgule,
Qte_seuil : de type numérique sur sept positions dont trois chiffres
après la virgule,
Prix : de type numérique sur dix positions dont sept chiffres avant la
virgule.
Solution
CREATE TABLE Produit
(Numprod number(6),
Desprod varchar(15),
Couleur char,
Poids number(8,3),
Qte_stk number(7,3),
Qte_seuil number(7,3),
Prix number(10,3)
);
Création de table - Syntaxe général
CREATE [ OR REPLACE] TABLE nom_table
( colonne1 type [ DEFAULT valeur_defaut] [contrainte_de_colonne]
, colonne2 … …. …
……
, [contrainte_de_table]

)
2 types de contraintes :
• contrainte de colonne (concerne une seule colonne)
• contrainte de table

28
Création de table - Syntaxe général
CREATE [ OR REPLACE] TABLE nom_table
( nom_colonne1 type [DEFAULT valeur_default] [contrainte_de_colonne]
, nom_colonne2 … …. …
[contrainte_de_table]

);

contrainte_de_colonne ::= [CONSTRAINT nom_contrainte]


[NOT] NULL | UNIQUE | PRIMARY KEY
| CHECK ( prédicat_de_colonne )
| FOREIGN KEY [colonne] REFERENCES table (colonne)

contrainte_de_table ::= CONSTRAINT nom_contrainte


{ UNIQUE | PRIMARY KEY ( liste_colonne )
| CHECK ( prédicat_de_table )
| FOREIGN KEY liste colonne REFERENCES nom_table (liste_colonne)

29
Création de table
CREATE [ OR REPLACE] TABLE nom_table
( nom_colonne1 type [ DEFAULT valeur_default ] [contrainte_de_colonne]
, nom_colonne2 … …. …
[contrainte_de_table]
);

contrainte_de_colonne ::= [NOT] NULL | UNIQUE | PRIMARY KEY


|…
...
...

Exemple:
CREATE TABLE Produit
( Numprod CHAR(8) PRIMARY KEY ,

prix NUMBER (9,2) NOT NULL, /* Attribut obiligatoire */
dateAchat DATE DEFAULT sysdate /* valeur par defaut*/
);
30
Contraintes d’intégrité
• Une contrainte d’intégrité est une contrainte que doivent
vérifier les données d’une table

• Une commande est annulée par le SGBD si son exécution


viole une des contraintes d’intégrité

Exemple de contraintes :
• Non nullité des valeurs d'un attribut : L'utilisateur est obligé de
saisir la valeur de l'attribut (NOT NULL).

• Unicité de la valeur d'un attribut ou d'un groupe d'attributs :


la valeur doit être unique (UNIQUE).

31
Contraintes d’intégrité
• UNIQUE : 2 lignes ne peuvent pas avoir la même valeur (sauf NULL )
pour les colonnes spécifiées

• PRIMARY KEY : clé primaire

• FOREIGN KEY … REFERENCES : clé étrangère

• CHECK : contrainte de domaine

Syntaxe:
CONSTRAINT nomContrainte définitionContrainte

32
Exemple:
On suppose que deux produits différents ne peuvent pas avoir la
même désignation: colonne Desprod.
La commande de création da la table produit devient :

CREATE TABLE Produit


(Numprod number(6) PRIMARY KEY,
Desprod varchar(15) UNIQUE,


Prix number(10,3) NOT NULL, /* Attribut obiligatoire */

);
Clé primaire (PRIMARY KEY)
• Clé primaire (un attribut ou un groupe) : indique que
l'attribut est une clé primaire.

• Elle peut être définie comme contrainte de colonne ou comme


contrainte de table.

• Clé primaire comme contrainte de colonne : en ajoutant


devant la colonne clé primaire Primary Key.

• Clé primaire comme contrainte de table selon la syntaxe :


CONSTRAINT nom_contrainte PRIMARY KEY(att1, att2,…, attn) ;

• Remarque : Dans le cas de clé primaire multiple, la clé


primaire doit être créée comme contrainte de table.
Exemple de Clé primaire

• Si la clé primaire n’est formée que d’une seule colonne,


le plus simple est d’ajouter une contrainte de colonne :

CREATE TABLE Client (


nclt INTEGER CONSTRAINT PK_Client PRIMARY
KEY,
…)

35
Exemple de Clé primaire
• Si la clé primaire n’est formée que d’une seule colonne,
le plus simple est d’ajouter une contrainte de colonne :
CREATE TABLE Client (
nclt INTEGER CONSTRAINT PK_Client PRIMARY KEY,
…)

• Si la clé primaire est formée de plusieurs colonnes,


il faut ajouter une contrainte de table:
CREATE TABLE Commande(
nclt INTEGER,
nproduit INTEGER,
….,
CONSTRAINT PK_COMMANDE PRIMARY KEY (nclt, nproduit)
) 36
Clé étrangère (FOREIGN KEY)
• La Clé étrangère (intégrité référentielle) : peut être définie
comme contrainte de table ou comme contrainte de colonne:

– Clé étrangère comme contrainte de colonne : en ajoutant devant


la colonne clé étrangère references nom_table(nom_att…),

– Clé étrangère comme contrainte de table selon la syntaxe :


CONSTRAINT nom_contrainte FOREIGN KEY(nom_att…)
references nom_table(nom_att…);

• Remarque :
Il est impossible de créer une clé étrangère si la clé primaire
associée n'existe pas.
Exemple de Clé étrangère
• Si une seule colonne forme la clé étrangère, le plus simple est
d’utiliser une contrainte de colonne :

CREATE TABLE Commande (


nclt INTEGER CONSTRAINT FK_COMMANDE_Client
REFERENCES Client(nclt),
…)

38
Exemple de Clé étrangère
• Si une seule colonne forme la clé étrangère, le plus simple est
d’utiliser une contrainte de colonne :
CREATE TABLE Commande (
nclt INTEGER CONSTRAINT FK_COMMANDE_Client
REFERENCES Client(nclt),
…)

• Peut être une contrainte de table :


FOREIGN KEY (colonne1, colonne2,…) REFERENCES table[(col1, col2,…)]

CREATE TABLE Commande (


nclt INTEGER,
nprod INTEGER,
CONSTRAINT FK_COMMANDE_Client FOREIGN KEY (nclt)
REFERENCES Client(nclt)
)
39
Création de table avec CASCADE

40
Création de table avec CASCADE
CREATE [ OR REPLACE] TABLE nom_table
( nom_colonne1 type [DEFAULT valeur_default] [contrainte_de_colonne]
, nom_colonne2 … …. …,
[contrainte_de_table]
)

contrainte_de_colonne ::= [CONSTRAINT nom_contrainte]



| FOREIGN KEY [colonne] REFERENCES table (colonne)
[ON [DELETE | INSERT| UPDATE] [CASCADE | NO ACTION | SET
[DEFAULT|NULL] ] ]

contrainte_de_table ::= CONSTRAINT nom_contrainte



| FOREIGN KEY liste colonne REFERENCES nom_table (liste_colonne)
[ON [DELETE | INSERT| UPDATE] [CASCADE | NO ACTION | SET
[DEFAULT | NULL] ] ]

41
Contraintes sur les Clés étrangères:
Option: ON DELETE CASCADE
CREATE TABLE table1 (
colonne1, colonne2,…
FOREIGN KEY (colonne1, colonne2,…) REFERENCES table2[(col1, col2,
…)] ON DELETE CASCADE)

CREATE TABLE Commande (


nclt INTEGER
CONSTRAINT FK_COMMANDE_Client FOREIGN KEY (nclt)
REFERENCES Client(nclt)
ON DELETE CASCADE)

la suppression d'un client entraîne automatiquement la


suppression de toutes les lignes de la table Commande qui
référencent ce client.
Sans cette option : On ne peut pas supprimer un client s'il est
référencé par une ligne de la table Commande
42
Contraintes sur les Clés étrangères:
Option: ON DELETE SET NULL
CREATE TABLE table1 (
colonne1, colonne2,…
FOREIGN KEY (colonne1, colonne2,…) REFERENCES table[(col1, col2,…)]
ON DELETE SET NULL
…)

CREATE TABLE Commande (


nclt INTEGER
CONSTRAINT FK_COMMANDE_Client FOREIGN KEY (nclt)
REFERENCES Client(nclt)
ON DELETE SET NULL)

La suppression d’un client entraîne automatiquement la mise à


jour de l’attribut nclt des lignes de la table Commande qui
référencent ce client avec une valeur NULL

43
Contraintes sur les Clés étrangères

• Option: ON UPATE CASCADE


FOREIGN KEY (colonne1, colonne2,…) REFERENCES table[(col1,
col2,…)] ON UPDATE CASCADE

La modification d’un nclt d’une ligne de la table client entraîne


automatiquement la mise a jour de l’attribut nclt des lignes
de la table Commande qui référencent ce client avec la
nouvelle valeur

44
Contraintes sur les Clés étrangères

• Option: ON UPDATE SET NULL


La modification d’un nclt d’une ligne de la table client
entraîne automatiquement la mise a jour de l’attribut nclt
des lignes de la table COMMANDE qui référencent ce
client avec la valeur NULL

• Option: ON UPDATE SET DEFAULT


La modification d’un nclt d’une ligne de la table client
entraîne automatiquement la mise a jour de l’attribut nclt
des lignes de la table COMMANDE qui référencent ce
client avec la valeur DEFAULT de la table COMMANDE
45
Contraintes sur les Clés étrangères
Exemples
CREATE TABLE products
( product_id INT PRIMARY KEY,
product_name VARCHAR(50) NOT NULL,
category VARCHAR(25)
);

CREATE TABLE inventory


( inventory_id INT PRIMARY KEY,
product_id INT,
quantity INT,
min_level INT,
max_level INT,
CONSTRAINT fk_inv_product_id
FOREIGN KEY (product_id)
REFERENCES products (product_id)
ON DELETE SET NULL
);
46
Contraintes sur les Clés étrangères
Exemples
CREATE TABLE inventory
( inventory_id INT PRIMARY KEY,
product_id INT NOT NULL,
quantity INT,
min_level INT,
max_level INT,
CONSTRAINT fk_inv_product_id
FOREIGN KEY (product_id)
REFERENCES products (product_id)
ON DELETE SET NULL
);

Cannot create the foreign key "fk_inv_product_id" with the SET NULL referential
action, because one or more referencing columns are not nullable.
Msg 1750, Level 16, State 0, Line 1
Could not create constraint or index. See previous errors.

47
Création de table (avec CHECK )

CREATE [ OR REPLACE] TABLE nom_table


( nom_colonne1 type [DEFAULT valeur_default] [contrainte_de_colonne]
, nom_colonne2 … …. …
| contrainte_de_table
)

contrainte_de_colonne ::= [CONSTRAINT nom_contrainte]


[NOT] NULL | UNIQUE | PRIMARY KEY
| CHECK ( prédicat_de_colonne )
| FOREIGN KEY [colonne] REFERENCES table (colonne)
[ON [DELETE | INSERT| UPDATE] [CASCADE | NO ACTION | SET
[DEFAULT|NULL] ] ]
contrainte_de_table ::= CONSTRAINT nom_contrainte
{ UNIQUE | PRIMARY KEY ( liste_colonne )
| CHECK ( prédicat_de_table )
| FOREIGN KEY liste colonne REFERENCES nom_table (liste_colonne) }
[ON [DELETE | INSERT| UPDATE] [CASCADE | NO ACTION | SET
[DEFAULT | NULL] ] ]
48
Contrainte de valeur avec la clause check

• Permet de limiter les valeurs possibles pour une colonne en


vérifiant une certaine condition. Le contrôle se fera lors des
insertions des données.
Constraint nom_contrainte CHECK (colonne condition)

• La condition sur la colonne peut utiliser :


– un opérateur de comparaison
– la clause between val1 and val2
– la clause in (liste de valeurs)
Exemple
• On suppose que le poids d’un produit doit être positif.
La commande de création de la table Produit devient :

CREATE TABLE Produit


(Numprod number(6) primary key,
Desprod varchar(15),
Couleur char,
Poids number(8,3),
Qte_stk number(7,3),
Qte_seuil number(7,3),
Prix number(10,3),
CodMag number(6) references Magasin(NumMag),
Constraint Ck1_Produit CHECK (Poids >=0)
);
Exemple
• On suppose que pour un produit, la quantité en stock doit
être supérieure ou égale à la quantité seuil.
La commande de création de la table Produit devient :

CREATE TABLE Produit


(Numprod number(6) primary key,
Desprod varchar(15),
Couleur char,
Poids number(8,3),
Qte_stk number(7,3),
Qte_seuil number(7,3),
Prix number(10,3),
CodMag number(6) references Magasin(NumMag),
Constraint Ck1_Produit CHECK (Poids >=0),
Constraint Ck2_Produit CHECK (Qte_stk >= Qte_seuil)
);
Exemple
On suppose que la quantité d’un produit doit être comprise entre 0 et 1000
La commande de création de la table Produit devient :

CREATE TABLE Produit


(Numprod number(6) primary key,
Desprod varchar(15),
Couleur char,
Poids number(8,3),
Qte_stk number(7,3),
Qte_seuil number(7,3),
Prix number(10,3),
CodMag number(6) references Magasin(NumMag),
Constraint Ck1_Produit CHECK (Poids >=0),
Constraint Ck2_Produit CHECK (Qte_stk >= Qte_seuil),
Constraint Ck3_Produit CHECK (Qte_stk between 0 and
1000)
);
Exemple
On suppose que la couleur d’un produit ne peut être que ‘N’, ‘G’,
ou ‘B’. La commande de création de la table Produit devient :
CREATE TABLE Produit
(Numprod number(6) primary key,
Desprod varchar(15),
Couleur char,
Poids number(8,3),
Qte_stk number(7,3),
Qte_seuil number(7,3),
Prix number(10,3),
CodMag number(6) references Magasin(NumMag),
Constraint Ck1_Produit CHECK (Poids >=0),
Constraint Ck2_Produit CHECK (Qte_stk >= Qte_seuil),
Constraint Ck3_Produit CHECK (Qte_stk between 0 and
1000),
Constraint Ck4_Produit CHECK (Couleur IN (‘N’, ‘G’,
‘B’))
Modification de la structure
d’une table
Modification de la structure d’une table
Les trois possibilités de modification de la structure de table
permettent:
– soit d'ajouter des colonnes,
– soit de modifier la structure d'une colonne,
– soit de supprimer des colonnes existantes.
Modification de la structure d’une table
1ère forme : Ajout de nouvelles colonnes à une table
• Syntaxe :
ALTER TABLE nom_table
ADD (colonne_1 type [(taille)] [null / not null] ,
colonne_2 type [(taille)] [null / not null] ,
...
colonne_n type [(taille)] [null / not null] ) ;

• Exemple :
Supposons qu'on veut ajouter une colonne téléphone à la table client :
ALTER TABLE CLIENT
ADD téléphone Char(8);
2ème forme : Modification de la structure d'une
colonne existante

• Syntaxe :
ALTER TABLE nom_table
MODIFY (col1 type [(taille)] [null / not null] ,
col2 type [(taille)] [null / not null] ,
...
coln type [(taille)] [null / not null] ) ;

• Exemple :
Supposons qu'on veut changer le type de la colonne téléphone
de char(8) en char(13) :
ALTER TABLE CLIENT
MODIFY téléphone Char(13);
3ème forme : Suppression de colonnes
existantes
• Syntaxe :
ALTER TABLE nom_table
DROP ( col1 , col2 ,…, coln ) ;

• Exemple :
Supposons qu'on veut supprimer la colonne ville de la table
Client:
ALTER TABLE Client
DROP ville ;
4ème forme : Ajout d'une contrainte

• Syntaxe :
ALTER TABLE nom_table
ADD Constraint Def_de_contrainte ;

• Exemple :
Ajouter à la table Pilote la contrainte suivante : le nombre des heures
de vol doit être comprise entre 0 et 2000:

ALTER TABLE Pilote


ADD Constraint ck_NbHvol CHECK (NbHvol BETWEEN 0 And 2000)
Suppression d'une contrainte :

• On peut par exemple effacer une clé étrangère. La commande est :


ALTER TABLE nom_table
DROP CONSTRAINT nom_contrainte ;

• Où nom_contrainte = Le nom de la contrainte à supprimer .

• Exemple : Supprimer la contrainte spécifiant les couleurs


possibles pour les produits:
ALTER TABLE produit
DROP CONSTRAINT Ck4_Produit ;
Suppression d'une contrainte :

• On peut par exemple effacer une clé étrangère. La commande est :


ALTER TABLE nom_table DROP CONSTRAINT nom_contrainte ;

• Où nom_contrainte = Le nom de la contrainte à supprimer .

• Exemple :
Supprimer la contrainte spécifiant les couleurs possibles pour les produits
ALTER TABLE produit DROP CONSTRAINT Ck4_Produit ;

Remarque :
Pour retrouver les différentes contraintes avec leur propriétés, on peut utiliser la
commande suivante :
Select * from USER_CONSTRAINTS
[where TABLE_NAME = 'NOM_DE_LA_TABLE' ];
Il est à remarquer que pour cette commande, le nom de la table doit être écrit
en majuscule.
Suppression de tables
Destruction de tables
• Syntaxe :
DROP TABLE nom_table ;

• Exemple :
• Supposons qu'on veut supprimer la table client :
DROP TABLE client ;
Destruction de tables
• Syntaxe :
DROP TABLE nom_table ;

• Remarque :
Contrainte de suppression de table : permet de supprimer toutes
les contraintes d'intégrité référentielles qui se reflètent aux
clés uniques ou primaires de la table à supprimer.

La commande est :
DROP TABLE nom_table CASCADE CONSTRAINTS;
L'ordre de Création/Suppression des tables

• L'ordre de création des tables est important quand on définit


les contraintes en même temps que la création des tables
:

• Lors de la création (CREATE) des tables:


– > tables mères, puis tables filles

• Lors de la destruction (DROP) des tables, c'est l'inverse :


– > tables filles, puis tables mères
Renommage de tables

Pour changer le nom d'une table existante la commande est :


• Syntaxe :
RENAME ancien_nom TO nouveau_nom ;
Renommage et création de
synonymes de tables
Pour changer le nom d'une table existante la commande est :
•Syntaxe :
RENAME ancien_nom TO nouveau_nom ;

Il est également possible de donner à une même table plusieurs


noms différents appelés synonymes:
•Syntaxe :
CREATE SYNONYM nom_synonyme FOR
nom_table ;
Renommage et création de
synonymes de tables
• Syntaxe :
CREATE SYNONYM nom_synonyme FOR nom_table ;

• Pour supprimer un synonyme donné, on utilise la commande


suivante:
– Syntaxe :
DROP SYNONYM nom_synonym ;

• Remarque :
La suppression d'une table implique la suppression des
synonymes correspondants.

Vous aimerez peut-être aussi