[SQL Server]Saga transact-SQL Episode 3 : Retrouver les données avec un SELECT
La commande qui permet de trouver des données est le SELECT sa syntaxe générique est la suivante :
SELECT [ ALL | DISTINCT ] <liste de colonne>
FROM {<table >} [,...n]
[ WHERE <condition de recherche> ]
Le SELECT va retourner les lignes et les colonnes demandées c'est-à-dire les colonnes spécifiées dans le liste des colonnes et qui sont présentent dans la ou les tables spécifiées dans la clause FROM et les lignes de cette ou ces tables qui correspondent au filtre indiqué dans la clause WHERE.
Pour spécifier des colonnes :
On peut renommer les colonnes en utilisant ce que l’on appelle un alias :
Comme vous pouvez le voir le mot clé AS est optionnel.
Si on veut avoir toutes les colonnes de la tables il suffit de remplacer les noms de colonne par * mais à ce moment là bien sûr il n’est plus possible de renommer les colonnes. Il faut aussi savoir qu’en termes de performance le fait d’énoncer chaque colonne est plus performant que d’utiliser *.
Utilisez la clause WHERE pour filtrer les lignes.
Voici les différentes possibilités pour filtrer
Opérateurs de comparaisons =, >, <, >=, <=, and <>
Comparateur de chaine LIKE and NOT LIKE
Opérateurs logique: combinaison de condition AND, OR
Opérateur logique: négations NOT
Echelle de valeur BETWEEN et NOT BETWEEN
Liste de valeurs IN et NOT IN
Valeurs inconnues IS NULL et IS NOT NULL
Opérateur de comparaison
Comparateur de chaine
Filtre sur une chaine de caractère qui commence par « lau » (c’est la lettre % qui dit « peut importe la suite »).
Expression Returns
LIKE ’BR%’ commence par BR
LIKE ’Br%’ commence par Br
LIKE ’%een’ finit par een
LIKE ’%en%’ contient en
LIKE ’_en’ mots de 3 lettres finissant par en
LIKE ’[CK]%’ tout les mots qui commence par la lettre C ou K
LIKE ’[S-V]ing’ Tout les mots de 4 lettres qui finissent par ing et qui commence par une lettre entre S et V
LIKE ’M[^c]%’ tout les mots qui commence par M et qui n’ont pas la lettre c en deuxième
Opérateurs logique: combinaison de condition
On utilisera l’opérateur And pour retrouver les lignes qui correspondent à tous les critères et l’opérateur OR pour celle qui correspondent au moins à un des critères.
Opérateur logique: négations
On utilise Not pour renvoyer les lignes qui ne correspondent pas à la condition qui suit.
Echelle de valeur
On a toutes les lignes dont l’id est compris entre 1 et 3.
On a toutes les lignes dont l’id n’est pas compris entre 1 et 2.
Liste de valeurs
On a toutes les lignes dont la colonne spécifiée possède une des valeurs entre parenthèse.
Valeurs inconnues
Toutes les lignes où le prénom est NULL.
Toutes les lignes où le prénom n’est pas NULL.
Formater les résultats.
Ordonner les résultats
La clause ORDER BY permet d’ordonner les résultats de façon croissante (ASC) ou décroissante (DESC).
Attention :
- SQL Server ne garantit pas un ordre dans le jeu de résultat, sauf si l'ordre est spécifié avec une clause ORDER BY.
- SQL Server trie dans l'ordre croissant par défaut.
- Les colonnes qui sont incluse dans la clause ORDER BY ne doivent pas apparaître obligatoirement dans la liste sélectionnée.
- Vous pouvez trier par nom de colonne, colonne de valeurs calculées, ou des expressions.
- Vous ne pouvez pas utiliser de colonnes texte, image ou nText dans la clause ORDER BY.
- Utiliser des index appropriés peut optimiser la clause ORDER BY.
Le même résultat aurait pus être obtenu avec la requête suivante :
SELECT ProductID,[Name],ProductSubcategoryID, Color, ListPrice, [Size]
FROM Production.Product
ORDER BY 3 ,1, 4 DESC
Eliminer les lignes dupliquées
Si vous voulez avoir une liste de valeurs unique, utilisez la clause DISTINCT pour éliminer les lignes dupliquées dans votre Ensemble de résultats.
Attention :
- La combinaison de valeur dans un ensemble de résultats peut déterminer des lignes distinctes donc les lignes qui contiennent une combinaison unique seront retournées dans l’ensemble de résultat.
Exemple :
SELECT distinct ProductSubcategoryID, Color, ListPrice, [Size]
FROM Production.Product
Sans la clause DISTINCT on a 504 lignes, Avec on a 286 lignes.
Changer les noms de colonnes ou utiliser des littéraux
On peut avoir un ensemble de résultat plus lisible lorsqu’on utilise la possibilité de renommer des colonnes ou que l’on insère une colonne non nommée dans laquelle on met un littéral.
Exemple :
Ici ‘Mon Nom : ‘ est un littéral qui permet de présenter chaque ligne. On a renommé les colonnes « Prenom » et « Employeur » permettant ainsi l’utilisation d’accent et de majuscule qui sont rarement utilisés pour des noms de colonnes dans une base.