Ich habe festgestellt, dass Visual Studio 2008 in SQL eckige Klammern um Spaltennamen setzt. Bieten die Klammern einen Vorteil? Wenn ich Code T-SQL übergebe, habe ich mich nie darum gekümmert.
Beispiel:
Visual Studio:
SELECT [column1], [column2] etc...
Mein eigener Weg:
SELECT column1, column2 etc...
sql-server
syntax
Paulj
quelle
quelle
"
), die Microsoft auch unterstützt. Wenn Microsoft das Bedürfnis hatte, alles abzugrenzen, wäre es besser gewesen, stattdessen die Standard-Anführungszeichen zu verwenden. Aber ich denke, das hätte es zu einfach gemacht, auf ein anderes DBMS zu portieren, und das wird niemals funktionieren ...Antworten:
Die Klammern sind erforderlich, wenn Sie Schlüsselwörter oder Sonderzeichen in den Spaltennamen oder Bezeichnern verwenden. Sie könnten eine Spalte benennen
[First Name]
(mit einem Leerzeichen) - aber dann müssten Sie jedes Mal Klammern verwenden, wenn Sie auf diese Spalte verweisen.Die neueren Tools fügen sie überall hinzu, nur für den Fall oder aus Gründen der Konsistenz.
quelle
select
jedochselect select from mytable
einen Fehlerselect [select] from mytable
auslöst und eine gültige Abfrage darstellt. Jedes Wort, das in Ihrem SQL Management Studio bunt wird, sollte in Klammern stehen, wenn Sie es als Spalten- / Tabellen- / SP- usw. Namen verwenden möchten. In MySQL wären abgewinkelte einfache Anführungszeichen das Äquivalent dazu.Sie sind praktisch, wenn Ihre Spalten dieselben Namen wie SQL-Schlüsselwörter haben oder Leerzeichen enthalten.
Beispiel:
Ach nein! Falsche Syntax in der Nähe des Schlüsselworts 'Benutzer'. Aber dieses:
Funktioniert gut.
quelle
Sie sind nützlich, wenn Sie (aus irgendeinem Grund) beispielsweise Spaltennamen mit bestimmten Zeichen verwenden.
würde nicht funktionieren, aber das Setzen von eckigen Klammern um den Spaltennamen würde funktionieren
Kurz gesagt, es ist eine Möglichkeit, einen Objektnamen explizit zu deklarieren. Spalte, Tabelle, Datenbank, Benutzer oder Server.
quelle
Spaltennamen können Zeichen und reservierte Wörter enthalten, die die Abfrageausführungs-Engine verwirren. Wenn Sie also jederzeit Klammern um sie setzen, wird dies verhindert. Einfacher als nach einem Problem zu suchen und es dann zu lösen, denke ich.
quelle
Die Klammern können verwendet werden, wenn Spaltennamen reservierte Wörter sind.
Wenn Sie die SQL-Anweisung programmgesteuert aus einer Sammlung von Spaltennamen generieren, die Sie nicht steuern, können Sie Probleme vermeiden, indem Sie immer die Klammern verwenden.
quelle
Unabhängig von der Befolgung einer Namenskonvention, bei der die Verwendung reservierter Wörter vermieden wird, fügt Microsoft neue reservierte Wörter hinzu. Durch die Verwendung von Klammern kann Ihr Code auf eine neue SQL Server-Version aktualisiert werden, ohne dass Sie zuerst die neu reservierten Wörter von Microsoft aus Ihrem Client-Code heraus bearbeiten müssen. Diese Bearbeitung kann ein erhebliches Problem sein. Dies kann dazu führen, dass Ihr Projekt vorzeitig eingestellt wird.
Klammern können auch nützlich sein, wenn Sie Alle in einem Skript ersetzen möchten. Wenn Ihr Stapel eine Variable mit dem Namen @String und eine Spalte mit dem Namen [String] enthält, können Sie die Spalte in [NewString] umbenennen, ohne @String in @NewString umzubenennen.
quelle
Während des dunklen Zeitalters von SQL in den 1990er Jahren war es eine gute Praxis, da die SQL-Designer versuchten, jedes Wort im Wörterbuch als Schlüsselwort für eine endlose Lawine neuer Funktionen hinzuzufügen, und sie nannten es den SQL3-Entwurf.
So bleibt die Vorwärtskompatibilität erhalten.
Und ich fand, dass es einen weiteren schönen Nebeneffekt hat, es hilft sehr, wenn Sie grep in Codeüberprüfungen und Refactoring verwenden.
quelle
Darüber hinaus enthalten einige Sharepoint-Datenbanken Bindestriche in ihren Namen. Durch die Verwendung eckiger Klammern in SQL-Anweisungen können die Namen korrekt analysiert werden.
quelle
Ich glaube, es fügt sie dort hinzu, um die Konsistenz zu gewährleisten. Sie sind nur erforderlich, wenn der Spaltenname ein Leerzeichen oder ein Sonderzeichen enthält. Es ist jedoch sauberer, sie immer dann einzuschließen, wenn die IDE SQL generiert.
quelle