Mysql
 sql >> Base de données >  >> RDS >> Mysql

Comment créer et supprimer des bases de données et des tables dans MySQL


Introduction

MySQL conserve les données qu'il gère dans des tables et des bases de données. Les tables stockent les données dans des schémas prédéfinis de colonnes et de types de données. Les bases de données sont une structure qui peut contenir plusieurs tables, index, procédures et aider à définir une portée pour les privilèges, les personnalisations, etc.

Dans ce guide, nous allons vous montrer comment créer des tables et des bases de données dans MySQL. Nous vous montrerons comment gérer certaines fonctionnalités des deux structures, puis nous expliquerons comment les supprimer pour les nettoyer si vous n'en avez plus besoin.



Prérequis

Pour suivre ce guide, vous devrez vous connecter à un serveur MySQL avec un utilisateur disposant de privilèges administratifs en utilisant le mysql client de ligne de commande.

Si vous ne souhaitez pas vous connecter avec le root Compte administrateur MySQL, votre utilisateur aura besoin au moins du CREATE privilège d'effectuer les actions décrites dans ce guide.

Vous pouvez vérifier les privilèges disponibles de votre utilisateur en tapant :

SHOW GRANTS\G


Comment créer une nouvelle base de données ?

La première chose que nous allons montrer comment faire est de créer une nouvelle base de données. Dans MySQL, les bases de données contiennent des tables, des index, des procédures et d'autres ressources qui sont généralement liées à un seul projet. Chacune de ces ressources doit être créée dans une base de données, donc apprendre à créer une nouvelle base de données est une bonne première étape.

La syntaxe de base utilisée pour créer une nouvelle base de données ressemble à ceci :

CREATE DATABASE <db_name>;

Remplacez <db_name> avec le nom que vous souhaitez donner à votre base de données avant d'exécuter la commande. Cette commande créera une base de données avec le nom donné et définira l'utilisateur actuel comme propriétaire de la nouvelle base de données.

La base de données utilisera les valeurs par défaut du système pour le jeu de caractères, le classement et les propriétés de chiffrement :

  • ENSEMBLE DE PERSONNAGES : définit le jeu de caractères pour la nouvelle base de données. Il s'agit d'une option de localisation qui affecte les caractères considérés comme majuscules, minuscules et chiffres.
  • COLLER : définit le classement , ou l'ordre de tri de la base de données. Il s'agit d'une option de localisation qui détermine la façon dont les articles sont organisés lorsqu'ils sont commandés.
  • CHIFFRAGE : définit le chiffrement pour la nouvelle base de données. Il s'agit d'une option booléenne qui peut être soit 'Y' pour oui, soit 'N' pour non.

Vous pouvez trouver les jeux de caractères disponibles pour votre installation en tapant :

SHOW CHARACTER SET;

De même, vous pouvez trouver les classements disponibles en tapant :

SHOW COLLATION;

Si vous souhaitez spécifier une valeur autre que la valeur par défaut pour l'un de ces paramètres, vous pouvez le faire en les ajoutant après l'instruction de création principale comme ceci :

CREATE DATABASE <db_name>  CHARACTER SET = 'utf8mb4'  COLLATE = 'utf8mb4_0900_ai_ci'  ENCRYPTION = 'Y';

Pour suivre les exemples de ce guide, créez une base de données appelée school en utilisant les paramètres régionaux par défaut de votre instance et le jeu de caractères UTF8 :

CREATE DATABASE school CHARACTER SET = 'utf8mb4';

Cela créera votre nouvelle base de données en utilisant les spécifications que vous avez fournies.



Liste des bases de données existantes

Pour lister les bases de données disponibles sur votre serveur, tapez :

SHOW DATABASES;

Cela listera chacune des bases de données actuellement définies dans l'environnement :

+--------------------+  Database           |+--------------------+  information_schema |  mysql              |  performance_schema |  school             |  sys                |  testing            |+--------------------+6 rows in set (0.00 sec)

Vous pouvez vérifier que les paramètres que vous avez fournis ont été appliqués à la nouvelle school base de données en utilisant le SHOW CREATE DATABASE commande :

SHOW CREATE DATABASE school;

La sortie affichera la commande et les options utilisées pour créer la base de données, en complétant les options avec les valeurs par défaut appliquées :

+----------+----------------------------------------------------------------------------------------------------------------------------------+  Database | Create Database                                                                                                                  |+----------+----------------------------------------------------------------------------------------------------------------------------------+  school   | CREATE DATABASE `school` /*!40100 DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci */ /*!80016 DEFAULT ENCRYPTION='N' */ |+----------+----------------------------------------------------------------------------------------------------------------------------------+1 row in set (0.00 sec)


Comment passer à une autre base de données dans MySQL

Une fois votre base de données créée, vous pouvez l'utiliser de différentes manières.

La première option consiste à spécifier la base de données comme argument dans chaque commande que vous utilisez. Pour gagner du temps si vous exécutez plusieurs commandes liées aux objets de la base de données, vous pouvez également "basculer vers" ou "utiliser" la base de données pour définir votre nouvelle base de données comme contexte par défaut pour toutes les commandes liées à la base de données que vous exécuterez .

Pour passer à une autre base de données, tapez :

USE <db_name>;

Dans notre cas, nous pouvons passer à l'school base de données que nous avons créée en tapant :

USE school;


Créer des tables dans des bases de données

Une fois que vous avez créé une base de données, vous pouvez définir des tables et d'autres objets à l'intérieur pour stocker et gérer vos données. Dans MySQL, les tables se composent d'un nom de table, des définitions de colonne (celles-ci incluent à leur tour des noms, des types de données et des contraintes, entre autres) et des options de table.


Quelle est la syntaxe de CREATE TABLE de MySQL commande ?

La syntaxe de base pour créer des tables en utilisant CREATE TABLE de MySQL la commande ressemble à ceci :

CREATE TABLE <table_name> (    <column_name> <data_type> [<column_constraint>],    [<table_constraint>,]);

Nous pouvons décomposer le modèle de commande ci-dessus dans les composants suivants :

  • CREATE TABLE <table_name> :L'énoncé de création de base. Le <table_name> l'espace réservé doit être remplacé par le nom de la table que vous souhaitez utiliser.
  • <column_name> <data_type> :Définit une colonne de base dans le tableau. Le <column_name> placeholder doit être remplacé par le nom que vous souhaitez utiliser pour votre colonne. Le <data_type> spécifie le type de données MySQL de la colonne. Les données stockées dans la table doivent être conformes à la structure de colonne et aux types de données de colonne pour être acceptées.
  • <column_constraint> :les contraintes de colonne sont des contraintes facultatives qui ajoutent des exigences supplémentaires pour les données. Par exemple, vous pouvez exiger que les entrées ne soient pas des entiers nuls, uniques ou positifs.
  • <table_constraint> :Les contraintes de table sont similaires aux contraintes de colonne mais impliquent l'interaction de plusieurs colonnes. Par exemple, vous pourriez avoir une contrainte de table qui vérifie qu'un DATE_OF_BIRTH est avant DATE_OF_DEATH dans un tableau.


Comment créer des tables uniquement si elles n'existent pas déjà ?

Le comportement par défaut de MySQL est de déclencher une erreur si vous essayez de créer une table qui existe déjà. Cependant, l'option IF NOT EXISTS Une clause peut être ajoutée à l'instruction de création pour remplacer ce comportement.

Vous pouvez utiliser le IF NOT EXISTS clause en l'insérant dans la commande après le CREATE TABLE phrase mais avant le nom de la table :

CREATE TABLE IF NOT EXISTS table_name (    column_name TYPE [column_constraint],    [table_constraint,]);

Cela modifiera le comportement de la commande comme suit :Si le nom de table spécifié existe déjà, MySQL lèvera un avertissement au lieu d'une erreur. Le reste du comportement de la commande reste le même.



Création de tables dans les bases de données MySQL

Le modèle de commande donné ci-dessus est suffisant pour créer des tables de base. Pour approfondir notre exemple, nous allons créer deux tables dans notre school base de données. Une table s'appellera supplies et l'autre s'appellera teachers :

Dans les supplies table, nous inclurons les champs suivants :

  • identifiant : Un identifiant unique pour chaque type de fournitures scolaires.
  • nom : Le nom d'un élément scolaire spécifique.
  • description : Une courte description de l'article.
  • fabricant : Le nom du fabricant de l'article.
  • couleur : La couleur de l'article.
  • inventaire : Le nombre d'articles que nous avons pour un certain type de fournitures scolaires. Cela ne doit jamais être inférieur à 0.

Nous pouvons créer les supplies table avec les qualités ci-dessus en utilisant le SQL suivant :

CREATE TABLE supplies (  id INT AUTO_INCREMENT PRIMARY KEY,  name VARCHAR(255),  description VARCHAR(255),  manufacturer VARCHAR(255),  color VARCHAR(255),  inventory INT CHECK (inventory >= 0));

Cela créera les supplies table au sein de l'school base de données. La PRIMARY KEY La contrainte de colonne est une contrainte spéciale utilisée pour indiquer les colonnes qui peuvent identifier de manière unique les enregistrements dans la table. Ainsi, la contrainte spécifie que la colonne ne peut pas être nulle et doit être unique. MySQL crée des index pour les colonnes de clé primaire afin d'augmenter la vitesse d'interrogation.

Vérifiez que la nouvelle table est présente en tapant :

SHOW TABLES;
+------------------+  Tables_in_school |+------------------+  supplies         |+------------------+1 row in set (0.01 sec)

Vous pouvez vérifier que le schéma reflète votre définition en tapant :

SHOW CREATE TABLE supplies\G
*************************** 1. row ***************************       Table: suppliesCreate Table: CREATE TABLE `supplies` (  `id` int NOT NULL AUTO_INCREMENT,  `name` varchar(255) DEFAULT NULL,  `description` varchar(255) DEFAULT NULL,  `manufacturer` varchar(255) DEFAULT NULL,  `color` varchar(255) DEFAULT NULL,  `inventory` int DEFAULT NULL,  PRIMARY KEY (`id`),  CONSTRAINT `supplies_chk_1` CHECK ((`inventory` >= 0))) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci1 row in set (0.00 sec

Les colonnes, les types de données et les contraintes que nous avons spécifiés sont présents dans la sortie, bien que l'ordre et l'affichage puissent être différents.

Ensuite, créez un teachers table. Dans ce tableau, les colonnes suivantes doivent être présentes :

  • identifiant  :Un numéro d'identification d'employé unique.
  • prénom :Le prénom de l'enseignant.
  • nom_de_famille :Nom de famille de l'enseignant.
  • sujet  :La matière que l'enseignant est engagé pour enseigner.
  • grade_level  :le niveau scolaire des élèves pour lesquels l'enseignant est embauché.

Créer les teachers table avec le schéma ci-dessus avec le SQL suivant :

CREATE TABLE teachers (  id INT AUTO_INCREMENT PRIMARY KEY,  first_name VARCHAR(255),  last_name VARCHAR(255),  subject VARCHAR(255),  grade_level INT);


Comment créer des tables avec des clés primaires et des clés étrangères

Vous pouvez trouver des informations sur la création de tables avec des clés primaires et étrangères dans certains de nos autres guides MySQL. Les clés primaires et les clés étrangères sont les deux types de contraintes de base de données dans MySQL.

Une clé primaire est une colonne ou une colonne spéciale dont l'unicité est garantie sur les lignes d'une même table. Toutes les clés primaires peuvent être utilisées pour identifier de manière unique une ligne spécifique. Les clés primaires garantissent non seulement que chaque ligne a une valeur unique pour les colonnes de clé primaire, elles garantissent également qu'aucune ligne ne contient NULL valeurs pour cette colonne. Souvent, la clé primaire de MySQL utilise le format suivant pour spécifier une clé primaire d'incrémentation automatiquement attribuée :id INT AUTO_INCREMENT PRIMARY KEY .

Les clés étrangères sont un moyen de s'assurer qu'une ou plusieurs colonnes d'une table correspondent aux valeurs contenues dans une autre table. Cela permet d'assurer l'intégrité référentielle entre les tables.




Comment afficher les tables dans MySQL

Dans MySQL, vous pouvez répertorier les tables de différentes manières en fonction des informations que vous recherchez.

Si vous souhaitez voir quelles tables sont disponibles dans votre base de données, tapez :

SHOW TABLES;
+------------------+  Tables_in_school |+------------------+  supplies         |  teachers         |+------------------+2 rows in set (0.00 sec)

Vous pouvez également vérifier que le schéma de la table correspond à vos spécifications :

DESCRIBE teachers;
+--------------+--------------+------+-----+---------+----------------+  Field        | Type         | Null | Key | Default | Extra          |+--------------+--------------+------+-----+---------+----------------+  id           | int          | NO   | PRI | NULL    | auto_increment |  name         | varchar(255) | YES  |     | NULL    |                |  description  | varchar(255) | YES  |     | NULL    |                |  manufacturer | varchar(255) | YES  |     | NULL    |                |  color        | varchar(255) | YES  |     | NULL    |                |  inventory    | int          | YES  |     | NULL    |                |+--------------+--------------+------+-----+---------+----------------+6 rows in set (0.00 sec)

Les teachers table semble correspondre à notre définition.



Comment changer de table avec ALTER TABLE commande

Si vous avez besoin de changer le schéma d'une table existante dans MySQL, vous pouvez utiliser le ALTER TABLE commande. Le ALTER TABLE La commande est très similaire à la commande CREATE TABLE commande, mais fonctionne sur une table existante.


Modifier la syntaxe du tableau

La syntaxe de base pour modifier des tables dans MySQL ressemble à ceci :

ALTER TABLE <table_name> <change_command> <change_parameters>;

Le <change_command> indique le type exact de modification que vous souhaitez apporter, qu'il s'agisse de définir différentes options sur la table, d'ajouter ou de supprimer des colonnes ou de modifier des types ou des contraintes. Le <change_parameters> une partie de la commande contient toute information supplémentaire dont MySQL a besoin pour effectuer la modification.



Ajouter des colonnes aux tableaux

Vous pouvez ajouter une colonne à une table MySQL avec le ADD changer de commande. Les paramètres de modification incluront le nom de la colonne, le type et les options, tout comme vous les spécifiez dans le CREATE TABLE commande.

Par exemple, pour ajouter une colonne appelée missing_column du text tapez dans une table appelée some_table , vous taperiez :

ALTER TABLE some_table ADD missing_column text;


Supprimer des colonnes des tableaux

Si, à la place, vous souhaitez supprimer une colonne existante, vous pouvez utiliser le DROP COLUMN commande à la place. Vous devez spécifier le nom de la colonne que vous souhaitez supprimer en tant que paramètre de modification :

ALTER TABLE some_table DROP COLUMN useless_column;


Changer le type de données d'une colonne

Pour changer le type de données d'une colonne, vous pouvez utiliser ALTER COLUMN modifier la commande avec le MODIFY COLUMN commande de colonne. Les paramètres de ce contexte incluent le nom de la colonne et son nouveau type :

ALTER TABLE resident MODIFY COLUMN id INT;


Autres changements de tableau

De nombreux autres types de modifications peuvent être réalisés avec ALTER TABLE commande. Pour plus d'informations sur les options disponibles, consultez la documentation officielle de MySQL pour ALTER TABLE .




Supprimer les tableaux

Si vous souhaitez supprimer une table, vous pouvez utiliser le DROP TABLE Instruction SQL. Cela supprimera le tableau ainsi que toutes les données qui y sont stockées.

La syntaxe de base ressemble à ceci :

DROP TABLE <table_name>;

Cela supprimera la table si elle existe et générera une erreur si le nom de la table n'existe pas.

Si vous souhaitez supprimer la table si elle existe et ne rien faire si elle n'existe pas, vous pouvez inclure le IF EXISTS qualificatif dans l'instruction :

DROP TABLE IF EXISTS <table_name>;

Les tables qui ont des dépendances sur d'autres tables ou objets ne peuvent pas être supprimées par défaut tant que ces dépendances existent.

Supprimer les supplies tableau que nous avons créé précédemment en tapant :

DROP TABLE supplies;

Nous garderons les teachers base de données pour démontrer que l'instruction de suppression des bases de données supprime également tous les objets enfants tels que les tables.



Supprimer des bases de données

La DROP DATABASE indique à MySQL de supprimer la base de données spécifiée. La syntaxe de base ressemble à ceci :

DROP DATABASE <database_name>;

Remplacez le <database_name> espace réservé avec le nom de la base de données que vous souhaitez supprimer. Cela supprimera la base de données si elle est trouvée. Si la base de données est introuvable, une erreur se produit :

DROP DATABASE some_database;
ERROR 1008 (HY000): Can't drop database 'some_database'; database doesn't exist

Si vous souhaitez supprimer la base de données si elle existe et ne rien faire autrement, incluez l'option IF EXISTS choix :

DROP DATABASE IF EXISTS some_database;
Query OK, 0 rows affected, 1 warning (0.00 sec)

Cela supprimera la base de données ou ne fera rien si elle est introuvable.

Pour supprimer l'school base de données que nous avons utilisée dans ce guide, répertoriez les bases de données existantes sur votre système :

SHOW DATABASES;
+--------------------+  Database           |+--------------------+  information_schema |  mysql              |  performance_schema |  school             |  sys                |  testing            |+--------------------+6 rows in set (0.00 sec)

Supprimer l'school base de données avec la commande suivante :

DROP DATABASE school;

Cela supprimera l'school base de données avec les teachers table définie à l'intérieur.



Conclusion

Cet article a couvert les bases de la création et de la suppression de bases de données et de tables avec MySQL. Voici quelques-unes des commandes les plus élémentaires requises pour configurer un système de base de données et définir la structure de vos données.

Comme mentionné précédemment, les instructions SQL couvertes dans ce tutoriel MySQL, en particulier le CREATE TABLE déclaration, de nombreux paramètres supplémentaires peuvent être utilisés pour modifier le comportement du système. Vous pouvez en savoir plus à ce sujet en consultant la documentation officielle de MySQL.