MySQL Certification Guide Praxis Qn - Views' Spaltennamen
Frage
Die Frage ist
Which of the following methods for providing explicit names for the columns in a view work? a. Include a column list b. Provide column aliases in the view SELECT statement c. Rename the columns when you select from the view
Antwort
a. Works: Include a column list b. Works: Provide column aliases in the view SELECT statement c. Does not work: Rename the columns when you select from the view
in Bezug auf (c), was sie durch „die Spalten umbenennen, wenn Sie aus der Sicht wählen Sie“ bedeuten kann?
Lösung
Ich denke, die Frage in der Zertifizierungsführung schlecht formuliert. Sie können expliziten Namen Spalten geben, wenn Sie aus einer Ansicht aus, und das funktioniert:
CREATE VIEW MyView AS SELECT a, b, c FROM MyTable;
SELECT a AS d, b AS e, c AS f FROM MyView;
Das Problem ist nicht mit Aliasnamen Spalten explizit geben. Hier ist das Problem: Wenn man sich darauf verlassen, anstatt die Ansicht mit unterschiedlichen Spaltennamen definiert, und die Aussicht besteht aus einem join, so dass die Spaltennamen nicht eindeutig sind, Sie laufen in Schwierigkeiten:
CREATE VIEW MyView AS
SELECT m.a, m.b, m.c, o.a, o.b, o.c
FROM MyTable m JOIN OtherTable o;
Dies ist keine gültige Ansicht, weil in der Sichtdefinition, alle Spaltennamen unterscheiden müssen. Zum Beispiel würden Sie mehrdeutige Ergebnisse erhalten, wenn Sie die Ansicht Abfrage:
SELECT a FROM MyView;
Ist dies die erste a
Spalte oder die zweite a
Spalte wählen?
So haben Sie eine bestimmte Gruppe von Spaltennamen muss in der Sichtdefinition , es ist nicht genug, um sie verschieden zu machen, wie Sie die Ansicht abfragen.
Dies ist der Grund, warum ich die Zertifizierung Führungs Frage denken war schlecht formuliert. Es geht nicht um Spalten explizit umbenennen, es geht darum, sicherzustellen, dass die Spalten der Ansicht haben unterschiedliche Namen. Dies ist ein häufiger Grund für die Umbenennung Spalten, also wahrscheinlich das ist, warum die Person, die Frage schrieb es auf diese Weise zu schreiben.
So oder die andere in der Frage erwähnten Techniken kann die Mehrdeutigkeit beheben:
CREATE VIEW MyView (a, b, c, d, e, f) AS
SELECT m.a, m.b, m.c, o.a, o.b, o.c
FROM MyTable m JOIN OtherTable o;
oder
CREATE VIEW MyView AS
SELECT m.a, m.b, m.c, o.a AS d, o.b AS e, o.c AS f
FROM MyTable m JOIN OtherTable o;
In beiden Fällen erhalten Sie die aliased Spalten:
SELECT * FROM MyView; -- returns result with columns a, b, c, d, e, f
Andere Tipps
Mit dem „umbenennen, wenn Sie“ bedeuten sie sicher so etwas wie SELECT a AS b FROM theview
usw. Der Grund ist es nicht für die gegebene Aufgabe „expliziten Namen Bereitstellung für die Spalten“ funktioniert ist, dass es braucht nicht explizit zu sein, ohne jeden Zweifel ihrer a
in die Ansicht für Sie „umbenennen“ ... wenn Sie bereits durch Verfahren (a) oder (b) [[in diesem Fall können Sie auch „umbenennen“ auf diese Weise eindeutig gemacht habe, aber das ist ziemlich viel zweitrangig -.)]]