Mahlzeit Ilja,
das sehe ich grundsätzlich anders, ich bin der meinung, wenn man es gleich richtig vermittelt, dann haben es auch anfänger leichter.
Richtig. Aber dieses "gleich richtig vermitteln" sollte IMHO nicht in einem Forum, sondern in einem entsprechenden Tutorial o.ä. erfolgen, in dem dann auch eingehend die Vor- und Nachteile der Verwendung von "SELECT *" behandelt werden.
In einem Forum kann man im Prinzip gerade Anfängern, die eben *nicht* um die Schwierigkeiten und Probleme von "SELECT *" wissen, sondern nur die schnelle und einfache Verwendung sehen, nur mitteilen, dass "SELECT *" selten eine gute Idee ist (zumindest, wenn entsprechende Abfragen fest in irgendwelchen Programmcode eingebaut werden - aber dabei geht es doch hier in den meisten Fällen?!) und dass sie sich doch bitte darüber informieren mögen.
SELECT * hat viele gute einsatzmöglichkeiten, adhoc-abfragen, views, etc. und wenn ich bedenke, wie oft ich adhoc abfragen jeden tag benötige, auch bei abfragen mit joins, würde ich mal bestreiten, dass SELECT * wesentlich weniger sinnvoll eingesetzt werden kann.
Sicher, ich benutzte "SELECT *" auch jeden Tag mindestens ein Dutzend mal, um "mal eben schnell" im PL/SQL-Developer in eine Tabelle/View hineinzuschauen oder um komplexere Abfragen zu entwickeln.
In den (späteren Programm-)Code aber übernehme ich "SELECT *" aus Prinzip fast niemals - ganz einfach weil ich nicht weiß, ob sich nicht irgendwann in der Zukunft an den Datenstrukturen noch etwas ändert, ob irgendwann jemand meine Abfragen erweitert oder umbaut usw.
ich denke, was deldfix versucht ist, dass SELECT * ein wenig aus der schmudel-ecke heraus zu bekommen und es als ganz normales werkzeug zu sehen, das täglich seinen einsatz hat. und dabei will ich deldfix unterstützen.
In einer Schmuddelecke hat es ja auch nichts zu suchen - es ist nur ein Werkzeug, das im produktiven Einsatz mit Bedacht gewählt werden sollte.
Wie oft hatten wir hier schon Anfänger, die mit mehr oder weniger hilfreichen Problembeschreibungen ihrer Verzweiflung Luft machten, weil "die Datenbank nicht funzt" - und letztendlich stellte sich dabei oft genug heraus, dass sie ein "SELECT *" auf relativ komplexe Konstruktionen losgelassen haben, und ...
a) ... MySQL trotz Aggregatsfunktionen nicht gemeckert hat, aber einfach *irgendwas* zurückgeliefert hat und nicht die erhofften Daten,
b) ... es Probleme mit (impliziten) JOINs (ohne Tabellenaliase) gab, da bestimmte Spalten in mehrere Tabellen gleich hießen,
c) ... sich wunderten, warum "der Browser so lange fürs Laden braucht" - der aber gar nichts dafür konnte, weil erstmal x-Hunderttausend komplette Kundendatensätze (mit Adresse, Geburtsdatum der Oma, Schuhgröße des Nachbarn usw.) vom Datenbankserver zum Webserver geschoben wurden,
d) ...
Da nehme ich mir einfach mal heraus, wenn ich irgendwo ein "SELECT *" sehe und mir auffällt, dass es sich beim Fragenden und/oder derart Antwortenden *nicht* um einen "alten Hasen" handelt (von dem ich erwarte, dass er weiß, was er tut), darauf hinzuweisen, dass "'SELECT *' selten eine gute Idee ist".
MfG,
EKKi
sh:( fo:| ch:? rl:( br:> n4:~ ie:% mo:} va:) de:] zu:) fl:{ ss:) ls:& js:|