Crie um banco de dados MySQL com charset UTF-8

142

Eu sou novo no MySQL e gostaria de saber:

Como posso criar um banco de dados com charset utf-8como fiz no navicat?

create mydatabase;

... parece estar usando algum tipo de conjunto de caracteres padrão.

user3397998
fonte

Respostas:

232

Nota: Agora, a seguir, é considerada uma prática melhor (consulte a resposta de bikeman868 ):

CREATE DATABASE mydatabase CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;

Resposta original:

Tente o seguinte:

CREATE DATABASE mydatabase CHARACTER SET utf8 COLLATE utf8_general_ci;

Para obter mais informações, consulte Conjunto de caracteres do banco de dados e agrupamento no Manual de Referência do MySQL.

shellbye
fonte
1
MySQL utf8mb4é o que o resto de nós chama utf8. Então, o que é o MySQL que utf8você pergunta? É uma versão limitada do utf-8 que funciona apenas para um subconjunto de caracteres, mas falha em itens como emoji. Mais tarde, eles adicionaram utf8mb4qual é a implementação correta, mas o MySQL precisa ser compatível com os erros antigos, e é por isso que adicionou uma nova codificação em vez de corrigir a antiga. Todos os novos bancos de dados devem usar utf8mb4.
Stijn de Witt
Se você quer ir para baixo o coelho: COLLATE utf8mb4_unicode_520_ciou utf8mb4_0900_ai_ciou mesmo local específico, por exemplo: utf8mb4_vi_0900_ai_ci. Para MariaDB 10.2.2+, você tem "nopad" agrupamentos utf8mb4_unicode_520_nopad_ci. dev.mysql.com/doc/refman/8.0/en/charset-unicode-sets.html
Frank Forte
@shellbye Considere atualizar sua resposta para mencionar utf8mb4_0900_ai_ci. Parece ser melhor queutf8mb4_unicode_ci
Manuel Jordan
63

Você deveria usar:

CREATE DATABASE mydb CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;

Observe que utf8_general_cinão é mais a melhor prática recomendada. Veja as perguntas e respostas relacionadas:

Qual é a diferença entre utf8_general_ci e utf8_unicode_ci no Stack Overflow.

bikeman868
fonte
Considere atualizar sua resposta para mencionar utf8mb4_0900_ai_ci. Parece ser melhor queutf8mb4_unicode_ci
Manuel Jordan