SELECT {* | Expression [Alias] [,...] } FROM Table [WHERE Condition] [ORDER BY { Expression | Alias } [ ASC | DESC ] [NULLS FIRST | NULLS LAST ] [,...]

Slides:



Advertisements
Présentations similaires
Bratec Martin ..
Advertisements

NOTIFICATION ÉLECTRONIQUE
Fragilité : une notion fragile ?
SEMINAIRE DU 10 AVRIL 2010 programmation du futur Hôtel de Ville
Phono-sémantique différentielle des monosyllabes italiens
MAGGIO 1967 BOLOGNA - CERVIA ANOMALIES DU SOMMEIL CHEZ L'HOMME
droit + pub = ? vincent gautrais professeur agrégé – avocat
Transcription de la présentation:

SELECT {* | Expression [Alias] [,...] } FROM Table [WHERE Condition] [ORDER BY { Expression | Alias } [ ASC | DESC ] [NULLS FIRST | NULLS LAST ] [,...] ] ; { } choisir un élément dans la liste [ ] optionnel [,...] lélément précédent peut être répété ASC souligné, indique une valeur par défaut si en MAJUSCULE écrire ce mot tel quel si en minuscule substituer une valeur appropriée si en Italique, cest un identifiant. 2

Sélection de toutes les colonnes: * : indique que l'on désire toutes les colonnes. Table departement SELECT * FROM departement; 3

Une expression est : une colonne, une constante ou une fonction ou un ensemble dune ou plusieurs colonnes, constantes et/ou fonctions combinées au moyen dopérateurs. Exemple : SELECT id_employe + 5 FROM employe; Opérateurs : Arithmétiques : + - * / () Caractères: || (concaténation) Dates : + - 4

Si lon ne désire quune colonne en particulier : 5 SELECT nom FROM departement;

Pour sélectionner plusieurs colonnes : 6 SELECT nom, ville FROM departement;

Faire afficher la liste de tous les employés ainsi que leur salaire actuel et une prévision de leur salaire augmenté de 15%. SELECT nom, salaire, salaire*1.15 FROM employe 7

Si on utilise un « alias de colonne » il sera utilisé comme entête dans le rapport SELECT nom, salaire, salaire*1.15 calcul FROM employe; 8

On peut utiliser un alias complexe (espace, accent, case ou mot réservé) si on utilise les " ". Exemple : SELECT Nom Nom du département FROM departement; 9

Pour sélectionner des rangées en particuliers : SELECT nom, ville FROM departement WHERE ville = 'Montréal'; 10

IL est possible quun SELECT ne retourne aucune rangée. Afin de sélectionner une seule rangée, une méthode efficace est de faire un WHERE sur la clé primaire. 11

Condition simple: se compose dune expression, dun opérateur de comparaison (ou autre) et dune expression. Opérateurs de comparaison : =, <>,, = (<>, != et ^= testent linégalité) Autres : IN (liste) BETWEEN min AND max LIKE masque IS NULL Exemple : SELECT nom FROM employe WHERE id >= 10; 12

Permet de vérifier si une valeur fait partie d'une liste de valeurs, dun ensemble SELECT nom FROM departement WHERE ville IN ('Montréal','Québec','Longueuil'); 13

Attention de ne pas confondre le = et le IN. Le = ne fonctionne que pour une comparaison avec une valeur. Exemple : …WHERE id= 10 AND salaire = commission; 14

SELECT nom FROM departement WHERE id BETWEEN 30 AND 70; est équivalent à … WHERE id >= 30 AND id<= 70; Donc le BETWEEN est inclusif. 15

Syntaxe: LIKE Masque Les masques: % : signifie n'importe quelle chaîne de caractères _ : signifie n'importe quel caractère autre : signifie le caractère indiqué. Pour avoir la liste des employés dont le nom commence par la lettre R (la case est importante): SELECT nom FROM employe WHERE nom LIKE 'R%'; 16

Pour les employés dont le nom se termine par A: SELECT id FROM employe WHERE nom LIKE '%A'; Pour la liste des employés dont le nom commence par la lettre J suivie d'exactement 3 caractères: SELECT nom FROM employe WHERE nom LIKE 'J_ _ _'; I V

NULL signifie absence de valeur (ou valeur inconnue) Ne pas confondre 0 (zéro) et NULL => NULL => NULL 18

Afficher la liste de tous les employés qui n'ont pas de commission SELECT nom FROM employe WHERE commission IS NULL; Afficher la liste de tous les employés qui touchent une commission SELECT nom FROM employe WHERE commission IS NOT NULL; 19

20

Il est parfois utile quune requête puisse retourner une valeur prédéterminée lorsque le champ dune colonne est nul. NVL(Nom_Colonne, Valeur) Nom_Colonne: le nom de la colonne de la table. Valeur : valeur retournée si le champ est nul. Exemple : SELECT NVL(commission,0) FROM employe; Retournera soit la commission ou 0 si la commission est nulle. 21

SELECT nom FROM employe WHERE NVL(commission,0) < 1000; Retournera le nom des employés dont la commission est inférieure à

Opérateurs sur les dates : on peut additionner ou soustraire des jours à une date : + et – '6-mar-87' + 2 = '8-mar-87' '6/03/87' - 4 = '2/03/87' On peut soustraire les dates ' ' = 9 Le résultat est en jours. On peut entrer une date en spécifiant le format: SELECT nom FROM employe WHERE date_embauche = (TO_DATE(03/11/1989, DD/MM/YYYY)); 23

On peut spécifier le format daffichage dune date : Exemple : SELECT TO_CHAR(date_embauche, DD/MM/YYYY) FROM employe WHERE employe= 7980; 24

Voici deux conditions simples utilisées avec AND, OR SELECT nom FROM employe WHERE id_department = 20 AND poste != Commis) OU SELECT nom FROM employe WHERE (id_departement = 20 AND Poste != Commis) OR (id_departement = 30 AND Poste != Vendeur); 25

26 NULL et les opérateurs logiques vrai

Faire afficher la liste des employés qui touchent une commission plus élevée que 5% de leur salaire. SELECT nom FROM employe WHERE commission> 0.05 * salaire Opérateurs : + - * / () 27

Dans la BD, les rangées dune table sont dans un ordre quelconque. ORDER BY permet de les classer. SELECT * FROM departement WHERE id > 10 ORDER BY nom 28

Attention, lallias peut être utilisé dans le ORDER BY mais pas ailleurs. Exemple: SELECT nom "NomDept" FROM departement ORDER BY "NomDept"; 29

Faire afficher la liste des employés, leur salaire, leur commission et le pourcentage du salaire qui vient de la commission pour les employés qui touchent une commission plus élevée que 5% de leur salaire. Faire afficher en ordre décroissant du pourcentage du salaire. SELECT nom, salaire, commission, commission/salaire FROM employe WHERE commission > 0.05 * salaire ORDER BY commission/salaire DESC; DESC = descendant, ASC = Ascendant 30

La liste de valeurs peut être le résultat d'un SELECT (SELECT imbriqué). SELECT id FROM employe WHERE id_departement IN (SELECT id FROM departement WHERE ville =Montréal); 31