Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

SQL-Standart: Spalten einer Tabelle anzeigen

2,713 views
Skip to first unread message

Albert Hermeling

unread,
Mar 24, 2008, 4:22:29 AM3/24/08
to
Guten Morgen,

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

Dieter Noeth

unread,
Mar 24, 2008, 6:00:22 AM3/24/08
to
Albert Hermeling wrote:

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

Christian Kirsch

unread,
Mar 24, 2008, 6:31:00 AM3/24/08
to
Albert Hermeling schrieb:
> Guten Morgen,
>

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

unread,
Mar 24, 2008, 12:05:14 PM3/24/08
to
Dieter Noeth wrote:

> 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

Andreas Kretschmer

unread,
Mar 25, 2008, 4:02:42 AM3/25/08
to
begin Albert Hermeling schrieb:

> 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.

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

Christoph Herrmann

unread,
Mar 25, 2008, 4:46:04 AM3/25/08
to
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, 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

http://dragonprojects.de/

Christian Kirsch

unread,
Mar 25, 2008, 5:03:52 AM3/25/08
to
Christoph Herrmann schrieb:

> 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, aber bisher klappt das ganz gut mit MySQL. ;)
>

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.

Christoph Herrmann

unread,
Mar 25, 2008, 5:09:18 AM3/25/08
to
Christian Kirsch schrieb:

> 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?

Ä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.

Albert Hermeling

unread,
Mar 25, 2008, 12:26:37 PM3/25/08
to
Christoph Herrmann wrote:

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

0 new messages