Dr. Meriem Amina Zingla

Télécharger au format pdf ou txt
Télécharger au format pdf ou txt
Vous êtes sur la page 1sur 20

SQL

Dr. Meriem Amina Zingla

Université Mustapha STAMBOULI de Mascara


Faculté des Sciences Exactes
Département Informatique
2021/2022

1/20 Meriem Amina Zingla


Introduction

SQL : Structured Query Language


Accéder aux données de la base de données
langage adapté aux bases de données relationnelles
Conçu en 1974, normalisé en 1986
MySQL, ORACLE, PostgreSQL, SQLserver,...

2/20 Meriem Amina Zingla


Introduction

Caractéristiques
SQL est un :
Langage de Définition de Données (LDD) : définir le schéma de la
base de données (créer et supprimer des objets dans la base de
données tel que : table, contraintes d’intégrité,etc..)
Exemples de commandes : CREATE, DROP,ALTER
Langage de Manipulation de Données (LMD) : interroger et
modifier les données de la base
Exemples de commandes : INSERT, UPDATE, DELETE,
SELECT
Langage de contrôle d’accès aux données : définir des
permissions au niveau des utilisateurs d’une bese de données. On
parle de DCL (Data Control Language).
Exemples de commandes : GRANT

3/20 Meriem Amina Zingla


Présentation

Définition
Le SQL est un langage permettant la manipulation et la
communication avec une base de données. Il permet via des
requêtes, de créer, interroger, modifier, supprimer et manipuler les
données.

Objectifs
Créer la structure de la base de données et de ses tables.
Exécuter les tâches de la gestion des données.
Effectuer des requêtes simples ou complexes.

4/20 Meriem Amina Zingla


Format de base d’une requête

Syntaxe
SELECT Liste des noms d’attributs du résultat
FROM Nom d’une relation (ou de plusieurs relations)
WHERE Condition logique qui définit les tuples du résultat

Sémantique
1 Faire le produit cartésien de toutes les tables de la clause FROM
2 Appliquer à ce résultat tous les prédicats de la clause WHERE
3 Afficher les colonnes de la clause SELECT

5/20 Meriem Amina Zingla


Expression de projection
Une projection s’exprime par la clause :
SELECT liste-attributs
FROM relation ;
Exemple : soit la base de l’extension suivante de la relation
Enseignant
SELECT Catégorie FROM Enseignant ;

Numéro Nom Catégorie Classe Salaire


1 Khadidja maitre de conférence B 60000
2 Smail maitre de conférence B 60000
3 Shahad Professeur B 100000
4 Zakaria maitre de conférence A 80000
5 Mohamed maitre assistant A 50000
Résultat
Catégorie
maitre de conférence
maitre de conférence
Professeur
maitre de conférence
maitre assistant
6/20 Meriem Amina Zingla
Expression de projection
DISTINCT : permet de supprimer les doubles.
Exemple : SELECT DISTINCT Catégorie FROM Enseignant ;
Résultat
Catégorie
maitre de conférence
Professeur
maitre assistant
’*’ : permet de désigner dans la clause SELECT tous les attributs
d’une table
Exemple : SELECT * FROM Enseignant ;
Résultat

Numéro Nom Catégorie Classe Salaire


1 Khadidja maitre de conférence B 60000
2 Smail maitre de conférence B 60000
3 Shahad Professeur B 100000
4 Zakaria maitre de conférence A 80000
5 Mohamed maitre assistant A 50000
7/20 Meriem Amina Zingla
Expression de la projection

Projection d’une constante :


Exemple : afficher nom d’enseignant ’est un’ catégorie
SELECT nom, ’est un’, catégorie FROM Enseignant
Nom est un Catégorie
Khadidja est un maitre de conférence
Smail est un maitre de conférence
Shahad est un Professeur
Zakaria est un maitre de conférence
Mohamed est un maitre assistant

8/20 Meriem Amina Zingla


Expression de la projection

Expression d’un calcul : permet de spécifier un calcul appliqué à


une colonne
Exemple : afficher les noms des enseignants et leurs salaires
après une augmentation de 5000 DA
SELECT Nom, Salaire+5000 FROM Enseignant ;
Résultat
Nom Salaire
Khadidja 65000
Smail 65000
Shahad 105000
Zakaria 85000
Mohamed 55000

Spécifier des alias de colonnes avec AS : permet de spécifier


l’entête d’une colonne affichée dans le résultat
Exemple : afficher pour chaque enseignant, le nouveau salaire
(salaire+5000) avec l’alias ’nouveau salaire’
SELECT Nom , Salaire+5000 AS ’nouveau salaire’ FROM
Enseignant ;

9/20 Meriem Amina Zingla


Expression des sélections
Spécification d’un Prédicat (expression logique) dans la clause
WHERE
Notion de prédicat

NOT inverse le résultat d’un prédicat


BETWEEN Pour spécifier un prédicat comportant une intervalle
Exemple : SELECT Nom FROM Enseignant WHERE Salaire
BETWEEN 80000 AND 100000 ;
IN et NOT IN teste si la valeur d’un attribut est incluse dans un
ensemble ou pas
Exemple : SELECT Nom FROM Enseignant WHERE Salaire IN
(80000, 90000 ,100000) ;
10/20 Meriem Amina Zingla
Expression des sélections

LIKE ce mot clé permet d’effectuer une recherche sur un modèle


particulier
Modèle : chaîne de caractère avec des jokers :
’%’ est un caractère joker qui remplace tous les autres caractères.
’_’ (underscore) peut être remplacé par n’importe quel caractère,
mais un seul caractère uniquement (alors que le symbole
pourcentage ’%’ peut être remplacé par un nombre incalculable de
caractères.
Exemple :
LIKE ‘%a’ : ce modèle permet de rechercher toutes les chaines de
caractère qui se termine par un “a”.
LIKE ‘a%’ : ce modèle permet de rechercher toutes les chaines de
caractère qui commence par un “a”.
LIKE ‘%a%’ : ce modèle permet de rechercher toutes les chaines
de caractère qui utilisent le caractère “a”.
LIKE ‘a_i’ : ce modèle permet de rechercher toutes les chaines
comme ali, ami, ...

11/20 Meriem Amina Zingla


Expression des jointures

Soit la base de données suivante :


Client( NC, Nom, Adresse)
Produit (NP, désignation, couleur, type, année-prod)
Achat( NC, NP, Quantité)
Un cas particulier de jointure est le produit cartésien qui est une
jointure sans qualification qui s’écrit :
SELECT * FROM relation1, relation2
Exemple SELECT * FROM Client, Achat ;
Produire toutes les combinaisons possibles de Client et Achat.
Jointure classique en SQL : Exprimée par un prédicat dans la
clause WHERE NomRel1.NomAtt1 θ NomRel2.NomAtt2

12/20 Meriem Amina Zingla


Expression des jointures

IN expression d’une Jointure avec une sous-requête


Exemple : SELECT Nom FROM Client
WHERE NC IN (SELECT NC
FROM Achat) ;
Dans cette requête on exprime le fait que le numéro client (NC)
des noms des clients cherchés doit appartenir à la liste des
numéros des clients (NC) de la relation Achat.
EXISTS < ensemble>
Cette condition teste si l’ensemble n’est pas vide .
Il existe aussi la condition inverse : NOT EXISTS <ensemble>
qui teste si l’ensemble est vide.

13/20 Meriem Amina Zingla


Expression des unions, intersections et différences

UNION : questions avec OU


Exemple : « numéros des produits de type portable ou de couleur
noire »
SELECT NP
FROM Produit
WHERE (type=’portable’)
UNION
SELECT NP
FROM Produit
WHERE (couleur=’noire’) ;
MINUS : questions avec NE . . . PAS,
Exemple « numéros des produits qui n’ont pas été acheté»
SELECT NP
FROM Produit
MINUS
SELECT NP
FROM Achat ;

14/20 Meriem Amina Zingla


Expression des unions, intersections et différences

INTERSECT : questions avec ET


Exemple : « numéros produits qui sont achetés par les clients 1 et

SELECT NP
FROM Achat
WHERE (NC=1)
INTER
SELECT NP
FROM Achat WHERE (NC=2) ;
MINUS : questions avec NE . . . PAS,
Exemple « numéros des produits qui n’ont pas été acheté»
SELECT NP
FROM Produit
MINUS
SELECT NP
FROM Achat ;
La différence peut aussi s’exprimer à l’aide du prédicat NOT IN

15/20 Meriem Amina Zingla


Fonctions d’agrégation

SQL offre les fonctions d’agrégation usuelles :


cardinal : COUNT
moyenne : AVG
minimum et maximum : MIN, MAX
total : SUM
Ces fonctions opèrent sur un ensemble de valeurs prises par un
attribut, ou pour COUNT uniquement, sur un ensemble de tuples.
;
Ces fonctions peuvent être utilisées dans la clause SELECT, par
exemple pour trouver le nombre de clients habitant Mascara on écrit :
SELECT COUNT(NC) FROM Client WHERE Adresse=’Mascara’ ;

16/20 Meriem Amina Zingla


Tri du résultat

ORDER BY permet de définir un ordre de tri pour les tuples du


résultat .
Exemple : lister les noms des clients habitant Mascara par ordre
alphabétique croissant SELECT Nom
FROM Client
WHERE Adresse =’Mascara’ ORDER BY Nom ASC ;
Dernière clause d’une requête SQL.
ASC : tri croissant, DESC : tri décroissant

17/20 Meriem Amina Zingla


Recherche avec partition des tuples d’une relation

Group by : GROUP BY : permet de partitionner le résultat de la


clause WHERE en sous ensembles sur lesquels on peut
appliquer des fonctions agrégat
HAVING : permet d’éliminer des sous-ensembles du résultat
lorsqu’il est partitionné par une clause GROUP BY
Exemple : la recherche des numéros de produits achetés par
plus de 20 acheteurs s’écrit :
SELECT NP
FROM Achat
GROUP BY NP HAVING COUNT (DISTINCT NC) >20
;

18/20 Meriem Amina Zingla


Mise à jour de la base de données
Insérer des tuples :
INSERT INTO nomrelation < tuple constant>
Exemple Ajouter le client 10 de nom Shahad habtant Mascara »
INSERT INTO Client <10 ‘Shahad’ ‘Mascara’> ;
Supprimer des tuples
DELETE nomrelation [WHERE condition]
Si la clause "WHERE condition" est présente, seuls les tuples
satisfaisant la condition sont supprimés.
Si la clause "WHERE condition" est absente, alors tous les tuples
sont supprimés ; la relation continue d’exister, mais sa population
est vide.
Mettre à jour un (des) attribut(s)
UPDATE nom relation
SET nomattr1 = <expression1 qui définit une valeur pour
l’attribut1>
nomattrn = <expression n qui définit une valeur pour l’attribut n>
[WHERE condition]
Exemple : pour les produits verts, changer leur couleur, elle devient
"vert d’eau".
UPDATE Produit SET couleur = "vert d’eau"
WHERE couleur = "vert"
19/20 Meriem Amina Zingla
Commandes de Définition

Création d’un schéma de relation


CREATE TABLE Client ( NC Integer, Nom String(20), Adresse
String(50)) ;
Ajout d’un attribut ALTER TABLE Client ADD COLUMN age
Integer ;
Suppression d’un schéma de relation
DROP TABLE Client ;

20/20 Meriem Amina Zingla

Vous aimerez peut-être aussi

pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy