SQL Server 2016 pour les administrateurs IT

Définir les collations

Testez gratuitement nos 1324 formations

pendant 10 jours !

Tester maintenant Afficher tous les abonnements
La notion de collation permet de définir des règles de comparaison et de tri entre les chaînes de caractères. Suivez les explications de votre formateur.
06:31

Transcription

Il est temps de commencer à explorer les options des bases de données. Je voudrais commencer par la notion de collation parce que c'est une notion qui est certes présente dans les bases de données mais aussi au niveau du serveur. Lorsqu'on a installé le serveur SQL Server là, en l’occurrence on n'a pas vraiment choisi on a pris la valeur par défaut, mais on a choisi une collation. On va regarder dans les propriétés du serveur et on voit ici qu'on a choisi un classement. Le classement, c'est un peu la traduction française du terme collation en anglais, on pourrait dire quand même une collation en français, ce serait plus logique. La collation, c'est French_CI_AS. Cette collation, c'est un nom de collation purement Windows, on a des collations avec des noms SQL, également. Et maintenant que SQL Server est en train d'être porté sur Linux, dans Linux vous aurez aussi cette notion de collation mais vous serez plutôt avec des noms de collation SQL. Mais qu'est-ce que c'est qu'une collation ? Qu'est-ce que ça veut dire French CI AS ? D'abord, on est en code de page français, donc, on va prendre en compte tout le jeu de caractères du français et puis, on est en CI, c'est-à-dire case insensitive, ça veut dire insensible à la casse, aux majuscules-minuscules, et AS, ça veut dire accent sensitive, sensible, donc, aux accents, donc aux signes diacritiques en l’occurrence de la langue française. A quoi ça sert ? Ça sert à définir, ici, ce qu'on appelle une collation par défaut du serveur. Si je prends ce select sur référence région et que je fais Order by nom, ici, j'ai les noms qui apparaissent dans l'ordre alphabétique. Donc, il n'y a pas vraiment de surprise ou de miracle à ce niveau-là. Et cet ordre, il est quand même déterminé par la sensibilité à la casse, est-ce que, par exemple, un A majuscule vient avant un a minuscule ? On peut faire l'essai. Je vais faire un update de ma table référence région, je vais, donc, modifier une donnée, je vais dire, WHERE RegionID est égal à, ici j'ai deux fois l'Alsace, je vais prendre 35 et puis je vais changer le nom de la région à un nom en minuscule, comme ceci. J'ai deux noms qui sont différents finalement, dans le rapport majuscule-minuscule et pourtant, dans mon Order by nom, ici, j'ai quelque chose qui permet d'avoir un tri insensible à la casse puisque j'ai A majuscule et a minuscule. On est bien d'accord sur une chose : le stockage des données, il ne change pas, j'ai bien A majuscule, a minuscule, par contre, le tri, lui, va représenter quelque chose qui est différent, potentiellement, selon la collation. Je vais faire quelque chose qu'on peut faire dans SQL Server, bien sûr. Je vais changer la collation en un volet, en utilisant derrière le mot-clé collate, et je vais dire French CS AS, donc, French CS AS, comme ceci, pour dire, je continue à réagir en français mais maintenant je vais collationner, si vous voulez, cette colonne en case sensitive, je vais considérer qu'on est en case sensitive. Et voilà mon tri, vous voyez que l'a minuscule vient avant l'A majuscule. Si j'enlève ceci, l'A majuscule vient avant l'a minuscule. J'ai donc des critères de tri différents. La collation, c'est une forme de table de correspondance qui permet pour des caractères données, de dire selon la collation, selon la table de correspondance, avec quoi on peut les comparer, et comment on peut les trier. Si maintenant je fais une recherche de la même façon, au lieu de faire un order by nom je vais faire un WHERE nom est égale à Alsace, ici, je trouve mes deux Alsaces. Mais si je fais... ... une comparaison, en disant que la collation de cette colonne est en case sensitive, je n'en trouve plus qu'un parce que l'autre ne peut pas apparaître puisque j'ai dit que je voulais faire une comparaison qui était sensible à la casse. Vous voyez qu'en fait la collation ne change pas les données purement de la table, on aura toujours a minuscule, A majuscule. Mais la collation va avoir un impact sur les requêtes, comment est-ce qu'on trie dans l'order by, comment est-ce qu'on compare dans la clause where ou dans la jointure, par exemple. A ce moment-là, la collation est importante parce qu'elle peut avoir un impact sur les requêtes. Comment ça s'organise ? On a une collation par défaut du serveur. Lorsqu'on crée des bases de données, la base de données va reprendre par défaut, la collation par défaut du serveur. Je vous crée une nouvelle base de données et on va regarder dans les options. On voit qu'on a un classement qui est ici la collation par défaut, mais je peux changer, je peux avoir une collation différente de celle du serveur. Ensuite, dans la base de données quand je vais créer des tables, les colonnes de type varchar, enfin, les colonnes qui contiennent du texte, vont avoir la collation par défaut de la base de données, sauf si je change. Donc, chaque colonne de type varchar ou char, en fin de texte, ici, ici, etc. peuvent avoir des collations différentes, si au moment où je crée la table je le choisis, mais ça n'aura aucun impact sur le stockage, on stockera toujours des octets : A majuscule, a minuscule sont des octets différents. Donc, voilà, c'est pour vous expliquer le concept de collation. Parfois ce qui peut arriver, c'est qu'on ait un conflit de collation, lorsqu'on fait une jointure, par exemple, entre deux tables sur deux colonnes qui n'ont pas la même collation. A ce moment-là, on peut indiquer explicitement, ici, la collation d'un côté pour qu'elle corresponde à la collation de l'autre côté parce qu'on ne peut comparer que des choses qui ont des collations compatibles. En quoi c'est utile ? Vous pourriez l'utiliser sur certaines tables pour dire, je vais créer une table avec, par exemple, le nom en collation, case insensitive, accent insensitive, par exemple, pour dire sur cette colonne toutes les recherches vont être faites aussi insensibles aux accents. Si je veux chercher Céline, avec un Ce sans accent je le trouverai même si ça s’écrit dans la cellule Cé.

SQL Server 2016 pour les administrateurs IT

Comprenez le fonctionnement et les différents modules qui composent SQL Server. Prenez en main les bases de données, les schémas, les tables, la gestion des fichiers, etc.

5h20 (55 vidéos)
Aucun commentaire n´est disponible actuellement
 
Logiciel :
Spécial abonnés
Votre/vos formateur(s) :
Date de parution :14 mars 2017
Durée :5h20 (55 vidéos)

Votre formation est disponible en ligne avec option de téléchargement. Bonne nouvelle : vous ne devez pas choisir entre les deux. Dès que vous achetez une formation, vous disposez des deux options de consultation !

Le téléchargement vous permet de consulter la formation hors ligne et offre une interface plus conviviale. Si vous travaillez sur différents ordinateurs ou que vous ne voulez pas regarder la formation en une seule fois, connectez-vous sur cette page pour consulter en ligne les vidéos de la formation. Nous vous souhaitons un excellent apprentissage avec cette formation vidéo.

N'hésitez pas à nous contacter si vous avez des questions !