Chapitre 6 Le-Langage-Sql
Chapitre 6 Le-Langage-Sql
Chapitre 6 Le-Langage-Sql
1. Maîtriser le langage SQL pour la définition des données (création, modification, suppression de
tables, expression de contraintes d’intégrité)
2. Maîtriser le langage SQL pour la manipulation des données (interrogation de la base, ajout, mise à
jour, et suppression d’enregistrements)
Eléments de contenu
I. Introduction
II. Expression des contraintes
1. Valeur NULL
2. Contraintes d’intégrité
III. Le Langage de Définition des Données : LDD
1. Création d’une table
2. Création d’une vue
3. Création d’index
4. Modification d’une table
5. Renommage une table
6. Suppression d’une table
IV. Le langage d’interrogation de données : LID
1. Syntaxe générale
2. Les prédicats
3. La jointure
4. Les requêtes imbriquées
V. Le langage de manipulation des données : LMD
1. L’insertion de tuples
2. La mise à jour de tuples
3. La suppression de tuples
VI. Le langage de contrôle des données : LCD
1. La clause GRANT
2. La clause REVOKE
I- Introduction
Le langage SQL (Structured Query Langage : langage de requêtes structurées) est un langage non procédural,
conçu par IBM dans les années 70. SQL est basée sur l’algèbre relationnelle (opérations ensemblistes et
relationnelles). Normalisé dès 1986, SQL constitue le standard aux bases de données relationnelles. Ce langage
permet l’accès aux données et se compose de quatre sous-ensembles :
• Le Langage de Contrôle de Données : LCD (Data Control Language DCL) : Ce langage permet
de définir les droits d’accès pour les différents utilisateurs de la base de données, donc il permet de
gérer la sécurité de la base et de confirmer et d’annuler les transactions.
2- Contraintes d’intégrité
Une contrainte d’intégrité est une règle qui permet de contrôler la validité et la cohérence des valeurs entrées
dans les différentes tables de la base. Elle peut être définie sous deux formes :
• Sur un attribut : La contrainte porte sur un seul attribut. Elle suit la définition de l’attribut.
Ces contraintes sont :
o NOT NULL : Spécifie que pour toute occurrence, l’attribut doit avoir une valeur (la saisie de ce
champ est obligatoire)
• Sur une table : La contrainte porte sur un ensemble d’attributs d’une même table, une virgule sépare
la définition d’une contrainte de table des définitions des attributs. Ces contraintes sont : o UNIQUE
(attri, attrj,…) : L’unicité porte sur le n-uplet des valeurs. o PRIMARY KEY (attri, attrj,…) : Clé
primaire de la table (clé composée).
o FOREIGN KEY (attri, attrj, …) REFERENCES table (attrm, attrn, …) [ON DELETE
CASCADE] : Désigne une clé étrangère sur plusieurs attributs.
L’option ON DELETE CASCADE indique que la suppression d’une ligne de la table de référence
va entraîner automatiquement la suppression des lignes référencées.
Il est possible de donner un nom à une contrainte grâce au mot clé CONSTRAINT suivi du nom que l'on
donne à la contrainte, de telle manière à ce que le nom donné s'affiche en cas de non-respect de l'intégrité,
c'est-à-dire lorsque la clause que l'on a spécifiée n'est pas validée.
Syntaxe :
nom_colonne_2 type_colonne_2,….,
nom_colonne_ntype_colonne_n) ;
Exemple :
VilleAg varchar(20));
VilleCl varchar(20));
solde number (10), PRIMARY KEY (NumC, NumAg, NumCl), CONSTRAINT fk-ag
FOREIGN KEY (NumAg) REFERENCES Agence, CONSTRAINT FOREIGN KEY
(NumCl) REFERENCES Client);
Exemple :
VIEW nom-vue ;
3- Création d’index
La création d’un index permet d’accélérer les recherches d’informations dans la base. La ligne est retrouvée
instantanément si la recherche peut utiliser un index, sinon la recherche se fait séquentiellement. Une autre
utilité de la création d’index est de garantir l’unicité de la clé en utilisant l’option UNIQUE.
Syntaxe :
• L'option UNIQUE permet de définir la présence ou non de doublons pour les valeurs de l’attribut.
• Les options ASC/DESC permettent de définir un ordre de classement des valeurs présentes dans
l’attribut.
n type_colonne n) ;
Exemple
Exemple
6- Suppressiond’une table
Syntaxe
DROP nom_table ;
La recherche d’information dans une base de données s’effectue à l’aide de la commande SQL SELECT.
Dans cette section, nous présenterons une syntaxe simplifiée de l’instructionSELECT.
Syntaxe :
FROM nom_de_la_table
WHERE condition
GROUP BY expression
HAVING condition
Le caractère * après SELECT indique que toutes les colonnes de la table doivent être prises en compte.
L'option ALL (par défaut) permet de sélectionner l'ensemble des lignes satisfaisant à la condition logique.
L'option DISTINCT permet de ne conserver que des lignes distinctes, en éliminant les doublons.
La clause WHERE : réalise l’opération de restriction de l’algèbre relationnelle en filtrant les lignes de la table
qui répondent au critère de sélection.
Les clauses GROUP BY (grouper les résultats), HAVING (restriction avec condition) et ORDER BY (tri des
résultats par ordre croissant ou décroissant) sont facultatives.
Exemple :
• SELECT AVG(solde)
FROM Compte;
2- Les prédicats
Exemple : n° des comptes dont le solde est compris entre 600 et 1000.
SELECT NumC
FROM Compte
d. LIKE :
Permet de faire une recherche approximative.
SELECT NomCl
FROM Client
actif IS NULL ;
3- La jointure
SELECT attribut1, attribut2,……
Exemple: donner le total de soldes des comptes des clients de la ville de Sousse.
SELECT sum(solde)
AND Cl.NumCl=C.NumCl;
a. IN / NOT IN:
Permet de tester la présence ou l’absence d’une valeur particulière dans un ensemble de valeurs.
SELECT NomCl
FROM Client
b. ALL\ANY :
ALL: Compare chacune des valeurs de l’ensemble à une valeur particulière et retourne vrai si la comparaison
est évaluée pour chacun des éléments.
ANY : Compare chacune des valeurs de l’ensemble à une valeur particulière et retourne vrai si la comparaison
est évaluée pour au moins un des éléments.
Exemple : n° agence ayant au moins un comptedont le solde est strictement supérieur à chacun des comptes
de l’agence A1 ?
SELECT NumAg
FROM Compte C
FROM Compte C
WHEREC.NumAg=’A1’);
SELECT NomAg
FROM Agence A
FROM Compte C
WHERE A. NumAg=C.NumAg
And C.solde<0) ;
Syntaxe
Syntaxe 1 : Syntaxe 2 :
Les autres attributs dans lesquels on n’a pas inséré des valeurs ne doivent pas être accompagnés par la
contrainte NOT NULL lors de la création de la table.
Exemple :
Syntaxe :
UPDATE nom_de_la_table
WHERE condition ;
Remarque
Exemple :
3- La suppression de tuples
La commande DELETE supprime des tuples d’une relation. La clause WHERE sert à sélectionner les tuples
à supprimer.
Syntaxe :
Cette tâche incombe à l'administrateur de la base de données (en anglais DBA, DataBase Administrator). Il
doit dans un premier temps définir les besoins de chacun, puis les appliquer à la base de données sous forme
de permissions. Le langage SQL permet d'effectuer ces opérations grâce à deux clauses : • GRANT permet
d'accorder des droits à un (parfois plusieurs sur certains SGBD) utilisateur
• REVOKE permet de retirer des droits à un (ou plusieurs sur certains SGBD) utilisateur
Les permissions (appelées aussi droits ou privilèges) peuvent être définies pour chaque (un grand nombre)
clause. D'autre part, il est aussi possible de définir des rôles c'est-à-dire de permettre à d'autres utilisateurs
d'accorder des permissions.
1- La clause GRANT
GRANT : Permet au propriétaire d’une table ou vue de donner à d’autres utilisateurs des droits d’accès à
celles-ci.
Syntaxe :
Exemple :
2- La clause REVOKE
Un utilisateur ayant accordé un privilège peut l’annuler à l’aide de la commande REVOKE.
Syntaxe :