Erstellen Sie eine MySQL-Datenbank mit dem Zeichensatz UTF-8

142

Ich bin neu in MySQL und würde gerne wissen:

Wie kann ich eine Datenbank mit Zeichensatz erstellen, utf-8wie ich es in navicat getan habe?

create mydatabase;

... scheint einen Standardzeichensatz zu verwenden.

user3397998
quelle

Antworten:

232

Hinweis: Folgendes wird jetzt als bessere Praxis angesehen (siehe Antwort von bikeman868 ):

CREATE DATABASE mydatabase CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;

Ursprüngliche Antwort:

Versuche dies:

CREATE DATABASE mydatabase CHARACTER SET utf8 COLLATE utf8_general_ci;

Weitere Informationen finden Sie unter Datenbankzeichensatz und -sortierung im MySQL-Referenzhandbuch.

auf wiedersehen
quelle
1
MySQL utf8mb4ist das, was der Rest von uns nennt utf8. Also, was ist MySQL utf8? Es ist eine eingeschränkte Version von utf-8, die nur für eine Teilmenge der Zeichen funktioniert, aber für Dinge wie Emoji nicht funktioniert. Später fügten sie hinzu, utf8mb4was die korrekte Implementierung ist, aber MySQL muss abwärtskompatibel zu seinen alten Fehlern bleiben, weshalb eine neue Codierung hinzugefügt wurde, anstatt die alte zu reparieren. Alle neuen Datenbanken sollten verwenden utf8mb4.
Stijn de Witt
Wenn Sie das Kaninchenloch gehen mögen: COLLATE utf8mb4_unicode_520_cioder utf8mb4_0900_ai_cioder sogar länderspezifisches, zum Beispiel: utf8mb4_vi_0900_ai_ci. Für MariaDB 10.2.2+ haben Sie "Nopad" -Kollatierungen utf8mb4_unicode_520_nopad_ci. dev.mysql.com/doc/refman/8.0/de/charset-unicode-sets.html
Frank Forte
@Shellbye Erwägen Sie, Ihre Antwort zu aktualisieren, um zu erwähnen utf8mb4_0900_ai_ci. Scheint besser zu sein alsutf8mb4_unicode_ci
Manuel Jordan
63

Du solltest benutzen:

CREATE DATABASE mydb CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;

Beachten Sie, dass dies utf8_general_cikeine empfohlene Vorgehensweise mehr ist. Siehe die entsprechenden Fragen und Antworten:

Was ist der Unterschied zwischen utf8_general_ci und utf8_unicode_ci beim Stapelüberlauf?

bikeman868
quelle
Erwägen Sie, Ihre Antwort zu aktualisieren, um zu erwähnen utf8mb4_0900_ai_ci. Scheint besser zu sein alsutf8mb4_unicode_ci
Manuel Jordan