Meinungen: SQL-Anweisungen, verwenden Sie die Tabelle Aliase?
Einer der Jungs mit denen ich arbeite hat Folgendes zu sagen über die Verwendung der SQL-Aliase, und er postete gerade Folgendes auf reddit. Was denken Sie, alias oder nicht zu alias?
....
Also ich hab immer die ungeraden Mann aus meinem mit meinem dev-team darüber, wie SQL geschrieben werden sollte.
Ich habe in der Schule gelernt zu verwenden, Aliase, aber ich hasse Sie persönlich. Ich finde er kann die Anweisung nicht lesbar, wenn lange. Ich will wissen, was Tabellen sind, den Beitritt zu dem, was andere Tabellen. Ich will nicht suchen müssen durch eine 5-10 Tabellen-join, um herauszufinden, was "p" bedeutet, ist, dass die Produkte-Tabelle, die Leute, etc...?
Ich persönlich finde es nicht schwer zu benutzen ist ein wenig Doppel-Klick, Strg+c, Strg+v. die vollständige Tabelle Namen (natürlich, manchmal muss man join auf die gleiche Tabelle zweimal in der Sie gezwungen werden, verwenden Sie Aliase in einige mehr bizarre Abfragen.)
Ex. Mein Stil
SELECT *
FROM
People
JOIN
Orders ON People.PersonID = Orders.PersonID
JOIN
OrderDetails ON Orders.OrderID = OrderDetails.OrderID
JOIN
Products ON Products.ProductID = OrderDetails.ProductID
JOIN
Country ON People.CountryID = Country.CountryID
VS
SELECT *
FROM
People p
JOIN
Orders o ON p.PersonID = o.PersonID
JOIN
OrderDetails od ON o.OrderID = od.OrderID
JOIN
Products pr ON pr.ProductID = od.ProductID
JOIN
Country c ON p.CountryID = c.CountryID
Persönlichen Vorlieben selbst? Ich meine nur berücksichtigen, wenn diese Abfrage wurde eine größere beitreten und Sie hatte eine große select-Anweisung.
Ich nehme an, die meisten Leute benutzen alias als Zeitersparnis, denken Sie, es ist auch besser lesbar? Können Sie gehen, um Ihre alten sql und sofort verstehen, wie die Verknüpfungen funktionieren?
UPDATE: Speziell bin ich versucht zu argumentieren, dass kurzschließen der Namen bis auf einzelne Buchstaben können die sql-Anweisung nicht lesbar. Das ändern einer Tabelle aus ShoeStackerCrazyProducts nach unten zu ShowProducts ich denke, Sinn machen kann. Kurzschließen es sscp auf der anderen Seite wäre es nicht lesbar. Gedanken?
- Wenn Sie nach Meinungen gefragt, stellen Sie diese Frage community wiki, so wird es nicht heruntergefahren schnell.
- Wie um voll qualifizierte Namen? [server].[db].[owner].[Tabelle] - ich würde lieber alias,...
- Es ist persönliche Präferenz, zu einem gewissen Grad - aber mit vielen Tischen und viele join-Anweisungen mit aliasses, ich glaube, dein T-SQL ist sehr viel besser lesbar. Und ja, ich kann gehen Sie zurück zu meinem alten SQL und immer noch verstehen, meine Verknüpfungen kein problem - Dank der Verwendung von aliasses! 🙂
- CW nicht machen eine Meinungsumfrage akzeptabel.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Dies ist subjektiv, aber wenn Ihre Tabelle Namen zu lang werden, dann werden die Aliase viel mehr lesbar. Denken Sie daran, dass die Spaltennamen müssen auch die Qualifikanten, so können Sie schnell am Ende mit langen Listen von CamelCasedTableNames.WithDelimiters.
Real-world " - Beispiel die Zähmung einige legacy-Tabellen:
Das ist schlimm genug, ohne den vollqualifizierten Namen.
Wenn ich Schreibe es heute, ich könnte vermeiden, die ein-Zeichen-Aliase, aber in einer Abfrage diese kurz, es ist nicht so wichtig.
Ich persönlich immer Aliase verwenden, auch auf einem single-table-Abfrage. Ich auch, machen es sich zur Gewohnheit zu verwenden, die alias mit jeder Spalte Referenz, selbst wenn die Spalte name ist einzigartig und der alias ist nicht unbedingt erforderlich. So lange, wie Sie Ihre Aliase sinnvoll sind (z.B. alias-Produkte wie pr, nicht als Ein), Sie sollten nicht viel verlieren Lesbarkeit.
Siehe auch: Brent Ozar Blog-Eintrag zu diesem Thema.
Auf ein zugehöriger Hinweis, ich habe auch immer den schema-Namen auf jedem Tisch Referenz (z.B. dbo.Produkte vs. Produkte), auch wenn es das Standard-schema.
Benutze ich SqlPrompt (RedGate), die werden alles tun, dass copy/paste für Sie, und ich noch Aliase verwenden die ganze Zeit. Was ich nicht tun (und nicht stehen) ist mit dem alphabet zu alias. In anderen Worten, die erste Tabelle Schreibe ich 'a', das zweite 'b' und so weiter. Für kleine Abfragen verwende ich den ersten Buchstaben der Tabelle. Für mehr Abfragen ich werde die ganze Tabelle Namen.
Natürlich, ich benutze schemas so meine vollqualifizierte Objektnamen neigen dazu, VIEL länger als das Beispiel gegeben.
Alias ist besser. In dem Fall haben Sie ein Produkt und die Menschen, verwenden Sie einfach verschiedene Abkürzungen. Pd für Produkt -, pl für Menschen, zum Beispiel.
Außerdem in dem Fall, wo Sie den inneren Abfragen, Aliase sind kritisch.
Alias sind wirklich praktisch, wenn Sie brauchen, das 3-Teil-Namen, wenn Sie tun, die Logik über mehrere Datenbanken. Auch Ihre Nützlichkeit ist direkt proportional zu der Länge des DB/schema/Tabelle Namen und die Nachdenklichkeit des alias.
In meiner Umgebung, die wir tun eine Menge Arbeit mit mehreren Datenbanken in derselben Abfrage, und Aliase sind von unschätzbarem Wert, vor allem, wenn Sie schon lange DB-Namen wie:
CustomerNameDataClaimsDetail
CustomerNameDataClaimsHeader
und diese DBs haben Tabellen wie:
ClaimsDetailNew
ClaimsDetailLoad
In diesem Fall macht es eine Menge Sinn, alias
CustomerNameDataClaimsDetail.dbo.ClaimsDetailNew
zuCDN
oder so.Wenn Ihre Tabellen den gleichen Namen aber auf unterschiedlichen Datenbanken, man ist gezwungen, alias. Dies geschieht auch über gleichnamigen Tabellen, aber anders benannte Schemata.
wird nicht funktionieren, wo
arbeiten.
Auch mit einem self-join und Sie sind gezwungen zu alias.
Es ist eher üblich, die SQL-Entwicklungsumgebungen-Unterstützung intellisense:
...das macht es wirklich einfach, mit zu arbeiten Aliase.
Sagte, ich glaube nicht, dass es subjektiv ist die Verwendung von Tabellen-Aliase.
SELECT *
vermieden werden, es sei denn, tatsächlich alle Spalten. Durch die alias-Tabelle vorhanden, in einer Spalte Referenz, es ist klar, wo die Spalte aus und kann herangezogen werden für Fehler, wenn die Spalte entweder verändert oder verschwindet aus der Tabelle. Nichts wie immer eine Fehlermeldung über "fehlerhafte Spalte 'id' ", dass Sie dann zu jagen--schließen Sie die alias-Tabelle, und Sie haben minimiert die Menge an Arbeit, die notwendig ist, um die debug-Ausgabe.Abschluss
Die Fähigkeit zur Aufrechterhaltung von SQL ist, dass viel einfacher, mit dem Tabellen-Aliase.
Ich immer Aliase verwenden, sobald mehr als eine Tabelle betroffen ist.
Ich denke, dass macht Verbindet sehr viel besser lesbar, vor allem, weil wir haben schon ein paar Tabellen mit zusammengesetzten Schlüsseln.
Wenn Sie immer geben Sie den Tabellennamen, es ist mehr Arbeit und weniger lesbar:
...als dieses:
Plus, würden Sie normalerweise nicht tun SELECT * in einer realen app, geben Sie die Spalten auswählen.
Wenn Sie die Verbindung von zwei oder mehr Tabellen haben, müssen Sie das Präfix der Spalten mit dem Tabellennamen.
Wieder, Aliase für die Rettung...da würd ich lieber dieses:
...und nicht:
Bezüglich der Namen der Aliase:
Wenn nur zwei oder drei Tabellen beteiligt sind, ich verwende meistens einzelne Buchstaben als alias.
Wenn Sie nur zwei Tabellen mit ganz anderen Namen, es ist nicht schwer zu merken, dass "o" bedeutet "Aufträge" und "p" bedeutet "Produkte".
Wenn kurze Aliase sind wahrscheinlich zu Verwirrung führen (wie z.B. "p1" für "Volk" und "p2" für die "Produkte") ich benutzen mehr Aliase, aber noch nicht die ganzen Namen (etwas wie "neo" und "pro").