Buat database MySQL dengan charset UTF-8

142

Saya baru mengenal MySQL dan ingin tahu:

Bagaimana saya bisa membuat database dengan charset utf-8seperti yang saya lakukan di navicat?

create mydatabase;

... tampaknya menggunakan beberapa jenis charset default.

pengguna3397998
sumber

Jawaban:

232

Catatan: Yang berikut ini sekarang dianggap sebagai praktik yang lebih baik (lihat jawaban bikeman868 ):

CREATE DATABASE mydatabase CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;

Jawaban asli:

Coba ini:

CREATE DATABASE mydatabase CHARACTER SET utf8 COLLATE utf8_general_ci;

Untuk informasi lebih lanjut, lihat Kumpulan dan Basis Data Karakter di Manual Referensi MySQL.

shellbye
sumber
1
MySQL utf8mb4adalah apa yang kita sebut utf8. Jadi apa yang utf8Anda minta MySQL ? Ini adalah versi terbatas utf-8 yang hanya berfungsi untuk subset karakter tetapi gagal untuk hal-hal seperti emoji. Kemudian mereka menambahkan utf8mb4implementasi mana yang benar, tetapi MySQL harus tetap kompatibel dengan kesalahan lama sehingga itulah sebabnya menambahkan pengkodean baru alih-alih memperbaiki yang lama. Semua database baru harus digunakan utf8mb4.
Stijn de Witt
Jika Anda ingin pergi ke lubang kelinci: COLLATE utf8mb4_unicode_520_ciatau utf8mb4_0900_ai_ciatau bahkan lokal yang spesifik, misalnya: utf8mb4_vi_0900_ai_ci. Untuk MariaDB 10.2.2+, Anda memiliki koleksi "nopad" utf8mb4_unicode_520_nopad_ci. dev.mysql.com/doc/refman/8.0/en/charset-unicode-sets.html
Frank Forte
@shellbye Pertimbangkan untuk memperbarui jawaban Anda untuk menyebutkan tentang utf8mb4_0900_ai_ci. Tampaknya lebih baik daripadautf8mb4_unicode_ci
Manuel Jordan
63

Kamu harus menggunakan:

CREATE DATABASE mydb CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;

Perhatikan bahwa utf8_general_cipraktik terbaik tidak lagi direkomendasikan. Lihat tanya jawab terkait:

Apa perbedaan antara utf8_general_ci dan utf8_unicode_ci pada Stack Overflow.

bikeman868
sumber
Pertimbangkan untuk memperbarui jawaban Anda untuk menyebutkan tentang utf8mb4_0900_ai_ci. Tampaknya lebih baik daripadautf8mb4_unicode_ci
Manuel Jordan