J'ai remarqué que Visual Studio 2008 place des crochets autour des noms de colonnes dans SQL. Les supports offrent-ils un avantage? Quand je passe le code T-SQL, je ne me suis jamais soucié d'eux.
Exemple:
Visual Studio:
SELECT [column1], [column2] etc...
Ma propre voie:
SELECT column1, column2 etc...
sql-server
syntax
Paulj
la source
la source
"
), que Microsoft prend également en charge. Si Microsoft ressentait le besoin de tout délimiter, il aurait été préférable d'utiliser les doubles guillemets standard à la place. Mais je suppose que cela aurait rendu trop facile le portage vers un autre SGBD, et cela ne le fera jamais…Réponses:
Les crochets sont obligatoires si vous utilisez des mots-clés ou des caractères spéciaux dans les noms ou identificateurs de colonne. Vous pouvez nommer une colonne
[First Name]
(avec un espace), mais vous devrez alors utiliser des crochets chaque fois que vous faites référence à cette colonne.Les nouveaux outils les ajoutent partout au cas où ou par souci de cohérence.
la source
select
maisselect select from mytable
générerait une erreur et enselect [select] from mytable
ferait une requête valide. Quel que soit le mot qui devient coloré dans votre studio de gestion SQL, il doit être entouré de crochets si vous souhaitez les utiliser comme noms de colonne / table / sp / etc. Dans MySQL, les guillemets simples inclinés `` `` seraient l'équivalent de ceci.Ils sont pratiques si vos colonnes portent les mêmes noms que les mots-clés SQL ou contiennent des espaces.
Exemple:
Oh non! Syntaxe incorrecte à côté du mot-clé "utilisateur". Mais ça:
Fonctionne très bien.
la source
Ils sont utiles si vous utilisez (pour une raison quelconque) des noms de colonnes avec certains caractères par exemple.
ne fonctionnerait pas, mais placer des crochets autour du nom de la colonne fonctionnerait
En bref, c'est une façon de déclarer explicitement un nom d'objet; colonne, table, base de données, utilisateur ou serveur.
la source
Les noms de colonne peuvent contenir des caractères et des mots réservés qui perturberont le moteur d'exécution des requêtes, donc placer des crochets autour d'eux à tout moment empêche que cela se produise. Plus facile que de rechercher un problème et de le résoudre, je suppose.
la source
Les crochets peuvent être utilisés lorsque les noms de colonne sont des mots réservés.
Si vous générez l'instruction SQL par programme à partir d'une collection de noms de colonnes que vous ne contrôlez pas, vous pouvez éviter les problèmes en utilisant toujours les crochets.
la source
Indépendamment de suivre une convention de dénomination qui évite d'utiliser des mots réservés, Microsoft ajoute de nouveaux mots réservés. L'utilisation de crochets permet à votre code d'être mis à niveau vers une nouvelle version de SQL Server, sans avoir besoin au préalable de modifier les mots nouvellement réservés de Microsoft à partir de votre code client. Cette modification peut être une préoccupation importante. Cela peut entraîner le retrait prématuré de votre projet ...
Les crochets peuvent également être utiles lorsque vous souhaitez tout remplacer dans un script. Si votre lot contient une variable nommée @String et une colonne nommée [String], vous pouvez renommer la colonne en [NewString], sans renommer @String en @NewString.
la source
Pendant l'âge sombre de SQL dans les années 1990, c'était une bonne pratique car les concepteurs SQL essayaient d'ajouter chaque mot dans le dictionnaire comme mot-clé pour une avalanche sans fin de nouvelles fonctionnalités et ils l'appelaient le brouillon SQL3.
Donc, cela maintient la compatibilité.
Et j'ai trouvé que cela avait un autre effet secondaire intéressant, cela aide beaucoup lorsque vous utilisez grep dans les révisions de code et le refactoring.
la source
De plus, certaines bases de données Sharepoint contiennent des traits d'union dans leurs noms. L'utilisation de crochets dans les instructions SQL permet aux noms d'être analysés correctement.
la source
Je crois que cela les ajoute là pour la cohérence ... ils ne sont requis que lorsque vous avez un espace ou un caractère spécial dans le nom de la colonne, mais il est plus propre de les inclure tout le temps lorsque l'EDI génère du SQL.
la source