2010-01-25 3 views
14

in MySQL 5.x Was ist der Unterschied, wenn ich so etwas tun:Erstellen von MySQL-Tabelle mit expliziten Standard-Zeichensatz, was passiert, wenn ich nicht?

CREATE TABLE aTable (
    id      BIGINT NOT NULL AUTO_INCREMENT PRIMARY KEY, 
    aNumber   bigint(20) DEFAULT NULL 
) ENGINE=InnoDB DEFAULT CHARACTER SET=utf8; 

mit diesem:

CREATE TABLE aTable (
    id      BIGINT NOT NULL AUTO_INCREMENT PRIMARY KEY, 
    aNumber   bigint(20) DEFAULT NULL 
) ENGINE=InnoDB CHARACTER SET=utf8; 

Hinweis ich nicht den Charakter als Standard in der ersten liege angibt. Ich konnte nichts in den mysql Dokumenten finden.

+4

Bitte beachten Sie, dass der 'utf8' Zeichensatz von MySQL fehlerhaft ist. [Verwenden Sie MySQL 'utf8mb4', wenn Sie volle Unicode-Unterstützung wünschen] (https://stijndewitt.wordpress.com/2015/06/15/use-mysql-utf8mb4-if-you-want-full-unicode-support/). –

Antwort

19

Das Wort DEFAULT ist dort optional - also sind die beiden äquivalent, d. H. Sie setzen den Standardzeichensatz für die Tabelle.

Siehe die MySQL-Dokumentation für CREATE TABLE. Hier ist der relevante Bit:

table_option: 
    ENGINE [=] engine_name 
    ... other options ... 
    | [DEFAULT] CHARACTER SET [=] charset_name 
    ... more options ... 

du den SHOW CREATE TABLE Befehl bestätigen können.

9

In MySQL gibt es vier Standardeinstellungen: Server, Datenbank, Tabelle und Spalte. Mit den Standardeinstellungen auf niedrigerer Ebene können Sie höhere Standardeinstellungen überschreiben.

Wenn Sie eine Tabelle ändern, deren Standardzeichensatz auf eine andere als die von der Datenbank festgelegte festgelegt ist, überschreibt der Tabellenstandard den Standardwert der Datenbank.

+0

Upvote für die Erklärung der vier Ebenen. Ich hatte Datenbank- und Spaltensatz, aber keine Tabelle. Vielen Dank! – HoldOffHunger

Verwandte Themen