Vous êtes sur la page 1sur 30

Cours : Bases de Données

Auditoire : GINF1

Chapitre 5 :
Langage SQL

Dr. Mohamed TURKI


Maître Assistant en Informatique, ISIMS - Université de Sfax

82
Historique
Depuis l’apparition de la théorie des bases de données relationnelles en 1970,
plusieurs laboratoires de recherche et universités ont intensifié leurs travaux
pour expérimenter cette théorie.
IBM et l’université de Berkeley ont commencé à développer leurs prototypes
respectifs System R et INGRES.
Plusieurs langages ont ainsi fait leur apparition entre les années 70 et 76 dont les
principaux sont QUEL et SEQUEL implantés respectivement sur INGRES et
System R.
SEQUEL a connu des améliorations pour devenir en 1980 SQL (Structured
Query Language) et a été commercialisé par ORACLE Corporation. SQL a été
utilisé en 1981 et 1983 par les SGBD d'IBM, SQL/DS et DB2.
En 1986, une norme a été adoptée par l'Institut National Américain de
Normalisation ANSI et englobait la version IBM de SQL, puis a été adoptée par
d'autres organismes de normalisation tels que ISO et X/Open en 1987.
La simplicité du langage SQL, sa richesse en fonctionnalités et sa normalisation
sont les principales raisons de son succès.
Cours BD © M. TURKI (2020 / 2021) 83
Structure de SQL
Le langage SQL (Structured Query Language) d’oracle
concerne les commandes de définition, de manipulation,
d’interrogation et de contrôle de données :
Langage de Définition de Données (LDD) : permet de décrire la
structure de la BD (tables, vues, champs, index…).

Langage de Manipulation de Données (LMD) : offre des opérateurs


relationnels et ensemblistes pour insérer, supprimer et mettre à jour les
données de la BD.

Langage d’Interrogation de Données (LID) : permet d’extraire des


données à partir de la BD.

Langage de contrôle de données (LCD) : permet de maintenir la


confidentialité et l’intégrité de données.

Cours BD © M. TURKI (2020 / 2021) 84


Les objets de base
Notion de schéma : un ensemble de structures logiques de
données qui appartiennent à un utilisateur de la base de données et
porte son nom  un utilisateur ne peut avoir qu’un seul schéma.
Parmi les objets de base manipulés dans SQL, on cite les tables, les
vues, les utilisateurs avec leurs privilèges d'accès et les
accélérateurs.
Dans ORACLE, on ne peut pas définir explicitement une base de
données mais l'ensemble de tables et de vues créées par un
utilisateur constituent la base par défaut.
Tout utilisateur peut accéder à d'autres tables et vues créées par
d'autres utilisateurs s'il a le privilège et l'autorisation de le faire et
en préfixant les noms des tables et des vues par le nom de leurs
propriétaires.
Cours BD © M. TURKI (2020 / 2021) 85
Les tables
Une table est une structure de données qui maintient les données
d’une base de données relationnelle. Elle est composée de lignes et
de colonnes.
Une table peut décrire une entité du monde réel ou une relation
entre deux entités.
Le nombre de colonnes détermine le degré de la table.
Exemple :
Soit la table ETUDIANT :

Cours BD © M. TURKI (2020 / 2021) 86


Les vues

Une vue est une représentation logique issue de la combinaison de


la définition d’une ou de plusieurs tables ou vues.
La définition d'une vue est stockée dans le dictionnaire sous forme
de requêtes, donc les données sont extraites au moment de
l'exécution de la vue.

Exemple :
La vue CLT_SOUSSE dérivée de la table client a la même structure
que cette table mais ne contient que les clients dont la condition
particulière est habitant Sousse.

Cours BD © M. TURKI (2020 / 2021) 87


Les utilisateurs

Un utilisateur est défini par son nom (identifiant unique,


un mot de passe et un ensemble de privilèges).
Les privilèges permettent de fixer les règles d'utilisation
des objets définis dans la base et d'assurer la
confidentialité des données.

Cours BD © M. TURKI (2020 / 2021) 88


Les accélérateurs

ORACLE dispose de deux mécanismes pour améliorer


les performances en ce qui concerne les accès à la BD :
Cluster : un cluster (groupement) est un objet contenant une
ou plusieurs tables ou une ou plusieurs colonnes communes.
C’est une structuration de données dans une ou plusieurs
tables pour permettre un accès rapide aux lignes issues d’une
jointure.
Index : un index est une structure contenant l’adresse
physique de chaque ligne d’une table ou d’un cluster. Un index
permet l’accès direct à l’information.

Cours BD © M. TURKI (2020 / 2021) 89


Cours : Bases de Données
Auditoire : GINF1

Chapitre 6 :
Définition de Données avec SQL

Dr. Mohamed TURKI


Maître Assistant en Informatique, ISIMS - Université de Sfax

90
Introduction

Le langage de définition des données (LDD) permet de


définir des bases de données et des objets qui les
composent.
La définition d’un objet inclut généralement sa création,
sa modification et sa suppression.
Les commandes du LDD sont :
CREATE : Création d’objets.
ALTER : Modification de structures d'objets.
DROP : Suppression d'objets.

Cours BD © M. TURKI (2020 / 2021) 91


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

ORACLE dispose de deux formes pour cette commande :


Création simple ( create table …. (…) ),
Création + insertion ( create table … as Select … ).

Cours BD © M. TURKI (2020 / 2021) 92


Création de tables

1ère Forme : Création simple : elle permet de créer une table vide
SYNTAXE

CREATE TABLE nom_table


(
col1 type[(taille)] [default ValeurParDefaut] [null / not null] [contrainte de colonne],

coln type[(taille)] [default ValeurParDefaut] [null / not null] [contrainte de colonne],
[contrainte de tables]
);

Cours BD © M. TURKI (2020 / 2021) 93


Création de tables
Définition des colonnes :
La taille indique la valeur maximale de la longueur du champ.
L'option NOT NULL indique que le champ doit forcément avoir une
valeur.
Les types de données possibles sont :
NUMBER: stocke les nombres en général entiers positifs et négatifs.
NUMBER(n) : même chose que NUMBER avec une taille spécifique. La
valeur maximale de n est 105.
NUMBER(n,m) : nombre décimal pouvant avoir au maximum n chiffres
dont m après la virgule.
CHAR(n) : chaîne de caractère de longueur fixe, avec1<= n <=255.

Cours BD © M. TURKI (2020 / 2021) 94


Création de tables
Définition des colonnes :
VARCHAR2(n) : chaîne de caractères de longueur variable,
avec 1 <= n <= 4000.
LONG, LONG VARCHAR : 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. En plus ce type de données ne peut être utilisé qu'une
seule fois dans une table.
RAW : accepte jusqu'à 2000 ∅ de données binaires.
LONG RAW : donnée de type binaire de longueur variable allant
jusqu'à 2G∅.
DATE : date dont le format standard est DD-MON-YY.

Cours BD © M. TURKI (2020 / 2021) 95


Création de tables
Exemple :
Créer une table correspondante à l'entité client ayant comme clé le
champ numéro client. Cette table comprend les champs : nom,
téléphone, adresse, code postal et ville.
CREATE TABLE CLIENT
( numclt number(6),
Nom varchar2(15),
Tel number(8),
Adr varchar2(30),
cod_post number(4),
ville char(12)
);

Cours BD © M. TURKI (2020 / 2021) 96


Définition de contraintes

Une contrainte d'intégrité est une règle qui définit la cohérence


d'une donnée ou d'un ensemble de données de la base de
données.
Les contraintes définies par SQL sont :
Non nullité des valeurs d'un attribut : L'utilisateur est
obligé de saisir la valeur de l'attribut. La commande est :
NOT NULL
Unicité de la valeur d'un attribut ou d'un groupe
d'attributs : la valeur doit être unique. La commande est :
UNIQUE

Cours BD © M. TURKI (2020 / 2021) 97


Définition de contraintes
Clé primaire (un attribut ou un groupe) : indique que l’attribut (ou
groupe d’attributs) est une clé primaire.

att type[(taille)] PRIMARY KEY


Ou bien
CONSTRAINT nom_contrainte PRIMARY KEY(att1, att2,…, attn)

Clé étrangère (intégrité référentielle) :lorsque la clé primaire figure


dans une autre table en tant qu'un attribut non clé. La commande est :
Col type[(taille)] REFERENCES nom_table (nom_att)
Ou bien
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.
Cours BD © M. TURKI (2020 / 2021) 98
Définition de contraintes
Exemple :
CREATE TABLE CLIENT CREATE TABLE CLIENT
(numclt number(6) , (numclt number(6) PRIMARY KEY,
nom varchar2(15) , nom varchar2(15) ,
tel number(8) , tel number(8) ,
adr varchar2(30) , adr varchar2(30) ,
cod_post number(4) , cod_post number(4) ,
ville char(12) , ville char(12)
CONSTRAINT pk_client PRIMARY KEY numclt );
);

Cours BD © M. TURKI (2020 / 2021) 99


Définition de contraintes
Exemple :
CREATE TABLE VENTE
(codevent number(6) PRIMARY KEY,
numclt number(6) ,
qtevnt number(8) ,
Constraint FK_vente Foreign key (numclt) references client(numclt)
);

CREATE TABLE VENTE


(codevent number(6) PRIMARY KEY,
numclt number(6) REFERENCES client(numclt) ,
qtevnt number(8)
);

Cours BD © M. TURKI (2020 / 2021) 100


Définition de contraintes
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)

Cours BD © M. TURKI (2020 / 2021) 101


Définition de contraintes
Exemple :

CREATE TABLE VENTE


(codevent number(6) PRIMARY KEY,
numclt number(6) REFERENCES client(numclt) ,
qtevnt number(8) ,
Constraint ck_vente_qte CHECK (qtevnt between 0 and 10) ,
Constraint ck_vente_clt CHECK (numclt IN (10,11,12,13) )
);

Cours BD © M. TURKI (2020 / 2021) 102


Création de tables
2ème Forme : Création + Insertion : en plus de la définition de la structure d’une
nouvelle table, cette forme permet d’y insérer des données à partir d’une ou
plusieurs tables et/ou vues :

SYNTAXE

CREATE TABLE nom_table

AS ordre Select ;

Remarque : Oracle hérite les noms de colonnes de la requête. En effet, la requête est une
opération de sélection qui indique les colonnes sources, les tables auxquelles elles appartiennent et
éventuellement des critères de sélection.

Cours BD © M. TURKI (2020 / 2021) 103


Définition de contraintes
Exemple : Création d’une table contenant des clients de la ville
SOUSSE :

CREATE TABLE CLIENT_SOUSSE


AS
SELECT numclt, nom, tel, adr
FROM Client
WHERE ville = ‘SOUSSE’ ;

Cours BD © M. TURKI (2020 / 2021) 104


Modification de la structure d’une table

Les tables peuvent avoir une structure dynamique :


Ajout de nouvelles colonnes.
Modification des types de colonnes déjà existantes.
Suppression de colonnes existantes.
Ajout de contraintes
Suppression de contraintes

Cours BD © M. TURKI (2020 / 2021) 105


Modification de la structure d’une table

Ajout de nouvelles colonnes à une table :


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

Exemple : Supposons qu'on veut ajouter une colonne type_clt à la table client :

ALTER TABLE client

ADD type_clt varchar2(10) ;

Cours BD © M. TURKI (2020 / 2021) 106


Modification de la structure d’une table

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_client de varchar2(10) en varchar2(15) :

ALTER TABLE client


MODIFY type_clt varchar2(15) ;

Cours BD © M. TURKI (2020 / 2021) 107


Modification de la structure d’une table

suppression d'une colonne existante :


Syntaxe : Suppression d'une colonne
ALTER TABLE nom_table
DROP COLUMN nom_colonne;

Suppression de plusieurs colonnes

ALTER TABLE nom_table


DROP (nom_colonne1, com_colonne2,...);

Exemple :
ALTER TABLE client
DROP COLUMN type_clt ;

Cours BD © M. TURKI (2020 / 2021) 108


Modification de la structure d’une table
Ajout d’une contrainte :
Syntaxe : ALTER TABLEnom_table

ADD CONSTRAINT def_contrainte;

Suppression de contraintes existantes :


 Suppression d'une contrainte clé primaire :
ALTER TABLEnom_table

DROP PRIMARY KEY [CASCADE];

L'option cascade est ajoutée pour pouvoir supprimer une clé primaire référencée.
 Suppression d'une contrainte autre que la clé primaire :
ALTER TABLE nom_table

DROP CONSTRAINT nom_contrainte ;

Où Le nom de la contrainte c'est celui de la contrainte à supprimer.


Cours BD © M. TURKI (2020 / 2021) 109
Suppression de tables
Syntaxe :
DROP TABLE nom_table;

Exemple :
Supposons qu'on veut supprimer la table client_Sousse :
DROP TABLE client_Sousse ;

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;

Cours BD © M. TURKI (2020 / 2021) 110


Renommage et création de synonymes de tables

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

RENAME ancien_nom TO nouveau_nom ;

Il est également possible de créer un synonyme (second nom) d’une table :

CREATE SYNONYM nom_synonyme FOR nom_table ;

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

DROP SYNONYM nom_synonyme ;

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

Cours BD © M. TURKI (2020 / 2021) 111

Vous aimerez peut-être aussi