Explorer les Livres électroniques
Catégories
Explorer les Livres audio
Catégories
Explorer les Magazines
Catégories
Explorer les Documents
Catégories
Cours de
Bases de données
(SQL/PL SQL)
Introduction à SQL
Les bases de données relationnelles
Une base de données relationnelle est un ensemble de tables à deux
dimensions
ID Nom Region_id
--- ------------ ------------
30 Finance 1
31 Ventes 1
32 Ventes 2
43 Opérations 3
50 Administration 5
Table Regions
ID Nom
--- ----------------------
1 Amérique du Nord
2 Amérique du Sud
3 Afrique / Moyen-orient
4 Asie
5 Europe
Objets de la base de données
Table : une table est la structure de base d’un SGBDR. Elle est composée
d’une ou plusieurs colonnes et de zéro, une ou plusieurs lignes.
Ligne : une ligne est une combinaison de valeurs des colonnes d’une
table. Elle correspond à une occurrence de la table. On pourrait comparer
une occurrence de table à un enregistrement d’un fichier classique.
Colonne : une colonne correspond à un type de donnée dans une table (on
parle parfois d’attribut).
Champ : un champ correspond à la valeur située à l’intersection d’une
ligne et d’une colonne.
Clé primaire : il s’agît d’une colonne qui identifie de manière unique une
ligne de la table (elle doit toujours être renseignée).
Clé étrangère : il s’agît d’une ou plusieurs colonnes qui font référence à
une clé primaire appartenant généralement à une autre table.
Objets de la base de données
Table : unité de stockage composée de lignes et de colonnes
PL/SQL
Langage propriétaire Oracle qui enrichit le langage SQL d’une couche
procédurale
SQL*Plus
Outil oracle reconnaissant et exécutant les instructions SQL et PL/SQL
Les différents types de commandes SQL
Environnement (set)
Execution (/)
12
Langage d’interrogation des données
Les Conditions
Permettent de comparer une colonne ou une expression à une autre
colonne ou expression
ID NOM REGION_ID
---- ------------------------------ ----------------
10 Finance 1
31 Ventes 1
32 Ventes 2
41 Opérations 1
42 Opérations 2
43 Opérations 3
50 Administration 1
12 rows selected
Langage d’interrogation des données
Exemples
SQL> SELECT nom FROM personnes
2 WHERE nom Like 'R_v%' ;
15
Langage d’interrogation des données
Fonction Description
Count(*|[ DISTINCT|ALL] expr) Le nombre de ligne de expr
Avg( [ DISTINCT | ALL] expr) Valeur moyenne de expr, en ignorant les
valeurs NULL
Min( [ DISTINCT | ALL] expr) Valeur minimale de expr, en ignorant les
valeurs NULL
Max( [ DISTINCT | ALL] expr) Valeur maximale de expr, en ignorant les
valeurs NULL
Sum( [ DISTINCT | ALL] expr) Somme des valeurs de expr, en ignorant
les valeurs NULL
Langage d’interrogation des données
Exemples
17
Langage d’interrogation des données
Exemples
SQL> SELECT Count( telephone) FROM personnes
18
Langage d’interrogation des données
EMP Deptno sal
10 5000
10 1500
10 1300
20 2975 Question:
20 3000 salaire moyen pour
20 1100 Chaque département de
30 2850 la table EMP
30 1250
30 1600
30 1500
30 950
30 1250
Table EMP 19
Langage d’interrogation des données
La clause GROUP BY
Remarque
Les attributs du select ne peuvent être que
– L’attribut qui crée le groupe
– Une fonction de groupe.
20
Langage d’interrogation des données
Exemples
21
Langage d’interrogation des données
Deptno job
10 programmeur
10 Chef projet Dir
10 technique
20 Analyste
20 programmeur
20 Chef projet
30 programmeur
30 Chef projet
30 Commercial
23
Langage d’interrogation des données
24
Langage d’interrogation des données
SELECT deptno, MAX( sal )
FROM emp GROUP BY deptno
HAVING MAX( sal ) > 2900; Deptno job sal
10 Dir technique 5000
10 Chef projet 1500
Deptno M 10 programmeur 1300
10 5 20 Chef projet 2975
20 20 Analyste 3000
30 2 20 programmeur 1100
30 Chef projet 2850
30 commercial 1250
30 commercial 1600
Deptno MAX(sal)
30 commercial 1500
10 5000
30 programmeur 950
20 3000
30 commercial 1250 25
Synthèse
17
Langage d’interrogation des données
L’imbrication de requêtes
27
Langage d’interrogation des données
28
Langage d’interrogation des données
SELECT expr
FROM table1, table 2
WHERE table1.col1= table2.col2;
29
Langage d’interrogation des données
Equijointure ( jointure naturelle)
SELECT PAT.NomPat
FROM PAT, RDV, DOC
WHERE PAT.NumPat = RDV.NumPat
and RDV.NumDoc = DOC.NumDoc
and DOC.NomDoc =‘Ouazzani’;
30
Langage d’interrogation des données
Equijointure (Exemple)
Pour déterminer le service d'un employé, vous devez comparer la valeur de la colonne
DEPARTMENT_ID de la table EMPLOYEES à celles de la colonne DEPARTMENT_ID de la
table DEPARTMENTS. La relation entre les tables EMPLOYEES et DEPARTMENTS est
appelée équijointure puisque les valeurs de la colonne DEPARTMENT_ID des deux tables sont
égales.
31
Langage d’interrogation des données
Equijointure ( jointure naturelle)
32
Langage d’interrogation des données
Equijointure ( Joindre plus de deux tables)
Autojointure
SELECT expr
FROM table1 Alias1, table1 Alias 2
WHERE Alias1.col1= Alias2.col1
tab1 col1
35
Langage d’interrogation des données
Autojointure
Deptno NOM sal
Liste des employés 10 Ouazzani 5000
ayant un salaire égale à 10 Rachidi 1500
celui de « Filali » 10 Filali 1250
20 Youssfi 2975
20 Anwar 3000
20 Radi 1100
30 Rabii 2850
SELECT E2.Nom 30 Naciri 1250
FROM EMP E1, EMP E2
WHERE E1.sal=E2.sal 30 Ghazali 1600
and 30 Farabi 1500
E1.Nom ='Filali'; 30 Bahi 950
30 Bahiri 1250
36
Langage d’interrogation des données
Autojointure
Deptno NOM sal
39
Langage d’interrogation des données
40
Langage d’interrogation des données
Syntaxe générale
SELECT colonnes_de_projection
sens d’exécution
FROM table
WHERE expr operator (
SELECT colonnes_de_projection
FROM table
WHERE …..
);
Remarque:
Pas de ORDER BY ou UNION dans la sous requête
41
Langage d’interrogation des données
Type de sous requête opérateur
43
Langage d’interrogation des données
Exemples
Le nom des employés qui ne sont pas les moins payés ?
44
Langage d’interrogation des données
par la sous-requête
ALL : la condition est vraie si la comparaison est vérifiée pour tous les
45
Langage d’interrogation des données
Exemples :
46
Langage d’interrogation des données
Opérateurs ensemblistes
INTERSECT
UNION
UNION ALL
MINUS
Requête SELECT
<Opérateur ensembliste>
Requête SELECT
47
Langage d’interrogation des données
Exemples
48
Langage de Manipulation des Données
(LMD)
Les différents types de commandes SQL
Exemples:
Table: DOC(NumDoc, NomDoc, VilleDoc)
UPDATE DOC
SET NomDoc=‘Rachidi’, NomVille=‘Casablanca’
Where NumDoc=444;
UPDATE DOC
SET VilleDoc=Null;
Exemples:
Table: DOC(NumDoc, NomDoc, VilleDoc)
CHECK (condition) |
Remarque:
Le mode est à appliquer :
Sur la colonne ou la table: si la contrainte ne fait intervenir
qu’un SEUL ATTRIBUT.
sur la table: si la contrainte fait intervenir PLUSIEURS ATTRIBUTS.
Langage de Définition des Données
Exemples
Exemple:
Intérêts:
Indépendance application/données
Personnalisation des données selon les besoins des utilisateurs
Confidentialité
Rapidité des requêtes
Utilisation:
Pour les sélections, comme une table ordinaire
Pour les maj. (insert, update, delete), y a des restrictions
LES VUES:
Syntaxe de CREATE VIEW
Exemples:
Vous pouvez exécuter des opérations LMD sur des vues simples.
Vous ne pouvez pas supprimer une ligne si la vue contient :
- des fonctions de groupe,
- une clause GROUP BY,
- le mot-clé DISTINCT,
- la pseudo-colonne ROWNUM.
- des colonnes définies par des expressions.
- des colonnes NOT NULL se trouvant dans les tables de base
qui ne sont pas sélectionnées par la vue.
LES VUES:
Règles d’utilisations des VUES
Le SELECT principal de
DELETE
UPDATE
SELECT
INSERT
la vue contient