Vous êtes sur la page 1sur 35

INITIATION AU LANGAGE SQL

1 Mahamadou Abdou TOURE


I. PRÉSENTATION DE SQL
SQL signifie « Structured Query Language » c'est-à-dire Langage
d'interrogation structurée.
En fait SQL est un langage complet de gestion de bases de données
relationnelles.
Il a été conçu par IBM dans les années 70. Il est devenu le langage
standard des systèmes de gestion de bases de données (SGBD)
relationnelles (SGBDR).
C'est à la fois :
 un langage d'interrogation de la base (ordre SELECT)
 un langage de manipulation des données (LMD; ordres
UPDATE, INSERT, DELETE)
 un langage de définition des données (LDD ; ordres CREATE,
ALTER, DROP),
 un langage de contrôle de l'accès aux données (LCD ; ordres
GRANT, REVOKE).
Le langage SQL est utilisé par les principaux SGBDR : DB2,
Oracle, Informix, Ingres, RDB,... Chacun de ces SGBDR a
cependant sa propre variante du langage. Ce support de cours
présente un noyau de commandes disponibles sur l'ensemble de ces
SGBDR. 2
II. OBJETS MANIPULÉS PAR SQL
1. Identificateurs
SQL utilise des identificateurs pour désigner les objets
qu'il manipule : utilisateurs, tables, colonnes, index,
fonctions, etc.
Un identificateur est un mot formé d'au plus 30
caractères, commençant obligatoirement par une lettre de
l'alphabet. Les caractères suivants peuvent être une
lettre, un chiffre, ou l'un des symboles # $ et _. SQL ne
fait pas la différence entre les lettres minuscules et
majuscules. Les voyelles accentuées ne sont pas
acceptées.
Un identificateur ne doit pas figurer dans la liste des mot
clés réservés. Voici quelques mots clés que l'on risque
d'utiliser comme identificateurs : ASSERT, ASSIGN,
AUDIT, COMMENT, DATE, DECIMAL, DEFINITION,
FILE, FORMAT, INDEX, LIST, MODE, OPTION,
PARTITION, PRIVILEGES, PUBLIC, REF,
REFERENCES, SELECT, SEQUENCE, SESSION, SET, 3
TABLE, TYPE.
II. OBJETS MANIPULÉS PAR SQL
2. Tables
Les relations sont stockées sous forme de tables
composées de lignes et de colonnes.

Il est d'usage (mais non obligatoire évidemment) de


mettre les noms de table au singulier : plutôt
EMPLOYE que EMPLOYES pour une table
d'employés.

4
II. OBJETS MANIPULÉS PAR SQL
2. Tables
Exemple: Table DEPT des départements :

DEPT NOMD LIEU


10 FINANCE SIKASSO
20 RECHERCHE GAO
30 VENTE SEGOU
40 FABRICATION BAMAKO

5
II. OBJETS MANIPULÉS PAR SQL
3. Colonnes
Les données contenues dans une colonne doivent être
toutes d'un même type de données. Ce type est indiqué au
moment de la création de la table qui contient la colonne.
Chaque colonne est repérée par un identificateur unique à
l'intérieur de chaque table. Deux colonnes de deux tables
différentes peuvent porter le même nom. Il est ainsi
fréquent de donner le même nom à deux colonnes de deux
tables différentes lorsqu'elles correspondent à une clé
étrangère à la clé primaire référencée. Par exemple, la
colonne Dept des tables DEPT et EMP.
Une colonne peut porter le même nom que sa table.
Le nom complet d'une colonne est en fait celui de sa table,
suivi d'un point et du nom de la colonne. Par exemple, la
colonne DEPT.LIEU
Le nom de la table peut être omis quand il n'y a pas
d'ambiguïté sur la table à laquelle elle appartient, ce qui
est généralement le cas. 6
III. TYPES DE DONNÉES
1. Types numériques
 Nombres entiers : SMALLINT (sur 2 octets, de -32.768 à
32.767), INTEGER (sur 4 octets, de -2.147.483.648 à
2.147.483.647).
 Nombres décimaux avec un nombre fixe de décimaux :
NUMERIC, DECIMAL (la norme impose à NUMERIC d'être
implanté avec exactement le nombre de décimales indiqué
alors que l'implantation de DECIMAL peut avoir plus de
décimales) : DECIMAL(p, d ) correspond à des nombres
décimaux qui ont p chiffres significatifs et d chiffres après la
virgule ; NUMERIC a la même syntaxe.
 Numériques non exacts à virgule flottante : REAL (simple
précision, avec au moins 7 chiffres significatifs), DOUBLE
PRECISION ou FLOAT double précision, avec au moins 15
chiffres significatifs).
 La définition des types non entiers dépend du SGBD (le
nombre de chiffres significatifs varie).
7
 Le type BIT permet de ranger une valeur booléenne (un bit)
III. TYPES DE DONNÉES
1. Types numériques

Exemple: SALAIRE DECIMAL(8,2)


définit une colonne numérique SALAIRE. Les
valeurs auront au maximum 2 décimales et 8 chiffres
au plus au total (donc 6 chiffres avant le point
décimal).

Les constantes numériques ont le format habituel :


-10, 2.5, 1.2E-8 (ce dernier représentant 1.2 x 10–8).

8
III. TYPES DE DONNÉES
2. Types chaîne de caractères
Les constantes chaînes de caractères sont entourées par des
apostrophes ('). Si la chaîne contient une apostrophe, celle-ci doit être
doublée. Exemple : 'aujourd''hui'.
Il existe plusieurs types pour les colonnes qui contiennent des
chaînes de caractères :
 le type CHAR pour les colonnes qui contiennent des chaînes de
longueur constante.
La déclaration de type chaîne de caractères de longueur constante a
le format suivant : CHAR(longueur) où longueur est la longueur
maximale (en nombre de caractères) qu'il sera possible de stocker
dans le champ ; par défaut, longueur est égale à 1. L'insertion d'une
chaîne dont la longueur est supérieure à longueur sera refusée. Une
chaîne plus courte que longueur sera complétée par des espaces
(important pour les comparaisons de chaînes). Tous les SGBD
imposent une valeur maximum pour longueur (255 pour Oracle).
 le type VARCHAR pour les colonnes qui contiennent des chaînes
de longueurs variables.
On déclare ces colonnes par : VARCHAR(longueur )
longueur indique la longueur maximale des chaînes contenues dans 9
la colonne. Tous les SGBD imposent une valeur maximum pour
longueur (plusieurs milliers de caractères).
III. TYPES DE DONNÉES
3. Types temporels
Les types temporels de SQL-2 sont :
 DATE réserve 2 chiffres pour le mois et le jour et 4
pour l'année ;
 TIME pour les heures, minutes et secondes (les
secondes peuvent comporter un certain nombre de
décimales) ;
 TIMESTAMP permet d'indiquer un moment précis
par une date avec heures, minutes et secondes (6
chiffres après la virgule ; c'est-à-dire en
microsecondes) ;
 INTERVAL permet d'indiquer un intervalle de
temps. 10
III. TYPES DE DONNÉES
4. Types binaires
Ce type permet d'enregistrer des données telles que les
images et les sons, de très grande taille et avec divers
formats.
SQL-2 fournit les types BIT et BIT VARYING
(longueur constante ou non).
Les différents SGBD fournissent un type pour ces
données mais les noms varient : LONG RAW pour
Oracle, mais IMAGE pour Sybase, BYTE pour
Informix, etc.

11
III. TYPES DE DONNÉES
5. Valeur NULL
Une colonne qui n'est pas renseignée, et donc vide, est
dite contenir la valeur NULL. Cette valeur n'est pas
zéro, c'est une absence de valeur.

12
III. TYPES DE DONNÉES

13
IV. BD ET LES TABLES
1. Création d’une base de donnée
D’une manière générale, les objets du schéma sont
créés avec create, modifiés avec alter et détruits avec
drop, alors que les données, instances du schéma sont
créées, modifiées et détruites avec, respectivement,
insert, update et delete.
Voici la syntaxe pour créer une base de données dans
un serveur de BD:
create database Nom_BD
Exemple: create database BD_ETUDIANT
Il est d’usage de créer un utilisateur ayant les droits
d’administration de cette base.
grant all on BD_ETUDIANT.* to mahamadou 14

identified by 'motdepasse’.
IV. BD ET DES TABLES
2. Création d’une table
Pour la création d’une table au sein de la
BD_ETUDIANT, voici la syntaxe:
create table Nom_Table (attribut1 type, attribut2
type, …, attributn type, primary key
(un_des_attributs));
Voici exemple avec la commande de création de la
table ID_ETUDIANT.
Exemple:
create table ID_ETUDIANT (Num_Mat varchar (11)
not null, nom varchar (30) not null , prénom varchar
(30) not null, cycle varchar (30), primary key
(Num_Mat)); 15

La syntaxe se comprend aisément. La seule difficulté


est de choisir correctement le type de chaque attribut.
IV. BD ET DES TABLES
3. Modification du schéma
La forme générale de la commande permettant de
modifier une table est :
alter table <nomTable> <action> <description>
où action peut être principalement add, modify, drop
ou rename et description est la commande de
modification associée à action. La modification d’une
table peut poser des problèmes si elle est incompatible
avec le contenu existant. Par exemple passer un
attribut à not null implique que cet attribut a déjà des
valeurs pour tous les nuplets de la table.

16
IV. BD ET DES TABLES
3. Modification du schéma
Exemples:
On peut ajouter un attribut Filière à la table
ID_ETUDIANT avec la commande :
alter table ID_ETUDIANT add Filière varchar(10)
S’il existe déjà des données dans la table, la valeur
sera à null ou à la valeur par défaut. La taille de
Filière étant certainement insuffisante, on peut
l’agrandir avec modify, et la déclarer not null par la
même occasion :
alter table ID_ETUDIANT modify Filière
varchar(50) not null
17
IV. BD ET DES TABLES
3. Modification du schéma
Exemples:
La commande alter table permet d’ajouter une valeur
par défaut.
alter table ID_ETUDIANT add Filière set default
‘Génie Electrique et Informatique Industrielle‘
Enfin, on peut détruire un attribut avec drop.
alter table ID_ETUDIANT drop Filière
De plus, chaque système propose des commandes non
normalisées. MySQL par exemple dispose d’une
commande truncate pour “vider” une table
rapidement, sans effectuer de contrôle ( !) À vous
d’éplucher la documentation pour ces aspects 18

spécifiques.
V. REQUÊTES D’INTERROGATION
1. Projection: Sélections simples
La commande SELECT effectue une projection.
SELECT permet d'extraire des données ou de faire des
calculs sur les données d'une base. Cette commande
suivie du nom d'un champ signifie que ce champ doit
être affiché. SELECT est indissociable de la
commande FROM. FROM indique de quelle(s) table(s)
seront extraites les informations.

Syntaxe:
SELECT nom du (ou des) champ(s) à sélectionner
FROM nom de la (ou les) table(s) contenant les
champs sélectionnés 19
V. REQUÊTES D’INTERROGATION
1. Projection: Sélections simples
Exemple :
SELECT NOM, PRENOM FROM ETUDIANT
Interprétation: signifie l'affichage des noms et prénoms
de tous les étudiants provenant de la table
ETUDIANT.
a. Les fonctions d'agrégat
Des fonctions peuvent être appliquées aux champs lors
de la projection. Les principales fonctions sont :
SUM ( ) renvoie la somme d'un champ
AVG ( ) renvoie la moyenne d'un champ
MAX ( ) renvoie la valeur maximale d'un champ
MIN ( ) renvoie la valeur minimale d'un champ 20
COUNT ( ) renvoie le nombre d'enregistrements de la table
V. REQUÊTES D’INTERROGATION
1. Projection: Sélections simples
a. Les fonctions d'agrégat
Exemple :
SELECT COUNT (NUM_MAT) FROM ETUDIANT;
Interprétation: renvoie le nombre d'enregistrements du
champ NUM_MAT
b. Compléments
 L'opérateur * (étoile) permet d'afficher l'ensemble
des champs d'une table. Cet opérateur permet un gain
de temps lors de la saisie de la requête. En effet, sans
cet opérateur, il faudrait nommer chaque champ.
Exemple : SELECT * FROM ETUDIANT
21
Interprétation: donne l'ensemble des champs de la table
ETUDIANT.
V. REQUÊTES D’INTERROGATION
1. Projection: Sélections simples
b. Compléments
 L'opérateur AS permet de donner un nom à un
champ d'une requête.
SELECT COUNT (NUM_MAT) AS [Nombre d’étudiants]
FROM ETUDIANT
Interprétation: Cette requête pourra avoir comme
résultat :

Nombre d’étudiants
125
22
V. REQUÊTES D’INTERROGATION
2. La sélection (ou restriction)
La commande WHERE permet de spécifier les
enregistrements (lignes de la table) à sélectionner
(opération de restriction) en fonction d'une condition. La
condition (ou prédicat) utilise au moins un opérateur.
En présence de plusieurs conditions, les
opérateurs AND ou OR sont utilisés.
Syntaxe
SELECT champ(s) à afficher
FROM table contenant les champs sélectionnés
WHERE Condition ;
Exemple :
SELECT N°_TELEPHONE FROM ETUDIANT
23
WHERE NOM = "KONATE"
V. REQUÊTES D’INTERROGATION
2. La sélection (ou restriction)
Exemple :
SELECT N°_TELEPHONE FROM ETUDIANT
WHERE NOM = "KONATE"
Interprétation: signifie l'affichage du numéro de
téléphone de l’étudiant KONATE.
En présence d'une chaîne de caractères, celle-ci doit être
saisie entre guillemets. A notre niveau, peu importe que
ce soit des guillemets doubles ou des guillemets simples
(apostrophes). Quant à la casse (majuscule ou
minuscule), il faut la respecter. "konate" et "KONATE"
ne sont pas identiques dans un système de gestion de
bases de données relationnelles.
24
V. REQUÊTES D’INTERROGATION
2. La sélection (ou restriction)
Les opérateurs
Le langage SQL comme tout autre langage utilise divers
opérateurs. Les catégories d'opérateurs les plus
couramment utilisées sont :
 les opérateurs arithmétiques : +, -, *, /

 les opérateurs de comparaison : <, >, =

 les opérateurs logiques : AND, OR, NOT

 des comparateurs de chaîne : LIKE, BETWEEN et


IN

25
V. REQUÊTES D’INTERROGATION
3. La jointure
La jointure permet de sélectionner des données
contenues dans plusieurs tables. C'est la clé étrangère
qui va jouer la liaison entre ces tables. Lorsque la
commande FROM est suivie de plus d'un champ, il y a
au minimum un critère de jointure. La commande
WHERE est utilisée pour matérialiser la jointure. En
présence de plusieurs jointures, l'opérateur AND est
utilisé.
Syntaxe
SELECT champ(s) à afficher FROM tables contenant les
champs sélectionnés WHERE table1.clé primaire = table2.clé
étrangère
Exemple : SELECT Nom_Client, Num_Commande26
FROM Client, Commande WHERE Client.Num_Client =
Commande.Num_Client_Cde
V. REQUÊTES D’INTERROGATION
3. La jointure
Deux tables sont ici nécessaires pour afficher le nom du
client et le numéro de commande. Une jointure est donc
nécessaire. Cette jointure signifie que les valeurs prises
par le champ Num_Client (clé primaire) de la table
Client doivent être égales aux valeurs prises par le
champ Num_Client_Cde (clé étrangère) de la table
Commande.

27
V. REQUÊTES D’INTERROGATION
4. Le tri
La commande ORDER BY permet d'effectuer un tri.
ASC signifie un tri croissant et DESC signifie un tri
décroissant. Par défaut le tri est croissant.
Syntaxe
SELECT nom du (ou des) champ(s) à sélectionner
FROM nom de la (ou les) table(s) contenant les champs
sélectionnés
ORDER BY nom du champ sur le quel s'effectue le tri ;
Exemple :
SELECT Nom_client, Num_client FROM Client
ORDER BY Nom_client;
Interprétation: signifie l'affichage des numéros et des 28
noms des clients par ordre alphabétique.
V. REQUÊTES D’INTERROGATION
5. Le regroupement
a. La commande GROUP BY
La commande (ou clause) GROUP BY groupe des lignes
(enregistrements) d'une table d'après une fonction
d'agrégat et plus précisément une fonction de calcul
statistique (SUM, AVG, COUNT). Les requêtes de
regroupement sont souvent utilisées dans l'analyse
financière.
Syntaxe
SELECT champs à afficher FROM tables nécessaires
GROUP BY champ sur lequel s'effectue le regroupement ;
Exemple : SELECT Marque, AVG(prix) AS moyenne
FROM Vehicule GROUP BY Marque ;
29
Interprétation: signifie l'affichage des moyennes des prix par
marque de véhicule.
V. REQUÊTES D’INTERROGATION
5. Le regroupement
b. La restriction sur le regroupement (HAVING)
La commande HAVING effectue une restriction sur le
résultat des regroupements et non sur les données de la
table.
Syntaxe
SELECT champs à afficher FROM tables nécessaires
GROUP BY champ sur lequel s'effectue le
regroupement
HAVING condition spécifique au regroupement
Exemple :
SELECT Marque, AVG(prix) AS moyenne
FROM Vehicule 30
GROUP BY Marque
HAVING AVG(prix) > 20 000 000
V. REQUÊTES D’INTERROGATION
5. Le regroupement
b. La restriction sur le regroupement (HAVING)
Exemple :
SELECT Marque, AVG(prix) AS moyenne
FROM Vehicule
GROUP BY Marque
HAVING AVG(prix) > 20 000 000
Interprétation: signifie l'affichage des moyennes des prix
par marque de véhicule pour les marques qui ont une
moyenne de prix supérieure à 20 000 000 FCFA.

31
VI. MISE À JOUR
Les commandes de mise à jour (insertion, destruction,
modification) sont considérablement plus simples que
les interrogations.
1. Insertion Simple
L'ordre pour insérer des informations dans la base est
« INSERT INTO ».
INSERT INTO table (Col1, Col2,...)
VALUES
(val1, val2, …)
table est le nom de la table dans laquelle on insert les
données. Col1, Col2,... est la liste des colonnes
concernées par l’enregistrement. val1, val2, …
constituent les valeurs à insérées respectivement 32

dans les colonnes ci-dessus.


VI. MISE À JOUR
2. Insertion avec Select
INSERT INTO table1 (Col1, Col2,...)
SELECT exp1, exp2,...
FROM table2
WHERE prédicat
table1 est le nom de la table dans laquelle on insert les
données. Col1, Col2,... est la liste des colonnes
concernées par l’enregistrement dans la table 1.
table2 est le nom de la table dans laquelle on
sélectionne les données à insérées. exp1, exp2,... est la
liste des colonnes concernées par la sélection dans
l’ordre de correspondance avec les colonnes ci-dessus.
33
VI. MISE À JOUR
3. Modification
L'ordre pour mettre à jour des informations dans la
base est « UPDATE ».
UPDATE table SET
Col1 = val1,
Col2 = val2,
...
WHERE prédicat
table est le nom de la table dans laquelle on fait la
mise à jour des données. Col1, Col2,... est la liste des
colonnes concernées par la mise à jour. val1, val2, …
constituent les nouvelles valeurs à insérer
respectivement dans les colonnes en face. 34
VI. MISE À JOUR
4. Suppression
L'ordre pour supprimer des informations stockées
dans la base est « DELETE ».
DELETE FROM table WHERE prédicat
table est le nom de la table sur laquelle porte la
sélection.

35

Vous aimerez peut-être aussi