Was ist die korrekte syntax im SQL-Server, die für die Bewältigung Tabellen?
Erscheint dies wie eine ziemlich offensichtliche Frage, aber ich habe nicht in der Lage zu denken, der richtige Begriff für das, was ich bin versucht zu Fragen, so kommen mit Referenz-material für diese wurde schwierig. Die Antworten, die offensichtlich scheinen, obwohl.
Bei der Untersuchung des Pluralsight Schulungsmaterialien für SQL Server, die Sie empfohlen, immer unter Bezugnahme auf die Tabellen in den beiden "normalen" Abfragen (was Sie schreiben, für eine grundlegende web-service) und für eine SQL-Abfrage, in der vielleicht eine gespeicherte Prozedur wie folgt:
[databasename].[dbo].[some_table].[sometimesacolumngoeshere]
Aber ich fand es sehr üblich, kommen über gespeicherte Prozeduren, etc., einfach zu verwenden:
my_column or [my_column]
Hier der Unterschied ist natürlich, dass man liefert eine absolute "Adresse" explizit, während die andere implizit.
Woher wissen Sie, wenn es angemessen ist, einen über den anderen, und auch, was nennst du das, Adressierung?
Meine Präferenz wäre immer explizit sein, und wenn Sie benötigen, um Platz zu sparen und/oder machen die Dinge mehr klar, Sie könnte-alias zu einer expliziten vollständigen "Adresse", richtig?
InformationsquelleAutor Ray | 2012-04-05
Du musst angemeldet sein, um einen Kommentar abzugeben.
Sind Sie richtig. Im Grunde SQL wird versuchen, das Feld, das Sie suchen "my_column" in allen Tabellen in der FROM-und JOIN-Sektionen. Wenn jedoch Sie zufällig ein "my_column" in Tabelle A und in Tabelle B, dann müssen Sie diese explizit mitzuteilen, welche "my_column", die Sie suchen, indem der name der Tabelle. Dies geht auf die Kette zu dbo und databasename, wenn Sie Kollisionen gibt es auch.
Meisten der Zeit werden Sie feststellen, dass die Menschen, die nicht explizit aufrufen der Tabellen eine Spalte ist, es sei denn, Sie verbinden mehrerer Tabellen.
Beispiel: ich Schreibe meine Anfragen wie diese:
Hier bin ich mit der AS an alias tableA und tableB unten, um mehr lesbar a und b. Ich konnte nur so einfach geschrieben, meine Abfrage wie diese:
Oder so, wenn Feld1 und Feld2 sind einzigartig, es gibt Tabellen, aber das wird ein wenig verwirrend sein, da, wo jedes Stück von Daten kommen.
InformationsquelleAutor Rob Booth
SQL-Server hat vier Teil-Namen:
Meist du eine Referenz zu einem Objekt mit Namen
Dann können Sie den Eigentümer oder das schema des Objekts:
Dann können Sie auf die Datenbank verweisen, dass das Objekt lebt:
Schließlich können Sie die Referenz-Tabelle auf einem anderen server
Ist es besser erklärt als ich es kann auf MSDN
Hmmm, muss ich untersuchen.
Einen kleinen Unterschied: stackoverflow.com/questions/1112374/...
blogs.msdn.com/b/mssqlisv/archive/2007/03/23/...
InformationsquelleAutor Phil
Während es möglich ist, mit implict Namen für die Spalten ist es eine schlechte Wahl von einem maintainabilty Aspekt. Ich nie production code aus, der nicht jeden alias-Spalte, da, wenn man wieder ein Jahr später zu ändern, Bericht oder Abfrage, die Sie wirklich nicht wollen, zu haben, um herauszufinden, welche der 20 Tabellen, die Sie verknüpft, dass es in. Weitere, nicht angibt, macht die Datenbank härter arbeiten, um suchen Sie die Spalte, und Sie haben die Codierung Fehler mehr, wo Sie die Spaltennamen, die in zwei Tabellen, ohne eine Referenz. Es ist eine gute Angewohnheit, in zu verwenden, explizite Verweise.
InformationsquelleAutor HLGEM
Pluralsight sind falsch.
Zum Beispiel eine gespeicherte Prozedur, die verwendet einen voll qualifizierten Namen hat, bezieht sich auf Objekte in der gleichen Datenbank, hier sind zwei weitere Gründe, um nicht voll qualifizieren, in dieser Weise:
Wenn Sie eine gespeicherte Prozedur, die bezieht sich auf ein Objekt in der gleichen Datenbank, es wird brechen, wenn Sie benennen Sie Ihre Datenbank.
Wenn Sie starten, mithilfe von Visual Studio database tools, um Ihre Datenbank-Skripte zur Quellcodeverwaltung, erhalten Sie viele Warnungen zum Umgang mit
Ist es eine gute Idee zu verstehen und zu nutzen schemas richtig
InformationsquelleAutor Nick.McDermaid
Objekte bezeichnet werden kann, durch ein einzelnes oder mehrere Bezeichner.
Können Sie mit einem einzigen Bezeichner beziehen sich auf ein Objekt, aber, wenn der Bezeichner nicht eindeutig ist, müssen Sie weitere Kennungen zur eindeutigen Identifizierung des Objekts.
Beispielsweise zwei Tabellen mit dem Namen
TableA
bestehenden in verschiedenen schemas muss darauf verwiesen werden, in dem eine Abfrage mit mindestens zwei Identifikatorenschema_one.TableA
undschema_two.TableA
.Gibt es eine MSDN-Seite, wo Sie können erfahren Sie mehr über das Objekt-Namen und-IDS.
Bezug auf die Verwendung von mehreren Kennungen für Objekt-Namen, wenn Sie mehr spezifische, Sie reduzieren Vieldeutigkeit, die in Abfragen und beschleunigen die Analyse der Abfrage, wie die Datenbank-engine nicht zu lösen Mehrdeutigkeit Probleme auf Kosten der Lesbarkeit der Abfragen.
Meine persönliche Präferenz (für die am häufigsten verwendeten Objekte)
schema.Table
Referenzierung von Tabellen undcolumn
, wenn eine einzelne Tabelle in der Abfrage verwiesen, undtable.column
wenn mehrere Tabellen in der Abfrage verwiesen.InformationsquelleAutor gonsalu
Ich denke, das ist eine der Fragen, die ist subjektiv und wird turn aus zu be eine Sache der Vorliebe, aber:
Vom Standpunkt der Lesbarkeit, ich würde behaupten für wird explizit NUR bei Bedarf. Oft SQL-Anweisungen sind Komplex genug, ohne zu Lesen, eine Menge unnötiger text.
Ich denke, dass
ist VIEL lesbarer als
(Es wird noch schlimmer, wenn Sie beginnen, verbinden von Tabellen, und noch schlimmer, wenn man das verknüpfen von Tabellen in unterschiedlichen Datenbanken.)
Ich kann sehen, wo könnte man argumentieren, dass die zweite besser lesbar wenn, müssen Sie genau wissen, welche Datenbank, des Schemas und der Tabelle ein bestimmtes Feld kommt, indem man die Abfrage allein.
Aber in SQL Server, zum Beispiel, würden Sie in der Lage zu öffnen, die Abfrage in ein designer-und finden Sie es in einen viel mehr benutzerfreundliche grafische Ansicht.
IMHO, die einzige Zeit, die ich nutzen würde die vollständige syntax ist , wenn notwendig beim überqueren Tabelle/Datenbank/schema Grenzen, oder wenn Sie haben zwei Tabellen mit den gleichen Feldnamen.
Beispiel:
Und selbst in diesem Fall würde ich verwenden Tabellen-Aliases um es abzukürzen und machen es besser lesbar.
Alle gesagt, in der realen Welt, ist es sehr wahrscheinlich finden Sie sich für ein Unternehmen zu arbeiten, das hat sich schon entschieden, das standard-format, und Sie müssen den code nach der Firma standard.
Das ist, warum ich sagen, es ist subjektiv anda Frage der Präferenz. 😉
InformationsquelleAutor David
In den meisten Fällen würde ich immer raten, Sie zu verwenden, wird die vollständige Adresse nur um sicher zu sein
Dies ist jedoch nur wirklich notwendig, wenn Sie mehrere Datenbanken. Ich habe immer nur auf ein oder zwei Themen Datenbanken auswählen und diese ist in der Regel fest durch die Auswahl der richtigen sql server.
Nachdem Sie eigentlich in einer Abfrage, und Sie haben den Tisch mit einer verkürzten alias-dann gibt es wirklich keine Notwendigkeit, die vollständige Adresse, denn dies ist bereits verwiesen.
E. G
InformationsquelleAutor Ryan Gadsdon