Vous êtes sur la page 1sur 34

Plan

Introduction
Parties du SQL
Requêtes imbriquées
Clause With
Modification de la base de donn´ees

Introduction au langage SQL

Prof : A. SRAI
Faculté des Sciences et Techniques
d'Al Hoceima (FSTH)

2021/2022

Cours SQL / BD
Plan
Introduction
Parties du SQL
Requêtes imbriquées
Clause With
Modification de la base de donn´ees

1 Introduction

2 Parties du SQL

3 Requêtes imbriquées

4 Clause With

5 Modification de la base de
données

Cours SQL / BD
Plan
Introduction
Parties du SQL
Requêtes imbriquées
Clause With
Modification de la base de donn´ees

Définition (SQL)

SQL (Structured Query Language) : est le langage


utilisé pour accéder aux données d'une base de
données.
est un langage « universel » utilisé par
- les administrateurs;
- les développeurs ;
- les utilisateurs pour :
administrer, contrôler, définir et développer des BD.

Cours SQL / BD
Plan
Introduction
Parties du SQL
Requêtes imbriquées
Clause With
Modification de la base de donn´ees

Objectif

Manipuler (c’est-`a-dire créer,modifier, supprimer,


interroger) tous les types d’objets d’une BD
relationnelle :
la BD
les
domaines
les tables
les règles
les vues
les
index...

Cours SQL / BD
Plan
Introduction
Parties du SQL
Requêtes imbriquées
Clause With
Modification de la base de donn´ees

Commandes SQL (DML)

Commandes de manipulation des données (DML):

SELECT : interrogation
INSERT : insertion
UPDATE : mise à jour
DELETE : suppression

Cours SQL / BD
Plan
Introduction
Parties du SQL
Requêtes imbriquées
Clause With
Modification de la base de donn´ees

Commandes SQL (DDL)

Commandes de définition de données (DDL):

CREATE : création d'un objet


ALTER : modification d'un objet
TRUNCATE : supprimer les lignes d'une table
DROP : supprimer un objet
RENAME : renommer un objet

Cours SQL / BD
Plan
Introduction
Parties du SQL
Requêtes imbriquées
Clause With
Modification de la base de donn´ees

Principaux types de valeur (VARCHAR(n), INTEGER..)

Cours SQL / BD
Plan
Introduction
Parties du SQL
Requêtes imbriquées
Clause With
Modification de la base de donn´ees

Création de table

Une relation SQL est définie à l’aide de la commande


create table :
Exemple :
1 create table Enseignant (
2 I D c ha r ( 5) ,
3 nom v a r c ha r ( 20) ,
4 nom_ de pt v a r c ha r ( 20) ,
5 s a l a i r e nume r i c ( 8 , 2) )
;

Cours SQL / BD
Plan
Introduction
Parties du SQL
Requêtes imbriquées
Clause With
Modification de la base de donn´ees

Contraintes d'intégrités
Types de Contraintes d'intégrités
primary key (A1, ..., An )
foreign key (Am, ..., An ) references r
not null
SQL empêche toute mise à jour de la base de données
qui viole une contrainte d'intégrité
Exemple :
1 create table Enseignant (
2 I D c ha r ( 5) ,
3 nom v a r c ha r ( 20) not nul l ,
4 nom_ de pt v a r c ha r ( 20) ,
5 s a l a i r e nume r i c ( 8 , 2) ,
6 pr i ma r y k ey ( I D) ,
7 f o r e i g n key ( nom_dept) r e f e r e n c e s d e p a r t e m e n t ) ;

Cours SQL / BD
Plan
Introduction
Parties du SQL
Requêtes imbriquées
Clause With
Modification de la base de donn´ees

Mises à jour des tables


Insertion
1 i ns e r t i nt o E ns e i g na nt v a l ue s ( ’ 10211 ’ , ’ J AOUAD’ ’
I nf or ma t i que ’ , 1 3 0 00 ) ;

Suppression : Suppression de tous les tuples de la


relation Etudiant
1 d e l e t e from E t u d i a n t

Suppression de la table
1 rd r o p t a b l e r
Modification de la table
1 ALTER TABLE e m p l o y e ADD ( L i b e l l e V A R C H A R 2 ( 2 0 ) )
MODIFY ( e m p l o i V A R C H A R 2 ( 2 0 ) N O T N U L L ) ;
1 a l t e r t a b l e r drop A D

Cours SQL / BD
Plan
Introduction
Parties du SQL
Requêtes imbriquées
Clause With
Modification de la base de donn´ees

Mises à jour des tables (ALTER TABLE - ADD Column)


ALTER TABLE - ADD Column
Pour ajouter une colonne dans un tableau, utilisez la
syntaxe suivante :
1 ALTER TABLE table_name
ADD column_name datatype;

Example
ALTER TABLE Customers
1 ADD Email varchar(255);

Cours SQL / BD
Plan
Introduction
Parties du SQL
Requêtes imbriquées
Clause With
Modification de la base de donn´ees

Mises à jour des tables (ALTER TABLE - DROP Column)


ALTER TABLE - DROP Column
Pour Supprimer une colonne dans un tableau, utilisez la
syntaxe suivante :
1 ALTER TABLE table_name
DROP COLUMN column_name;

Example
ALTER TABLE Customers
1 DROP COLUMN Email;

Cours SQL / BD
Plan
Introduction
Parties du SQL
Requêtes imbriquées
Clause With
Modification de la base de donn´ees

Mises à jour des tables (ALTER TABLE - ALTER/MODIFY


COLUMN)
ALTER TABLE -ALTER/MODIFY COLUMN
Pour modifier le type de données d'une colonne dans
une table, utilisez la syntaxe suivante :
1 ALTER TABLE table_name
MODIFY column_name datatype;

Example
ALTER TABLE Persons
1 MODIFY DateOfBirth year;

Cours SQL / BD
Plan
Introduction
Parties du SQL
Requêtes imbriquées
Clause With
Modification de la base de donn´ees

Structure d’une requête SQL basic

1 s e l e c t A1 , A2 , . . . , An
2 f r om r 1 , r 2 , . . . ,
3 r mwhere P

Ai : représente un attribut
ri : représente une relation
P : est un prédicat.
Le résultat d’une requête SQL est une relation.

Cours SQL / BD
Plan
Introduction
Parties du SQL
Requêtes imbriquées
Clause With
Modification de la base de donn´ees

Clause SELECT

La clause select peut contenir des expressions


arithmétiques impliquant l’opération, +, -, × et /, et
opérant sur des constantes ou des attributs de tuples.
On peut renommer un attribut en utilisant le mot as.
1 select *
2 from P i l o t e

Cours SQL / BD
Plan
Introduction
Parties du SQL
Requêtes imbriquées
Clause With
Modification de la base de donn´ees

Clause WHERE
La clause WHERE spécifie les conditions que le résultat
doit satisfaire (Correspond au prédicatsélectionde
l’algèbre relationnelle.)
Exemple : Lister tous les enseignants de
département Informatique.
1 s e l e c t nom
2 from E n s e i g n a n t
3 whe r e nom_ de pt = " I nf or ma t i que "

Cours SQL / BD
Plan
Introduction
Parties du SQL
Requêtes imbriquées
Clause With
Modification de la base de donn´ees

Clause WHERE

Les comparaisons peuvent être appliquées aux


résultats d’expressions arithmétiques
Exemple : Lister tous les enseignants dans le
département informatique avec salaire > 70000
1 s e l e c t nom
2 from E n s e i g n a n t
3 where nom_dept = ’ I n f o r m a t i q u e ’ and s a l a i r e > 70000

Cours SQL / BD
Plan
Introduction
Parties du SQL
Requêtes imbriquées
Clause With
Modification de la base de donn´ees

Clause FROM
La clause from répertorie les relations impliquées dans
la requeteCorrespond à l’opération produit cartésienne
de l’ algèbre relationnelle.
Pour génére toutes les paires enseignant-etudiant
par exemple :
1 select *
2 from E n s e i g n a n t , Etudiant

Produit cartésien n’est pas très utile en général sauf s’il est
combiner avec la clause WHERE (opération de sélection
en algèbre relationnelle).
SQL permet de renommer les relations aussi avec
l’opérateur as.
Cours SQL / BD
Plan
Introduction
Parties du SQL
Requêtes imbriquées
Clause With
Modification de la base de donn´ees

Opérations sur chaı̂ne de caractère ( LIKE )


SQL inclut un opérateur de correspondance de chaîne
pour les comparaisons sur des chaı̂nes de caractères.
L’opérateur like utilise des modèles décrits à l’aide de
deux caractères spéciaux :
pourcentage (%). Le caractère % correspond à n’importe
quelle sous-chaîne.
underscore ( _). Le caractère _correspond à n’importe
quel caractère.

1
select *
from P i l o t e W H E R E
2
plnom LIKE 'M%';
3

Cours SQL / BD
Plan
Introduction
Parties du SQL
Requêtes imbriquées
Clause With
Modification de la base de donn´ees

Ordonner le résultat d’une requête (ORDER BY)

Exemple : Lister les noms des enseignent en ordre


alphabétique
1 s e l e c t nom
2 from E n s e i g n a n t
3 o r d e r by nom

On peut spécifier desc pour l’ordre descendant et asc


pour l’ordre ascendant pour chaque attribut par défaut
c’est descendant.
On peut trier sur plusieurs attributs.

Cours SQL / BD
Plan
Introduction
Parties du SQL
Requêtes imbriquées
Clause With
Modification de la base de donn´ees

Opérations ensemblistes (union, intersect)


Trouvez des cours qui se sont déroulés à l’automne
2020 ou au printemps 2021
1 ( s e l e c t i d_ c our s f r om s e c t i on whe r e s e m= ’ a ut omne ’
a nd a nne e = 2 0 2 0 )
2 union
3 ( s e l e c t i d_ c our s f r om s e c t i on whe r e s e m= ’
pr i nt e mps ’ a nd a nne e = 2 0 2 1 )

Trouvez des cours qui se sont déroulés à l’automne


2020 et au printemps 2021
1 ( s e l e c t i d _ c o u r s from s e c t i o n where sem = ’
a ut omne ’ a nd a nne e = 2020)
2 intersect
3 ( s e l e c t i d _ c o u r s from s e c t i o n where sem = ’
pr i nt e mps ’ a nd a nne e = 2021)

Cours SQL / BD
Plan
Introduction
Parties du SQL
Requêtes imbriquées
Clause With
Modification de la base de donn´ees

Opérations ensemblistes (Except)

Trouvez des cours qui se sont déroulés à l’automne


2020 et non pas au printemps 2021
1 ( select id_cours from s e c t i o n where sem = ’
a ut omne ’ a nd a nne e = 2020)
2 except
3 ( s e l e c t i d _ c o u r s from s e c t i o n where sem = ’
pr i nt e mps ’ a nd a nne e = 2021)

Tous les opérateurs ensemblistes éliminent les doublons


pour les garder on doit rajouter le mot clé all.
union all
intersect all
except all

Cours SQL / BD
Plan
Introduction
Parties du SQL
Requêtes imbriquées
Clause With
Modification de la base de donn´ees

Valeur Null

Il est possible que les tuples aient une valeur nulle,


notée null, pour certains de leurs attributs
null signifie une valeur inconnue ou qu’une valeur
n’existe pas.
Le résultat de toute expression arithmétique
impliquant null est nul
Le prédicat is nul peut être utilisé pour vérifier les
valeurs nulles.

Cours SQL / BD
Plan
Introduction
Parties du SQL
Requêtes imbriquées
Clause With
Modification de la base de donn´ees

Fonctions d’agrégats (AVG, MIN, MAX, SUM, COUNT)


Ces fonctions opèrent sur le multi set de valeurs d’une
colonne d’une relation, et retournent une valeur
avg : valeur moyenne
min : valeur minimale
max : valeur maximale
sum : somme des
valeurs
count : nombre de valeurs
Exemple : Trouvez le salaire moyen des enseignants du
d´epartement Informatique
1 s el ec t avg ( s al ai r e )
2 from E s e i g n a n t
3 whe r e nom_ de pt = ’ I nf or ma t i que ’ ;
Cours SQL / BD
Plan
Introduction
Parties du SQL
Requêtes imbriquées
Clause With
Modification de la base de donn´ees

Fonctions d’agrégats et clause GROUP BY

Trouvez le salaire moyen des enseignants de tous les


départements
1 s e l e c t nom_ de pt , a v g ( s a l a i r e )
2 from E s e i g n a n t
3 g r o u p by n o m _ d e p t ;

Les attributs de la clause select en dehors des


fonctions d’agrégat doivent apparaître dans la clause
group by

Cours SQL / BD
Plan
Introduction
Parties du SQL
Requêtes imbriquées
Clause With
Modification de la base de donn´ees

Fonctions d’agrégats et clause (HAVING)

Trouvez les noms et les salaires moyens de tous les


départements dont le salaire moyen est supérieurà 20000
1 s e l e c t nom_ de pt , a v g ( s a l a i r e )
2 from E s e i g n a n t
3 g r o u p by nom_dept
4 ha v i ng a v g ( s a l a i r e ) > 20000;

les prédicats de la clause having sont appliqués après la


formation des groupes tandis que les prédicats de la
clause where sont appliqués avant de former des groupes

Cours SQL / BD
Plan
Introduction
Parties du SQL
Requêtes imbriquées
Clause With
Modification de la base de donn´ees

Sous-requêtes imbriquées
SQL fournit un mécanisme pour l’imbrication des sous-
requêtes. Une sous-requêtes est une expression de
sélection depuis où qui est imbriquée dans une autre requête.
L’imbrication peut être effectuée dans la requête SQL suivante
1 s e l e c t A1 , A2 , . . . , An
2 f r om r 1 , r 2 , . . . , r m
3 where P
comme suit :
clause From : ne peutêtre remplacépar n’importe quelle
sous-requêtevalide
La clause Where : P peutêtre remplacée par une expression de
la forme : B <opération> (sous-requête) B est un attribut et
<opération>à définir ultérieurement.
la clause select : ne peutêtre remplacépar une sous-requête
qui génère une valeurunique
Cours SQL / BD
Plan
Introduction
Parties du SQL
Requêtes imbriquées
Clause With
Modification de la base de donn´ees

Opérateur sur les ensemble ( in et not in )

Opérateur in et not in
Exemple : Trouver les cours disponible en automne
2020 et printemps 2021
1 select d i s t i n c t id_cours
2 from s e c t i o n
3 whe r e s e me s t e r e = ’ Aut omne ’ a nd a nne e = 2020
4 a nd i d _ c o u r s i n ( s e l e c t i d _ c o u r s
5 from s e c t i o n
6 whe r e s e me s t e r e = ’ pr i nt e mps ’
a nd annee = 2 0 2 1 ) ;

Cours SQL / BD
Plan
Introduction
Parties du SQL
Requêtes imbriquées
Clause With
Modification de la base de donn´ees

Opérateur sur les ensemble (some et all)

Opérateur some et all


Exemple : Lister les enseignants ayant un salaire supérieur a
tous les salaire des enseignant de département de biologie.

1 s e l e c t nom
2 from E n s e i g n a n t
3 whe r e s a l a i r e > a l l ( s e l e c t
4 s a l a i r e from E n s e i g n a n t
5 whe r e nom_ de pt = ’ Bi ol og i e ’ ) ;

Cours SQL / BD
Plan
Introduction
Parties du SQL
Requêtes imbriquées
Clause With
Modification de la base de donn´ees

Opérateur sur les ensemble (exist et not exist)

Opérateur exist et not exist


exist retourne Vrai si le résultat de sous requête n’est pas vide.
Exemple : Trouvez des cours qui se sont déroulés àl’automne 2020
et au printemps 2021

1 select id_cours
2 from s e c t i o n a s S
3 whe r e s e me s t e r e = ’ a ut omne ’ a nd a nne e = 2020
4 a nd e x i s t s ( select *
5 from s e c t i o n a s T
6 whe r e s e me s t e r e = ’ pr i nt e mps ’ a nd a nne e = 2021
7
a nd S . i d_ c our s = T . i d_ c our s ) ;

Cours SQL / BD
Plan
Introduction
Parties du SQL
Requêtes imbriquées
Clause With
Modification de la base de donn´ees

Opérateur sur les ensemble (unique)

Opérateur unique : teste si une sous requête a des


doublons ou non.
Unique a valuation Vrai si ne contient pas de doublons
Exemple : Trouver les cours disponible au plus une fois
en 2020
1 s e l e c t T . i d_ c our s
2 from c o u r s a s T
3 whe r e uni que ( s e l e c t R.
4 i d_ c our s from s e c t i o n a s R
5 whe r e T . i d_ c our s = R.
6 i d_ c our s a nd R. a nne e
= 2020) ;

Cours SQL / BD
Plan
Introduction
Parties du SQL
Requêtes imbriquées
Clause With
Modification de la base de donn´ees

Clause With

La clause with fournit un moyen de définir une relation


temporaire dont la définition n’est disponible que pour la
requête dans laquelle la clause with apparaît.
Exemple 1 : Trouvez tous les départements avec le budget
maximum
1 wi t h ma x _ budg e t ( v a l ue ) a s
2 ( s e l e c t ma x ( budg e t )
3 from d e p a r t e m e n t )
4 s e l e c t de pa r t e me nt .
5 nom
6 from d e p a r t e m e n t , max_budget
whe r e de pa r t e me nt . budg e t = ma x _ budg e t . v a l ue ;

Cours SQL / BD
Plan
Introduction
Parties du SQL
Requêtes imbriquées
Clause With
Modification de la base de donn´ees

Modification de la base de données (insert, delete, update)

Suppression de tuples d’une relation donnée.


Insertion de nouveaux tuples dans une relation
donnée
Mise àjour des valeurs de certains tuples dans une
relation donnée

Cours SQL / BD
Plan
Introduction
Parties du SQL
Requêtes imbriquées
Clause With
Modification de la base de donn´ees

Modification de la base de données (insert, delete, update)

Suppression :
1 d e l e t e from E n s e i g n a n t
2 whe r e nom_ de pt = ’ F i na nc e ’ ;

Insertion :
1 i n s e r t i n t o c o u r s ( i d , t i t r e , nom_dept , h o r r a i r e )
2 v a l ue s ( ’ CS 437 ’ , ’ S GBD’ , ’ i nf or ma t i que ’ ,
3 4) ;
i n s e r t i n t o t a b l e 1 s e l e c t * from t a b l e 1
Mise à jour :
1 update E n s e i g n a t
2 set s a l a i r e = s a l a i r e * 1.05
3 where s a l a i r e < 7 0 0 0 0 ;

Cours SQL / BD

Vous aimerez peut-être aussi