II. La consultation en SQL

publicité
Le langage SQL
Cours 2
I.
Introduction générale
C’est un langage standard supporté par tous les Système de Gestion de Base de
Données Relationnels (Oracle, DBZ, SQL Serveur, Accers, …)
Le langage permet :
 La création de la Base de Donnée (Table, index, Contraintes, …)
 Le remplissage de la base (Ajout, modification, Suppression des données)
 La consultation
 La gestion de la sécurité (création de compte utilisateurs, gestion des accès aux
données, …)
II.
La consultation en SQL
On suppose qu’une base de données existes déjà (cf : Tables sur les employés,
département et bâtiment).
N.B. : Une requête SQL peut être écrite sur plusieurs lignes ou sur une seule.
Le compilateur recherche seulement un « ; » qui signifie la fin de l’instruction.
1) Sélection Inconditionnelle
Différentes syntaxes possibles
a) Syntaxe n°1 :
SELECT *
FROM nom_table ;
 Affiche toute la table
b) Syntaxe n°2 :
SELECT Colonne1, Colonne2, …
FROM nom_table ;
Seules les colonnes spécifiées sont affichées.
NeoXsysm & DiAboLiK
DUT Info 1er année
RESEAU
Pages 1/6
c) Syntaxe n°3 :
SELECT liste_expressions
FROM nom_table ;
Une expression peut être :
 nom_colonne opérateur constante_ou_nom_colonne
Exemple :
SELECT mat, salaire * 1.05
FROM emp ;
 On affiche les salaires augmentés de 5% des employés.
d) Il est possible de renommer certaines colonnes du résultat.
SELECT mat, salaire * 1.05 as Nouv_salaire
FROM emp ;
matricule
Nouv_salaire
2) Le Tri
Il est possible de trier le résultat d’une requête sur une ou plusieurs colonnes.
SELECT …
FROM …
ORDER by Col1 [asc | desc], Col2 [asc | desc], …
Exemple :
SELECT mat, salaire
FROM emp
ORDER by salaire desc ;
a) Sélection de tuples uniques
En SQL, les doublons doivent être supprimés explicitement sinon ils seront présents
dans les résultats.
SELECT distinct Col1, Col2, …
FROM …
NeoXsysm & DiAboLiK
DUT Info 1er année
RESEAU
Pages 2/6
3) Sélection Conditionnelles
Les données peuvent être choisies à l’aide d’opérateurs de comparaisons, d’opérateurs
logiques, des caractères Jocker, des prédicats prédéfinis.
Syntaxe générale :
SELECT …
FROM …
WHERE Conditions
Condition élémentaire
Condition
Condition Complexe
Condition élémentaire : nom_col - Opérateur_comparaison - Constante_ou_col
 Opérateurs :
 <, >, =, !=, >=, <=
 Is NULL (Vérifie si la colonne n’est pas du tout rensignée)
 IN (liste de valeur) pour vérifier si la colonne fait parie de la
liste des valeurs.
 BETWEEN valeur1 and valeur2
Les conditions élémentaires peuvent être combinées avec OR, AND, NOT.
Exemples :
SELECT *
FROM bâtiment
WHERE région != ‘IDF’ ;
SELECT mat, dept, div
FROM emp
WHERE salaire BETWEEN 25000 and 30000 ;
SELECT mat, nom
FROM emp
WHERE mgr is NULL ;
SELECT nom, mat
FROM emp
WHERE dept=’Ventes’ and div in (‘NO’,’SE’)
On peut utiliser des caractères Jocker :
% : Chaîne de caractères quelconque
- : Un et un seul caractère.
Exemple :
SELECT
FROM
WHERE
NeoXsysm & DiAboLiK
DUT Info 1er année
nom, mat, salaire
emp
nom like(S%) or
nom like(s%)
RESEAU
Pages 3/6
4) Les jointures
a) Jointure sur une colonne
Affichez le code postal des départements Vente.
SELECT
FROM
WHERE
And
postal, bati
dept, batiment
dept.bati = batiment.bati
nomdep=’Ventes’
b) Jointure sur plusieurs colonnes
Le nom des employés qui travaillent au dessus du 1er étage.
SELECT
FROM
WHERE
And
And
nom
emp, dept
dept.nomdep = emp.dept
dept.div = emp.div
etage > 1
c) Auto-Jointure
C’est une jointure entre une table et elle-même.
Exemple :
Affichez les employés dont la différence de salaire avec leur Manager est <
20000.
SELECT
FROM
WHERE
And
emp1.mat, emp1.nom
emp emp1, emp emp2
emp1.mgr = emp2.nom
(emp2.salaire – emp1.salaire) < 20 000
NeoXsysm & DiAboLiK
DUT Info 1er année
RESEAU
Pages 4/6
5) Les requêtes complexes
a. Utilisation des fonctions
Les fonctions opèrent sur des colonnes (jamais sur des lignes) de données.
Nom_fonction([distinct] nom_colonne) [as nouvelle_colonne]
SQL fournit cinq fonctions :
 COUNT : Nombre d’élements de la coonne
 SUM : somme des éléments
 AVG : Moyenne
 MAX ; le plus grand
 MIN : le plus petit
Remarque : ces fonctions ignorent les valeurs nulls.
Elles ne s’utilisent jamais dans la close WHERE.
Exemple :
 Salaire moyen des employés.
SELECT
FROM
AVG(salaire)
emp
as
salaire_moyen
Salaire_moyen
19 000
 Plus petit et plus grand salaire.
SELECT
FROM
Min(salaire), Max(salaire)
emp
 Salaire moyen des employés qui gagnent plus de 20 000.
SELECT
FROM
WHERE
AVG(salaire)
emp
salaire > 20000
NeoXsysm & DiAboLiK
DUT Info 1er année
RESEAU
Pages 5/6
6) Les sous requêtes
Une sous-requête s’est une requête select dans une autre requête select.
SELECT
FROM
WHERE
…
…
expression
IN
(Select … From … where …)
Intérêt : avoir des listes de valeurs dynamiques.
Affichez le nom et le salaire des managers.
SELECT
FROM
WHERE
nom, salaire
emp
nom
NeoXsysm & DiAboLiK
DUT Info 1er année
IN
(SELECT
FROM
RESEAU
distinct mgr
emp)
Pages 6/6
Téléchargement