2010-01-25 10 views
14

In 5.x mysql cosa è la differenza se faccio qualcosa di simile:Creazione della tabella mysql con set di caratteri di default esplicito, cosa succede se non lo faccio?

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

con questo:

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

Avviso Non sto specificando il set di caratteri di default nel primo. Non ho trovato nulla nei documenti mysql.

+4

Si noti che il set di caratteri 'utf8' di MySQL è danneggiato. [Usa MySQL 'utf8mb4' se vuoi il completo supporto Unicode] (https://stijndewitt.wordpress.com/2015/06/15/use-mysql-utf8mb4-if-you-want-full-unicode-support/). –

risposta

19

La parola DEFAULT è opzionale lì - quindi i due sono equivalenti, cioè impostano il set di caratteri predefinito per la tabella.

Vedere la documentazione MySQL per CREATE TABLE. Ecco il bit rilevante:

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

È possibile confermare questo utilizzando il comando SHOW CREATE TABLE.

9

Ci sono 4 livelli di impostazioni predefinite in MySQL: server, database, tabella e colonna. Usando i valori predefiniti di livello più basso, è possibile ignorare i valori predefiniti della leva superiore.

Se si modifica una tabella con il set di caratteri predefinito impostato su un valore diverso da quello impostato dal database, la tabella predefinita sostituirà il valore predefinito del database.

+0

Voto positivo per la spiegazione dei quattro livelli. Avevo set di database e colonne, ma non tabella. Grazie! – HoldOffHunger

Problemi correlati