Débuter avec le serveur SQL : 1. Requêtes SELECT simples

Vous allez apprendre à interroger Microsoft SQL Server à l’aide de l’instruction SQL SELECT dans cette série de leçons. Après avoir lu cette leçon, vous serez en mesure de :

  • Identifier toutes les tables d’une base de données SQL Server SSMS (SQL Server Management Studio).
  • Comprendre comment lister les colonnes d’une table.
  • Pour afficher les colonnes, créer des résultats textuels et mathématiques et définir des valeurs distinctes, utilisez l’instruction SQL SELECT.
  • Apprenez quelques techniques pour déboguer vos commandes et réparer les erreurs.

Important ! Veuillez suivre les exemples dans votre base de données et les faire. Si vous ne l’avez pas encore fait, inscrivez-vous à mon guide pour démarrer avec SQL Server. Vous pourrez recevoir des conseils pour télécharger le logiciel gratuit et la base de données d’exemple.

Comprendre votre base de données

Une simple instruction select se compose de deux parties. La première partie décrit les colonnes que nous voulons visualiser et la seconde partie quelle table nous visualisons. Une instruction select ressemble à :

SELECT LastName FROM Person.Person

Dans cet exemple, LastName est la colonne et Person la table. Les colonnes viennent après le mot clé SELECT ; tandis que la table est précédée de FROM.

Nom de la table

Vous vous demandez peut-être pourquoi la table Personne est désignée par Person. Person dans l’énoncé ci-dessus. Cela a à voir avec la façon dont les objets sont organisés sur le serveur. La base de données peut être considérée comme une série de conteneurs imbriqués. Les conteneurs sont les suivants :

  • Serveur/Instance – L’instance de SQL Server exécutée sur l’ordinateur.
  • Bases de données – Une ou plusieurs bases de données créées sur l’instance.
  • Schémas – Une façon de regrouper logiquement les tables et autres objets de la base de données.

Le nom pleinement qualifié d’une table est ….. Donc, si nous voulions vraiment être explicites, nous pourrions utiliser quelque chose comme

SELECT LastName FROM ...

pour faire une requête. Heureusement, nous écrivons généralement des requêtes dans le contexte d’une seule base de données et nous n’avons donc besoin de spécifier que le schéma et le nom de la table comme suit :

SELECT LastName FROM Person.Person

Mais qu’en est-il des crochets ? Elles sont utilisées si votre table a un espace dans son nom. Donc

SELECT Last NameFROM Person.Person Table

serait une erreur

SELECT FROM Person.

C’est OK. Mon conseil ? Si vous avez la possibilité de nommer vos propres tables, n’utilisez pas d’espaces, les parenthèses sont moches ! Si vous devez le faire, faites comme les gens d’Oracle et utilisez des underscores. Person_Table est beaucoup plus facile à lire que , personnellement je préfère PersonTable.

Utiliser l’explorateur d’objets

Pour écrire des requêtes, vous devez savoir quelles tables et quelles colonnes sont disponibles dans vos bases de données. Lorsque vous utilisez SSMS (SQL Server Management Studio), vous pouvez simplement développer le dossier des tables de la base de données pour lister toutes les tables trouvées dans votre base de données. Une fois que vous trouvez une table sur laquelle vous souhaitez en savoir plus, il suffit de cliquer sur le nom de la table pour la développer, puis sur les colonnes pour lister toutes les colonnes.

Exécution de requêtes dans SSMS

Avant d’aller trop loin, laissez-moi vous montrer comment exécuter une requête dans SSMS. En fait, c’est très simple. Une fois que vous avez lancé SQL Server Management Studio, vous voudrez sélectionner votre base de données. Ensuite, cliquez sur le bouton Nouvelle requête situé dans la barre d’outils supérieure. Cela affiche une fenêtre de requête à droite. Vous pouvez taper tout ce que vous voulez dans cette fenêtre, car il s’agit essentiellement d’un éditeur de texte. Coupez et collez ou tapez une instruction SQL, puis cliquez sur Exécuter pour exécuter l’instruction. Les résultats sont affichés dans la partie inférieure de la fenêtre et tous les messages, tels que les erreurs, s’affichent dans l’onglet messages.

Sélectionner plusieurs colonnes

Pour sélectionner plus d’une colonne, il suffit de les séparer par une virgule. Par exemple,

SELECT FirstName, LastNameFROM Person.Person

renvoie à la fois le prénom et le nom de famille comme résultat. Au cas où vous le souhaiteriez, vous pouvez mélanger les cas lors de l’écriture des requêtes. C’est-à-dire que

SELECT FirstName, LastNameFROM Person.Person

fonctionne aussi bien que

select FirstName, LastNamefrom Person.Person

Tip ! Une convention courante consiste à mettre tous les mots-clés en majuscules. Certains DBA’s estiment qu’il est plus facile de lire les commandes écrites de cette façon. Personnellement je ne le fais pas, mais pour ce blog je vais essayer. 🙂

Renommer les colonnes SQL

Vous pouvez renommer les colonnes qui résultent de vos instructions select. Pour ce faire, utilisez l’instruction AS comme suit :

SELECT LastName as SirNameFROM Person.Person

Ceci affiche le résultat sous la forme « SirName » plutôt que « LastName ». C’est une fonctionnalité intéressante du point de vue de la vanité, mais elle est également pratique lorsque nous voulons renvoyer un résultat de calcul et que nous devons lui donner un nom. Par exemple, supposons que vous vouliez renvoyer le nom de famille en majuscules. Vous pourriez écrire

SELECT UPPER(LastName) AS SirNameFROM Customers

UPPER est connu comme une fonction. Le serveur SQL dispose de nombreuses fonctions que vous pouvez utiliser pour effectuer de nombreux types de calculs. Nous les examinerons toutes plus tard, mais pour l’instant, sachez que vous pouvez enchaîner plusieurs fonctions pour créer une expression complexe permettant de sortir les données de la manière dont vous en avez besoin.

Expressions de colonnes complexes

Notre table d’employés contient des champs séparés pour le prénom et le nom de famille. Supposons que le service des ressources humaines ait besoin de voir un nom complet en majuscules. Comment faire ? Simple ! Vous pourriez écrire

SELECT UPPER(FirstName) + ' ' + UPPER(LastName) AS FullNameFROM Person.Person

Cette déclaration peut sembler compliquée, mais une fois que nous la décomposons, vous verrez qu’elle est juste composée d’un tas d’éléments simples.

  • Comme vous venez de l’apprendre, UPPER est utilisé pour retourner la majuscule d’une colonne.
  • Le + indique à SQL de combiner deux valeurs ensemble.

Tout ce qui est entre guillemets simples (‘) est littéralement affiché tel quel. Dans notre cas, le ‘ ‘ signifie qu’il faut sortir un seul espace. Si vous lisez notre expression, en anglais, elle se lirait comme suit : « Prenez la majuscule de FirstName combinez-la avec un espace et ajoutez-y la majuscule de LastName. »

Faites des maths avec SQL !

Vous pouvez aussi faire en sorte que SQL fasse des tours de maths pour vous. Il peut faire de l’arithmétique assez compliquée si vous lui permettez de le faire. Pour aujourd’hui, je vais vous montrer comment multiplier deux nombres, mais vous pouvez tout aussi bien ajouter, soustraire ou diviser. Plus tard, nous rendrons les choses plus complexes pour que vous puissiez revivre vos journées d’algèbre II 🙂 Voici quelques opérateurs mathématiques courants que vous pouvez utiliser en SQL:

  • * Multiplier
  • / Diviser
  • + Ajouter
  • – Soustraire

Nous allons utiliser la table OrderDetails et calculer le prix total en multipliant le prix unitaire par la quantité.

SELECT UnitPrice, OrderQty, UnitPrice * OrderQty AS TotalFROM Purchasing.PurchaseOrderDetail

Le bit  » UnitPrice * OrderQty  » dit qu’il faut multiplier le prix unitaire par la quantité.

Be Distinct and Debug

Jusqu’ici nous avons utilisé l’instruction select pour récupérer tous les enregistrements d’une table sans tenir compte du fait que certaines valeurs se répètent ou non. Si vous le souhaitez, vous pouvez utiliser le mot-clé DISTINCT pour supprimer les doublons de vos résultats. Par exemple, si vous vouliez seulement renvoyer une liste unique des titres des employés, vous utiliseriez cette instruction SQL:

SELECT DISTINCT JobTitleFROM HumanResources.Employee

L’instruction DISTINCT fonctionne également sur plus d’une colonne. Si vous le souhaitez, vous pouvez obtenir une liste distincte des titres de postes et des sexes en tapant

SELECT DISTINCT JobTitle, GenderFROM HumanResources.Employee

!Trivia : Le mot clé ALL est l’équivalent de DISTINCT et constitue le comportement par défaut. C’est pourquoi nous ne l’écrivons pas dans nos déclarations.

Retrouver et corriger les erreurs

Tôt ou tard, vous allez mal taper une déclaration select dans la ligne de commande et l’ordinateur vous criera – « Erreur de syntaxe ! » ou « Nom de colonne invalide » Que faire ? Rappelez-vous que l’instruction select se compose de deux parties principales : la partie SELECT et la partie FROM. En général, la base de données regarde d’abord si ces mots-clés sont présents, et s’ils ne le sont pas, elle déclenche une erreur de syntaxe.

Ce n’est qu’une expression fantaisiste pour dire « vous avez mal orthographié un mot-clé ou l’avez dans le désordre » (par exemple, vous avez le Distinct avant Select comme dans DISTINCT SELECT). Une fois les mots-clés vérifiés, l’instruction est inspectée pour s’assurer que vous avez spécifié une table. Une fois que la table est connue, il est possible de vérifier les colonnes. L’ordre est donc de vérifier d’abord les mots-clés, puis les tables, et enfin les colonnes correctes. Lorsqu’une erreur s’affiche, lisez-la attentivement. Il y a de fortes chances que vous ayez mal orthographié quelque chose. L’ordinateur vous dira ce que vous avez mal orthographié entre guillemets ; c’est votre travail de trouver ensuite la faute d’orthographe et de la corriger.

Exercices de sélection SQL

Il est important de s’entraîner ! Utilisez la base de données exemple pour répondre à ces questions.

  1. Comment pouvez-vous trouver tous les noms de table dans la base de données AdventureWorks2012?
  2. Quelles sont les deux façons d’obtenir les noms de toutes les colonnes de la table Person.Person ?
  3. Sélectionnez JobTitle et BirthDate pour tous les employés.
  4. Quel serait le UnitPrice de chaque article de PurchaseOrderDetail s’il y avait une vente à moitié prix ?

Les réponses sont ici

Félicitations ! Vous venez d’apprendre à utiliser la commande select pour interroger une base de données. D’autres tutoriels vont suivre, et dans ceux-ci, nous plongerons dans certains des domaines que nous avons survolés aujourd’hui, tels que les opérateurs mathématiques et les fonctions. N’oubliez pas ! Je tiens à vous rappeler que si vous avez d’autres questions auxquelles vous souhaitez obtenir une réponse, postez un commentaire ou tweetez-moi. Je suis là pour vous aider.

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée.