Cree una base de datos MySQL con el juego de caracteres UTF-8

142

Soy nuevo en MySQL y me gustaría saber:

¿Cómo puedo crear una base de datos con charset utf-8como hice en navicat?

create mydatabase;

... parece estar usando algún tipo de juego de caracteres predeterminado.

user3397998
fuente

Respuestas:

233

Nota: Lo siguiente ahora se considera una mejor práctica (ver la respuesta de bikeman868 ):

CREATE DATABASE mydatabase CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;

Respuesta original:

Prueba esto:

CREATE DATABASE mydatabase CHARACTER SET utf8 COLLATE utf8_general_ci;

Para obtener más información, consulte Conjunto de caracteres de la base de datos y clasificación en el manual de referencia de MySQL

adiós
fuente
1
MySQL utf8mb4es lo que el resto de nosotros llamamos utf8. Entonces, ¿qué es MySQL utf8que preguntas? Es una versión limitada de utf-8 que solo funciona para un subconjunto de los personajes pero falla para cosas como emoji. Más tarde agregaron utf8mb4cuál es la implementación correcta, pero MySQL debe ser compatible con sus antiguos errores, por eso se agregó una nueva codificación en lugar de corregir la anterior. Todas las bases de datos nuevas deben usar utf8mb4.
Stijn de Witt
Si quieres ir por la madriguera: COLLATE utf8mb4_unicode_520_cio utf8mb4_0900_ai_cio incluso específica para la localización, por ejemplo: utf8mb4_vi_0900_ai_ci. Para MariaDB 10.2.2+, tiene intercalaciones "nopad" utf8mb4_unicode_520_nopad_ci. dev.mysql.com/doc/refman/8.0/en/charset-unicode-sets.html
Frank Forte
@shellbye Considere actualizar su respuesta para mencionarla utf8mb4_0900_ai_ci. Parece que es mejor queutf8mb4_unicode_ci
Manuel Jordan
64

Deberías usar:

CREATE DATABASE mydb CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;

Tenga en cuenta que utf8_general_ciya no se recomienda la mejor práctica. Vea las preguntas y respuestas relacionadas:

¿Cuál es la diferencia entre utf8_general_ci y utf8_unicode_ci en Stack Overflow?

bikeman868
fuente
Considere actualizar su respuesta para mencionarla utf8mb4_0900_ai_ci. Parece que es mejor queutf8mb4_unicode_ci
Manuel Jordan