Mysql - Sentencia para crear base de datos si no existe

Según la documentación oficial esta es la estructura:

CREATE DATABASE [IF NOT EXISTS] database_name [CHARACTER SET charset_name] [COLLATE collation_name]

Yo uso estas dos formas:

-- DROP DATABASE nombre_de_bd; -- 1 CREATE DATABASE IF NOT EXISTS `nombre_de_bd` /*!40100 DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci*/; -- 2 CREATE DATABASE IF NOT EXISTS `nombre_de_bd` CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;

Preferiblemente la número dos por simpleza.

/*!40100...*/, sentencia 1, significa que las versiones de mysql 4.1.0 o posteriores podrán interpretar esta instrucción. Luego, si ejecutas 2 en una bd menor a la 4.1 daría error.

La codificación

Es un caso peculiar de mysql. Lo que en otros sistemas se asume que el utf8 a secas es el estandar universal de codificación, aqui no.
utf8 es una codificación de caracteres propietarios.
En pocas palabras. utf8mb4 es el equivalente de mysql (mariadb) al utf8 universal.

  • utf8: cada caracter se codifíca en 1 byte en mysql. En otros motores o tecnologías se usan 4 bytes
  • utf8mb4: cada caracter se codifica en 4 bytes

Autor: Eduardo A. F.
Publicado: 27-03-2021 19:23