Cours SQL
Cours SQL
Cours SQL
Introduction générale.
ii. Synonymes
iii. Index
iv. Séquences
6
Objectifs de la partie :
Définition de l’SQL.
SQL (Structured Query Language ), en français langage de requête
structurée, est composé d’un ensemble de sous langages:
1ère Partie :
Présentation du langage LDD
Objectifs de la partie :
LDD.
Objectifs de la partie :
Syntaxe :
CREATE TABLE <nom_de_la_table>
( <nom_colonne1> <type_colonne1>,
<nom_colonne2> <type_colonne2>, …
<nom_colonne’> <type_colonne’>
);
Remarque : Pour créer une table il faut avoir :
• Le privilège CREATE TABLE
• Un espace de stockage
13
la table Etud aura la même structure de la table Etudiants avec tous les
enregistrements de la table.
la table Etud aura la même structure de la table Etudiants avec tous les
enregistrements de la table.
Syntaxe :
ALTER TABLE <nom_de_la_table> ADD Constraint <nom_contrainte>
PRIMARY KEY (nom_colonne(s))
Syntaxe :
ALTER TABLE <nom_de_la_table> DROP CONSTRAINT
<nom_contrainte> ;
Syntaxe :
ALTER TABLE <nom_de_la_table> ADD constraint
<nom_contrainte> FOREIGN KEY (<nom_cols>) references
<table_référencée> (nom_cols) ;
Une contrainte d’intégrité de type clé unique exige que chaque valeur
dans une colonne ou dans un ensemble de colonnes constituant
une clé soit unique.
La contrainte Check définit une condition que chaque ligne doit vérifier
Syntaxe générale :
+ ADD
<Def _Colonne>
+ MODIFY
+ DROP <nom colonne>
27
Syntaxe :
ALTER TABLE <nom_de_la_table> DROP <colonnes>
Syntaxe :
Remarque:
On a aussi la commande « TRUNCATE » qui permet de vider la table
Syntaxe :
Exemple:
RENAME Etudiants TO Etudiants1;
33
4ème Partie :
Autres Objets
Objectifs de la partie :
Remarque:
Les vues existent en tant qu'objets dans la base de données. Les changements apportés à la
structure de la table sous-jacente ne sont pas répercutés dans la vue. Pour inclure des colonnes
supplémentaires dans une vue, vous devez redéfinir la vue.
35
Types de vue.
Vue Simple :
utilise une seule table
ne contient ni fonction ni groupe de données
permet d’exécuter des opérations du LMD
Vue Complexe :
utilise plusieurs tables
contient des fonctions ou des groupes de données
ne permet pas toujours des opérations du LMD
37
L'option WITH READ ONLY indique qu'il est impossible de réaliser des mises à
jour sur la vue.
L'option WITH CHECK OPTION empêche que l'utilisateur d’ajouter ou
modifier dans une vue des lignes non conformes à la définition de la vue.
38
Exemples de vues.
Créez des vues qui permettent d’afficher :
1. La liste des employés du département 50,
2. Les employés qui ont été embauché avant l’an 2000,
3. Le salaire des employés du département 10
Exemple:
CREATE INDEX idx_employees_lastname ON employees
(last_name)
Objectifs du cours
);
<colonne2>,
<colonne3> )
VALUES
( <valeur_colonne1>,
<valeur_colonne2>,
<valeur_colonne3> );
53
Questions:
COMMANDES
NumCommande Date CodeClient
110 03/04/2011 C01
111 09/07/2011 C02
55
Exemple:
Le client Bensalem Ali vient de changer d’adresse et habite avec le client
Toumi salma à « 15 rue Basra Bizerte 7000 », veuillez mettre à jour les
deux adresses.
56
Exemple:
1. Supprimer les commandes du client « Toumi salma »
2. Vider la table client
58
Objectifs du cours.
1. Définir le LID
2. Savoir formuler des Requêtes simples « SELECT »
3. Distinguer les fonctions mono lignes/multi lignes
4. Définir les Jointures, les Opérateurs ensemblistes et les
sous-interrogations
59
1ère Partie :
Les Requêtes simples « la clause SELECT »
Objectifs de la partie :
LID. (1/2)
LID. (2/2)
Résultat:
63
Résultat:
64
Opérateur Description
+ Addition
- Soustraction
* Multiplication
/ Division
65
Résultat:
66
NULL est une valeur qui n’est pas disponible, non affectée ou inconnue.
NULL est différent de zéro, espace ou chaîne vide
Exemple 1:
Résultat:
68
Exemple 2 :
Résultat:
69
Résultat:
Résultat:
71
Opérateur de concaténation.
Concatène des colonnes et/ou des chaines de caractères
Est représenté par le symbole ||
Exemple:
SELECT ' le nom est ' || first_name || ', le prénom est '|| last_name as "nom et
prenom de l’employe"
FROM employees;
Résultat:
72
Exemple:
SELECT DISTINCT(commission_pct)
FROM employees;
Résultat:
73
Résultat:
74
OPERATEUR DESCRIPTION
= Egal à
< Inférieur à
<= Inférieur à ou égal
> Supérieur à
>= Supérieur à ou égale à
<> Ou != Différent
BETWEEN val1 AND val2 val1 <= val <= val2
OPERATEUR DESCRIPTION
Résultat:
78
Objectifs de la partie:
Remarque: Une fonction mono ligne est une fonction qui s’applique
enregistrement par enregistrement.
82
Résultat:
88
Résultat:
89
Résultat:
90
Résultat:
Résultat:
91
Résultat:
Résultat:
94
SELECT
Trunc (months_between (to_date ('2012/01/01', 'yyyy/mm/dd'), to_date
('2012/03/15', 'yyyy/mm/dd') ),2) "nbr de mois",
next_day(to_date ('2012/03/01', 'yyyy/mm/dd'), 'Monday') "lundi suivant",
last_day(to_date ('2012/03/01', 'yyyy/mm/dd')) "dernier jr du mois mars12" ,
add_months(to_date ('2012/03/01', 'yyyy/mm/dd'),3) "ajouter 3 mois"
FROM Dual;
Résultat:
95
Fonctions de conversions.
OPTION DESCRIPTION
yyyy l’année (quatre chiffres)
month nom complet du mois en minuscule
mon abréviation du nom du mois en minuscule (trois caractères)
day nom complet du jour en minuscule
DD jour du mois (01-31)
D jour de la semaine (de 1 à 7, dimanche étant le 1)
dy abréviation du nom du jour en minuscule (3 caractères)
ddd jour de l'année (001-366)
q trimestre
w numéro de semaine du mois (de 1 à 5) (la première semaine commence
le premier jour du mois.)
ww numéro de semaine dans l'année (de 1 à 53) (la première semaine
commence le premier jour de l'année.
97
NVL2 (expr,val1,val2) : si expr n’est pas nulle alors elle est remplacée
par val1 sinon par val2.
Case : évalue une liste de conditions et retourne un résultat parmi les cas
possibles
98
SELECT
Row_number() over (partition by <col x> order by <col_y>
DESC/ASC), Col1,…colN
FROM <nom_table> ;
A retenir:
- La clause <order by> est obligatoire.
- La clause <partition by> est facultative, est utilisée pour faire un ordre par
ensemble de lignes selon <colx>.
- Rank et dense_rank ont la même syntaxe.
101
Objectif du cours :
Une fonction mono ligne est une fonction qui s’applique enregistrement par
enregistrement.
Une fonction multi ligne ou fonction de groupe s’applique sur un groupe
d’enregistrements et donne un résultat par groupe.
Résultat:
107
SELECT department_id,
COUNT(employee_id) "nbr employes"
12
FROM employees Départements
GROUP BY department_id;
tables à la fois.
« WHERE » ou « ON ».
Types de Jointures.
Jointure naturelle
Jointure externe
Non équijointure
Produit cartésien
112
Equijointure. Définition
C’est la plus répandue, elle combine les lignes qui ont des
valeurs équivalentes pour les colonnes de la jointure.
FROM table1
ON (table1.column_name = table2.column_name) ;
114
Équivalent à :
Equijointure. Exemple
Exemple1:
Exemple2:
Exemple 1:
Exemple 2:
Exemple:
Exemple:
Exemple:
Exemple:
Select * from employees CROSS JOIN departments
Jointure. Récapitulatif
5 ème Partie : Les Opérateurs
ensemblistes
i. UNION
ii. UNION ALL
iii. INTERSECT
iv. MINUS
130
OPERATEUR DESCRIPTION
Ramène toutes les lignes communes aux deux
INTERSECT
requêtes
Toutes les lignes distinctes ramenées par les deux
UNION
requêtes
Toutes les lignes ramenées par les deux requêtes y
UNION ALL
compris les doublons
Toutes les lignes ramenées par la première requête
MINUS
sauf les lignes ramenées par la seconde requête
131
Union(ALL). Exemple
Intersect/Minus. Exemple
Exercice d’application.