ich möchte mir in MySQL Tabellenspalten anzeigen lassen laut Handbuch gibt
es bitten sich dafür folgende drei SQL-Befehle an:
EXPLAIN tbl_name
SHOW COLUMNS FROM tbl_name
DESCRIBE tbl_name
was davon ist jetzt "Standard-SQL" bzw. bittet die größt mögliche
Kompatibilität mit anderen Datenbanken.
In meinen Kopf herrscht im Moment ziemliche Verwirrung bezüglich der
SQL-Standarts und deren Umsetzungen in MySQL und anderen Datenbanken. Würde
mich sehr freuen wenn ihr beim Entwirren helfen könntet!
Mit freundlichen Grüßen
Albert
Oje, im Bereich DDL gibt's die gröten Unterschiede, bei DML schaut's
aber besser aus. Lies dir mal die Seite von Troels Arvin durch, das ist
die beste DBMS-Vergleichsseite:
http://troels.arvin.dk/db/rdbms/#cli-table_description
Weniger bekannte DBMS halten sich übrigens eher besser an den Standard
Dieter
Du meinst sicherlich keine Fahne (= Standarte), sondern eine Norm (=
Standard), oder?
> ich möchte mir in MySQL Tabellenspalten anzeigen lassen laut Handbuch gibt
> es bitten sich dafür folgende drei SQL-Befehle an:
>
bitten?
> EXPLAIN tbl_name
>
> SHOW COLUMNS FROM tbl_name
>
> DESCRIBE tbl_name
>
Und nicht zu vergessen: INFORMATION_SCHEMA seit MySQL 5.0. Das ist m.E.
die Variante, die am ehesten standard-konform ist, weil mit SQL-Mitteln
abzufragen.
> Albert Hermeling wrote:
Hallo Dieter,
>> was davon ist jetzt "Standard-SQL" bzw. bittet die größt mögliche
>> Kompatibilität mit anderen Datenbanken.
>>
>> In meinen Kopf herrscht im Moment ziemliche Verwirrung bezüglich der
>> SQL-Standarts und deren Umsetzungen in MySQL und anderen Datenbanken.
>> Würde mich sehr freuen wenn ihr beim Entwirren helfen könntet!
>
> Oje, im Bereich DDL gibt's die gröten Unterschiede, bei DML schaut's
> aber besser aus. Lies dir mal die Seite von Troels Arvin durch, das ist
> die beste DBMS-Vergleichsseite:
>
> http://troels.arvin.dk/db/rdbms/#cli-table_description
>
> Weniger bekannte DBMS halten sich übrigens eher besser an den Standard
Danke für den Link. Nach dem ich mir den Text angeschaut habe bin ich zu den
Schluss gekommen "SHOW COLUMNS FROM tbl_name" anzuwenden wenn ich mit MySQL
arbeite. Wenn ich dann eine Andere DBMS nehme muss ich halt den SQL-Befehl
unter umständen neu schreiben.
Albert
Für Dein Ziel nach größtmöglicher Kompatibilität zum SQL-Standard ist
exakt das das Schlechteste, was Du machen kannst. Die Antwort von C.
Kirsch nicht gelesen oder nicht verstanden?
end
Andreas
--
Andreas Kretschmer
Linux - weil ich es mir wert bin!
GnuPG-ID 0x3FFF606C http://wwwkeys.de.pgp.net
Deutsche PostgreSQL User Group: http://pgug.de
doch, aber bisher klappt das ganz gut mit MySQL. ;)
Konkret dreht es sich um die von PDO unterstützten Datenbanken, da ich
nur eine Klasse hab für PDO mit einer Methode "getTablelist()". Werde
dann aber die Methode delegieren in eine "Treiberklasse" für jedes DBMS
das PDO unterstützt, allein schon wegen den verschiedenen DNS. Für alle
anderen DBMS außerhalb von PDO existieren dann eigene Klassen, die ihre
Methode dann selbst implementieren müssen.
Also ist für Individualität ausreichend Platz, derzeit reicht mir noch
die "Schmalspurlösung" für den Standard, der ja bei MySQL bisher
funktioniert. Rest kommt sobald Zeit ist.
--
Mit freundlichen Grüßen,
Christoph Herrmann
Du fragst also hier nach einer möglichst dicht am Standard liegenden
Möglichkeit, die Spaltennamen einer Tabelle abzufragen. Ich sage Dir
eine, und anschließend meinst Du, Deine ursprüngliche Frage sei
eigentlich ganz anders gemeint?
> Also ist für Individualität ausreichend Platz, derzeit reicht mir noch
> die "Schmalspurlösung" für den Standard, der ja bei MySQL bisher
> funktioniert. Rest kommt sobald Zeit ist.
>
Das von Dir präferierte SHOW COLUMNS FROM ist weder Teil von SQL-99 noch
kennt Oracle (10g) es. Wenn schon abweichend vom SQL-Standard, dann doch
wenigstens DESCRIBE TABLE - das scheinen ja noch ein paar andere Systeme
außer MySQL zu kennen.
Ähh sry, das ist ja gar nicht mein Thread hier... Die Ähnlichkeit hat
mich dazu verleitet es zu verwechseln... Bei mir ging es um
Tabellennamen... :) Sorry.
Aber keine Sorge, auch bei mir ging es um einen Standard. Nur dass
dieser anscheinend nicht in der Form existiert, dass man diesen für
jedes DBMS benutzen kann und man somit für individuelle Lösungen
Möglichkeiten bereit gestellt werden müssen.
Hallo Christoph,
danke das Du geantwortet hast :-)
> Andreas Kretschmer schrieb:
>> Für Dein Ziel nach größtmöglicher Kompatibilität zum SQL-Standard ist
>> exakt das das Schlechteste, was Du machen kannst. Die Antwort von C.
>> Kirsch nicht gelesen oder nicht verstanden?
Doch habe ich verstanden, und mich von der größtmöglichen Kompatibilität
verabschiedet. So wie Dieter Noeth schreibt gibt es im Bereich DDL die
größten Unterschiede. Wenn ich jetzt die Datenbank INFORMATION_SCHEMA
gebrauche, heißt das noch lange nicht das es immer funktioniert. Wenn ich
zum Beispiel eine MySQL Version vor 5.0 verwende stehe ich schon wider vor
den gleichen Problem.
Albert