La300 Stagiaire v2017
La300 Stagiaire v2017
La300 Stagiaire v2017
1. Introduction
• Rappels sur le modèle relationnel
• Les caractéristiques du langage SQL
Sommaire Module 1
Les données sont stockées dans des tables qu'on peut mettre
en relation.
Une relation se fait entre des colonnes ayant des données qui
correspondent.
Les tables
nom_produit
nom_client
prix_produit
adresse_client nom_commercial
date_embauche
BASE DE
DONNEES
Un sujet=une table
Rappel sur le modèle relationnel
Une clé étrangère, par contre, est une clé faisant référence à
une clé appartenant à une autre table.
Clients Commerciaux
1
Code_client No_comm
Nom Nom
Adresse Prenom
Ville Age
∞
… …
Code_client
Rappel sur le modèle relationnel
Clients Commerciaux
1 No_comm
Code_client
Nom Nom
Adresse Prenom
Ville Age
∞
No_comm
… …
Rappel sur le modèle relationnel
Voitures Commerciaux
1 No_comm
N_voiture
Marque Nom
Modèle Prenom
Immat 1 Age
…
No_comm …
Rappel sur le modèle relationnel
Stages Stagiaires
Code_stage 1 No_stagiaire
Libellé Nom
Durée Prenom
techno Code_client
∞
No_stagiaire
… …
Rappel sur le modèle relationnel
Stages Stagiaires
1 No_stagiaire
Code_stage
Libellé Nom
Durée Prenom
techno ∞ Code_client
… …ode_stage
C
Rappel sur le modèle relationnel
Stages Stagiaires
1 1
Code_stage Sessions No_stagiaire
Libellé Nom
Durée ∞ Prenom
Code_stage ∞
techno No_stagiaire Code_client
… …
Date_debut
Formateur
Salle
…
Rappel sur le modèle relationnel
Cas Pratique :
Caractéristiques :
Caractéristiques :
Caractéristiques :
Caractéristiques :
Sommaire Module 1
• normalisé
Langage SQL : les caractéristiques
• Transitional
• Intermediate
• Full
Sommaire Module 2
• La Sélection de données
• Les tris
• Les jointures
La commande SELECT
[WHERE prédicats]
[HAVING condition]
SELECT
Spécification des colonnes du résultat
FROM
Spécification des tables sur lesquelles porte le select
WHERE
Filtre portant sur les données (conditions à remplir pour faire
afficher le résultat)
GROUP BY
Définition du sous ensemble
HAVING
conditions de regroupement des lignes
ORDER BY
Tri des données du résultat
La commande SELECT
Requête:
Sommaire Module 2
• La Sélection de données
• Les tris
• Les jointures
La gestion des valeurs null
-> 10
-> 1
-> 0,00
-> N/A
Atelier 2.1
Sommaire Module 2
• La Sélection de données
• Les tris
• Les jointures
La clause WHERE
Syntaxe :
SELECT ....
FROM ....
WHERE condition
• Opérateur IN
• WHERE TIT_CODE IN ('Mme.', 'Melle.')
• Opérateur BETWEEN
• WHERE CODE_POSTAL BETWEEN '91000' AND '91999'
• Opérateur LIKE
• WHERE CLI_NOM LIKE 'B%'
• Comparaison logique
• IS [NOT] {TRUE | FALSE} / IS [NOT] NULL
• Connecteurs logiques
• OR | AND
Atelier 2.3
Sommaire Module 2
• La Sélection de données
• Les tris
• Les jointures
La clause ORDER BY
SELECT ....
FROM ....
WHERE ....
ORDER BY ....;
La clause ORDER BY
ou
SELECT CLI_NOM, CLI_PRENOM
FROM T_CLIENT
ORDER BY 1, 2;
Atelier 2.4
3. Trier les clients par pays et par ville (afficher le nom des
sociétés, le pays et la ville).
Sommaire Module 2
• La Sélection de données
• Les tris
• Les jointures
Jointures
Soit la commande :
SELECT col1, cola FROM table1, table2
WHERE table1.col2=table2.colb;
Comment fonctionne-t-elle ?
Une nouvelle table est construite avec pour colonnes l'ensemble des
colonnes des deux tables et pour lignes le produit cartésien des deux
tables :
WHERE jointure1
AND jointure2
AND …
ORDER BY ...;
Jointures
• Avec condition :
SELECT ...
FROM <table gauche>
Jointure
naturelle NATURAL JOIN <table droite>
;
SELECT ...
FROM <table gauche>
Jointure JOIN <table droite>
naturelle
USING <noms de colonnes>
;
SELECT ...
FROM <table gauche>
Jointure [INNER] JOIN <table droite>
interne ON <condition de jointure>
;
SELECT ...
FROM <table gauche>
Jointure
LEFT | RIGHT | FULL [OUTER] JOIN <table droite>
externe
ON condition de jointure
SELECT colonnes
ON condition de jointure;
SELECT colonnes
ON condition de jointure
SELECT colonnes
ON condition de jointure
SELECT ...
Jointure FROM <table gauche>
croisée CROSS JOIN <table droite>
Transtypage :
Il permet de changer le type de données d'une colonne afin d’effectuer
une comparaison de données de type hétérogène.
CLI_NOM CLI_PRENOM
------- ----------
ALAIN dupont
MARC martin
ALAIN bouvier
……
Fonctions de chaînes de caractères
Access DATE()
MySQL
CURRENT_DATE
Postgre
Fonctions d’agrégation
(ou de regroupement)
Fonctions statistiques :
LENGTH(expression)
longueur de la chaîne
(Mysql ,Oracle, Postgre)
LEN (expression)
longueur de la chaîne
( Sql Server)
CHR(valeur)
caractère dont le code ASCII est donné
(Oracle et Postgre)
CHAR(valeur)
caractère dont le code ASCII est donné
(Mysql et Sql Server)
Expression + INTERVAL ‘1’ day (Mysql ,Oracle, Postgre) ajoute des jours, des mois, des années à une date
DATEADD (day,1,expression) (Sql Server) ajoute des jours, des mois, des années à une date
LAST_DAY(expression) (Oracle, Mysql) renvoie le n° du dernier jour d’un mois d’une date
TO_CHAR(expression,’format’)
date sous forme littérale
(Oracle et Postgre)
TO_DATE(expression,’format’)
Convertit une chaîne de caractère en date
(Oracle et Postgre)
Sans group by :
SELECT COUNT(CHB_ID) AS NOMBRE, CHB_ETAGE FROM T_CHAMBRE;
NOMBRE CHB_ETAGE
----------- ---------
1 RDC
1 RDC
1 RDC
1 RDC
1 1er
1 1er
1 1er
……….
La clause GROUP BY
Avec Group By :
NOMBRE CHB_ETAGE
----------- ---------
8 1er
8 2e
4 RDC
La clause HAVING
NOMBRE CHB_ETAGE
----------- ---------
23 1er
22 2e
Atelier 3.2
•UNION
L'opérateur UNION :
L'opérateur INTERSECT :
Sommaire Module 5
• Sous-interrogations synchronisées
Dans la clause Where
Exemple :
Sommaire Module 5
• Sous-interrogations synchronisées
Dans la clause From
Syntaxe :
Sommaire Module 5
• Sous-interrogations synchronisées
Sous-requête synchronisée
synchronisation
Atelier 5
Update latable…
DECIMAL,NUMERIC,FLOAT,REAL,DOUBLE,SMALLINT,INTEGER
BIT,NBIT,BLOB,IMAGE
TIMESTAMP,DATE,TIME,INTERVAL
Création de table
• Contraintes de colonne :
[NOT] NULL | UNIQUE | PRIMARY KEY |
CHECK ( prédicat_de_colonne ) |
FOREIGN KEY [colonne] REFERENCES table (colonne)
• Contraintes de table :
CONSTRAINT nom_contrainte UNIQUE |
PRIMARY KEY ( liste_colonne ) |
CHECK ( prédicat_de_table ) |
FOREIGN KEY liste colonne REFERENCES nom_table
(liste_colonne)
Contraintes
DEFAULT : valeur par défaut qui est placée dans la colonne lors des
insertions et de certaines opération particulières, lorsque l'on a pas
donné de valeur explicite à la colonne.
Exemple:
Exemple:
La colonne supprimée ne doit pas être référencée par une clé étrangère
ou être utilisée par un index.
Modifier une table
Une vue est une vision des données d'une ou plusieurs tables
de la base.
La définition d'une vue est donnée par un SELECT qui indique
les données de la base qui seront vues.
Exemple:
CREATE VIEW EMP10 AS SELECT * FROM EMP
WHERE DEPT = 10;
Les index
CREATE INDEX :
CREATE [UNIQUE] INDEX nom_index ON table (col1, col2,...);
On peut spécifier par l'option UNIQUE que chaque valeur d'index
doit être unique dans la table.
DROP INDEX :
DROP INDEX nom_index [ON table];
Le nom de la table ne doit être précisé que si vous voulez
supprimer un index d'une table d'un autre utilisateur alors que
vous possédez un index du même nom.
Atelier 7