Vous êtes sur la page 1sur 79

Le langage SQL

Plan
• Présentation de l’environnement SQL*Plus
• Langage d’Interrogation des données
• Langage de Manipulation des données
• Langage de Définition des données
• Langage de contrôle de données
• Mini projet
Aspect générale du langage SQL
Le langage SQL ( Structured Query Longage : Langage
d’interrogation structuré) , lié à la structure relationnelle des
BD, est un langage non procédural, il comporte plusieurs
commandes qui se repartissent en trois familles
fonctionnellement distinctes:
• Langage de manipulation des données (LMD): sélectionner,
insérer, modifier, ou supprimer des données dans une
table.
• Langage de définition des données(LDD): créer des tables
dans une BDR, ainsi d’en modifier ou de supprimer leur
structure.
• Langage de contrôle de données(LCD): gérer la sécurité et
les permissions au niveau des utilisateurs d’une BDR.
Tables utilisées dans le Cours
Table Emp Table Dept

Table SALGRADE
L’ordre Select
L’utilisation la plus fréquente de SQL s’effectue dans
les requêtes afin de rechercher les données dans
une base de données.
Syntaxe
select [distinct] * | <liste des champs >
From <Liste des tables>
[where <critère de sélection >]
[group by <critères de regroupement>]
[having <conditions de filtrage sur les groupes>]
[order by <liste des champs > asc | desc ] ;
Écriture des Ordres SQL
• Les ordres SQL peuvent être écrits
indifféremment en majuscules et/ou minuscules.
• Les ordres SQL peuvent être écrits sur plusieurs
lignes.
• Les mots-clés ne doivent pas être abrégés ni
scindés sur deux lignes différentes.
• Les clauses sont généralement placées sur des
lignes distinctes.
Exemple de SELECT
Exemple de SELECT
L’Alias de Colonne
• Permet de renommer un en-tête de colonne
(champs)
• Suit immédiatement le nom de la colonne ; le
mot-clé AS peut être placé entre le nom et l’alias
est optionnel
• Doit obligatoirement être inclus entre guillemets
(") s’il contient des espaces, des caractères
spéciaux ou si les majuscules/minuscules doivent
être différenciées
Le littéral
• Un littéral est un caractère, une expression, ou
un nombre inclus dans la liste SELECT.
• Les valeurs littérales de type date et caractère
doivent être placées entre simples quotes (').
Les opérateurs
Utilisation des Opérateurs
Utilisation des Opérateurs de
Comparaison
Utilisation des Opérateurs logiques
Utilisation de l’opérateurs de
Concaténation
Exemple de tri des enregistrements
Types de Jointures en SQL

Equijointure Non-équijointure

Jointure externe Auto-jointure


Exemple d’équijointure
Exemple de non-équijointure
Exemple de Jointures Externes
Exemple de l’autojointures
Fonction de regroupement de
données
Les fonctions de groupe agissent sur des
groupes de lignes et donnent
• un résultat par groupe
• AVG ([DISTINCT|ALL]n)
• COUNT ({ *|[DISTINCT|ALL]expr})
• MAX ([DISTINCT|ALL]expr)
• MIN ([DISTINCT|ALL]expr)
• SUM ([DISTINCT|ALL]n)
Utilisation des fonctions de regroupement
Utilisation des fonctions de regroupement
Création de Groupes de Données
Exemple de création de groupes de données
Imbrication des Fonctions de Groupe
Utilisation de la clause HAVING
La clause HAVING permet restreindre les groupes

• Les lignes sont regroupées.

• La fonction de groupe est appliquée.

• Les groupes qui correspondent à la clause HAVING


sont affichés.
Exemple de l’utilisation de HAVING
Exemple de l’utilisation de HAVING
Les Sous-Interrogations
Syntaxe
SELECT select_list
FROM tables
WHERE expr operator (SELECT select_list FROM tables… )
…;
• La sous-interrogation (requête interne) est exécutée
une fois avant la requête principale (une sous-
interrogation ne doit pas contenir la clause ORDER BY).
• Le résultat de la sous-interrogation est utilisé par la
requête principale (externe).
Types de Sous-Interrogations
Sous-interrogation Sous-interrogation
mono-ligne multi-ligne
Exemple de Sous-Interrogations mono-ligne
Exemple de Sous-Interrogations mono-ligne
Exemple de Sous-Interrogations multi-ligne
Exemple de Sous-Interrogations multi-ligne
Les Sous-Interrogations Synchronisées
Syntaxe: SELECT outer1, outer2, ...
FROM table1 alias1
WHERE outer1 operator (SELECT inner1
FROM table2 alias2
WHERE alias1.outer2 = alias2.inner1);
• La sous-interrogation est exécutée pour chaque
enregistrement de la requête principale.
Exemple de Sous-Interrogations Synchronisées

• Recherchez tous les employés dont le salaire est


supérieur au salaire moyen de leur département
Les Sous-Interrogations Synchronisées et l'Opérateur
EXISTS

• Pour chaque enregistrement de la requête


principale, une recherche d’enregistrement est
effectuée dans la sous-interrogation.
• La recherche dans la sous-interrogation est
interrompue dès une ligne a été trouvée, la
condition de la requête principale est vraie.
• La condition de la requête principale est fausse si
aucune ligne n’a été trouvée dans la sous-
interrogation.
Exemple de l’utilisation de l’opérateur EXISTS

Recherchez les employés ayant au moins une


personne sous leur responsabilité.
Les Opérateurs Ensemblistes
• Intersect
• Union / Union All
• Minus
Exemple de l'Opérateur UNION
Affichez le nom, le poste et le département de tous
les employés
Exemple de l'Opérateur INTERSECT
Affichez les différents noms, numéros et postes des
employés présents dans les tables EMP et EMPHISTORY.
Exemple de l'Opérateur MINUS
Affichez le nom, le numéro et le poste de tous
les employés ayant quitté la société.
Ajout d‘enregistrement dans une Table

L'ordre INSERT permet d'ajouter un nouveau


enregistrement dans une table.

• Indiquez les valeurs dans l'ordre par défaut des


colonnes dans la table.
• Placez les valeurs de type caractère et date entre
simples quotes.
Ajout d‘enregistrement dans une Table
Ajout d‘enregistrement dans une Table

Les champs de la clause INSERT doit correspondre à


ceux de la sous-interrogation
Modification des données d’une Table
L'ordre UPDATE permet de modifier les enregistrements
d’une table.

• La clause WHERE permet de modifier une ou plusieurs


lignes spécifiques; en cas d’absence de cette clause
toutes les lignes seront modifiées.
• Chaque opération de modification doit respecter les
contraintes d’intégrité référentielle de la base de
données.
Modification des données d’une Table
Suppression des enregistrements d’une Table

L'ordre DELETE permet de supprimer des enregistrements


a partir d’une table.

• La clause WHERE permet de supprimer une ou


plusieurs lignes spécifiques en l’absence de cette
clause, toutes les lignes sont supprimées.
• Chaque opération de modification doit respecter les
contraintes d’intégrité référentielle de la base de
données.
Suppression des enregistrements d’une Table
Langage de définition des Données
Un ordre du LDD permet de créer , de supprimer
et de modifier la structure d’une base de
données relationnelle; les objets que le LDD
peut gérer sont:
– Table
– Vue
– Séquence
– Index
– Synonyme
Création de Tables

Les identificateurs utilisés doivent respecter les règles


suivantes:
• Commencer par une lettre et contenir que les caractères A
à Z, 0 à 9, _, $, et # (30 caractères maximum).
• Être différent des autres objets appartenant au même
utilisateur et des mots réservé à Oracle
Création de Tables
Création de Tables
Modification de la structure d’une Tables
L'ordre ALTER TABLE permet d’ajouter de nouveau
champs ou de modifier des champs existants.
Gestion des tables
Les Contraintes d’intégrités
Les types de contraintes reconnues dans SQL
sont:
• NOT NULL
• UNIQUE
• PRIMARY KEY
• FOREIGN KEY
• CHECK
Les Contraintes d’intégrités
Les Contraintes d’intégrités
Gestion des contraintes
Notion de vue
• Une vue est une table virtuelle basée sur une ou
plusieurs table (ou sur d’autres vues). C’est une fenêtre
par laquelle il est possible de visualiser ou de modifier
des données venant de ces tables (appelés tables de
base).
• Les utilisateurs consultent la base, ou modifier la base
(avec certaines restrictions) à travers les vues
(Limitation d'accès )
Création d’une Vue
Exemple de création d’une Vue
Suppression d’une vue
Contrôle des accès utilisateur
• Dans un environnement multi-utilisateur, l’accès et
l’utilisation d’une base de données doit être sécurisé;
une telle sécurité peut être classé en deux catégories :
– La sécurité du système couvre l’accès à la base de
données et son utilisation au niveau du système (nom
de l’utilisateur et mot de passe, espace disque alloué
aux utilisateurs et opérations système autorisées par
l’utilisateur)
– La sécurité de la base de données couvre l’accès aux
objets de la base de données et leur utilisation, ainsi
que les actions exécutées sur ces objets par les
utilisateurs
Privilèges

• Un privilège donne le droit d’exécuter certaines


opérations sur la base de données(ordres SQL):
– Privilèges système : autorisent l'accès à la base de
données

– Privilèges objet : autorisent la manipulation du


contenu des objets de la base de données
Compte utilisateur
Création et Attribution d'un Rôle
• Un rôle est un groupe d’utilisateur qu’ont les même
privilèges. Un utilisateur peut avoir accès à plusieurs
rôles, et le même rôle peut être attribué à plusieurs
utilisateurs.
• L'ordre CREATE ROLE permet à l'administrateur de base
de données de créer de nouveau utilisateurs.
• L'ordre GRANT permet d’attribue un rôle à des
utilisateurs
Retrait d'un Rôle
• L'ordre REVOKE permet de retirer un rôle à un
utilisateur
Privilèges systèmes de l’utilisateur
• L'administrateur de base de données peut accorder certaines
privilèges à un utilisateur.

• Des rôles sont préfinis par Oracle: Exemple CONNECT permet


à un utilisateur de se connecter et de créer des tables.
Octroi de privilèges système
• L'ordre GRANT permet à l'administrateur
d’accorder à un utilisateur certains privilèges
systèmes.
Retrait des privilèges systèmes
• L’administrateur peut retirer à un utilisateur
ou à un rôle certains privilèges systèmes qui il
leurs a accordés.
Privilèges objets

• Le propriétaire d’un objet d’une base de données


peut accorder certaines privilèges autorisant la
manipulation du contenu de cet objet.

• Exemple de privilèges

• SELECT, ALTER , DELETE , INSERT, REFERENCES,


UPDATE
Octroi de privilèges objets
• L'ordre GRANT permet d’accorder à un utilisateur
certains privilèges objets.

• WITH GRANT OPTION autorise le bénéficiaire à


accorder les privilèges objet à d'autres utilisateurs et
à des rôles
Retrait des privilèges objets
• L'ordre REVOKE permet de retirer à un utilisateur ou
à un rôle certains privilèges objets qui leurs étaient
accordés.

• Les privilèges accordés avec WITH GRANT OPTION


seront automatiquement retirés.
Transactions de Base de Données
• Une transaction se compose des éléments suivants :
– Ensemble d'ordres du LMD effectuant une opération
cohérente des données
– Un ordre du LDD ou LCD
• Une transaction commence à l'exécution d’un ordre
SQL et se termine par l'un des événements suivants :
– COMMIT ou ROLLBACK
– Exécution d'un ordre LDD ou LCD (validation automatique)
– Fin de session utilisateur
– Panne du système
Transactions de Base de Données
• Avant toute opération de sauvegarde ou de restauration (COMMIT
ou ROLLBACK) :
– Les résultats des ordres du LMD exécutés par l'utilisateur courant ne
peuvent pas être affichés par d'autres utilisateurs.
– Les lignes concernées sont verrouillées. Aucun autre utilisateur ne
peut les modifier
• Après toute opération de sauvegarde ou de restauration (COMMIT
ou ROLLBACK) :
– Les modifications des données dans la base sont définitives (perte de
l'état précédent de la base)
– Tous les utilisateurs peuvent voir le résultat des modifications.
– Les lignes verrouillées sont libérées et peuvent de nouveau être
manipulées par d'autres utilisateurs
Transactions de Base de Données

Vous aimerez peut-être aussi