13.1.12 Déclaration CREATE DATABASE
CREATE {DATABASE | SCHEMA} db_name ...create_option: { CHARACTER SET charset_name | COLLATE collation_name | ENCRYPTION {'Y' | 'N'}}
CREATE DATABASE
crée une base de données avec le nom donné. Pour utiliser cette instruction, vous devez disposer du privilège CREATE
pour la base de données. CREATE SCHEMA
est un synonyme de CREATE DATABASE
.
Une erreur se produit si la base de données existe et que vous n’avez pas spécifié IF NOT EXISTS
.
CREATE DATABASE
n’est pas autorisé dans une session qui a une déclaration LOCK TABLES
active.
Chaque create_option
spécifie une caractéristique de base de données. Les caractéristiques de la base de données sont stockées dans le dictionnaire de données.
-
L’option
CHARACTER SET
spécifie le jeu de caractères par défaut de la base de données. L’optionCOLLATE
spécifie la collation par défaut de la base de données. Pour plus d’informations sur les noms des jeux de caractères et des collations, consultez le chapitre 10, Jeux de caractères, collations, Unicode.Pour voir les jeux de caractères et les collations disponibles, utilisez respectivement les instructions
SHOW CHARACTER SET
etSHOW COLLATION
. Voir la section 13.7.7.3, « Déclaration SHOW CHARACTER SET », et la section 13.7.7.4, « Déclaration SHOW COLLATION ». -
L’option
ENCRYPTION
, introduite dans MySQL 8.0.16, définit le chiffrement par défaut de la base de données, qui est hérité par les tables créées dans la base de données. Les valeurs autorisées sont'Y'
(cryptage activé) et'N'
(cryptage désactivé). Si l’optionENCRYPTION
n’est pas spécifiée, la valeur de la variable systèmedefault_table_encryption
définit le cryptage de la base de données par défaut. Si la variable systèmetable_encryption_privilege_check
est activée, le privilègeTABLE_ENCRYPTION_ADMIN
est nécessaire pour spécifier un paramètre de chiffrement par défaut différent du paramètredefault_table_encryption
. Pour plus d’informations, voir Définir un chiffrement par défaut pour les schémas et les tablespaces généraux.
Une base de données dans MySQL est implémentée comme un répertoire contenant des fichiers qui correspondent aux tables de la base de données. Comme il n’y a pas de tables dans une base de données lors de sa création initiale, l’instruction CREATE DATABASE
crée uniquement un répertoire sous le répertoire de données MySQL. Les règles relatives aux noms de bases de données autorisés sont indiquées dans la Section 9.2, « Noms d’objets de schéma ». Si le nom d’une base de données contient des caractères spéciaux, le nom du répertoire de la base de données contient des versions codées de ces caractères, comme décrit dans la Section 9.2.4, « Mapping of Identifiers to File Names ».
La création d’un répertoire de base de données en créant manuellement un répertoire sous le répertoire de données (par exemple, avec mkdir) n’est pas prise en charge dans MySQL 8.0.
Lorsque vous créez une base de données, laissez le serveur gérer le répertoire et les fichiers qu’il contient. Manipuler directement les répertoires et les fichiers de la base de données peut provoquer des incohérences et des résultats inattendus.
MySQL n’a pas de limite sur le nombre de bases de données. Le système de fichiers sous-jacent peut avoir une limite sur le nombre de répertoires.
Vous pouvez également utiliser le programme mysqladmin pour créer des bases de données. Voir la section 4.5.2, « mysqladmin – un programme d’administration du serveur MySQL ».