Fondamentaux de la gestion des bases de données avec MySQL

MySQLBeginner
Pratiquer maintenant

Introduction

Dans ce laboratoire, nous explorerons les concepts fondamentaux de la gestion de bases de données en utilisant MySQL. Nous aborderons la création et la suppression de bases de données, la sélection de bases de données et la récupération de métadonnées. Ces compétences sont essentielles pour tous ceux qui travaillent avec des bases de données, des débutants aux développeurs expérimentés. À la fin de ce laboratoire, vous aurez une solide base dans les opérations de base des bases de données MySQL.

Objectifs d'apprentissage

En terminant ce laboratoire, vous serez en mesure de :

  • Créer et supprimer des bases de données en utilisant diverses méthodes
  • Sélectionner et basculer entre les bases de données
  • Récupérer des métadonnées importantes sur votre serveur MySQL et vos bases de données
  • Comprendre la sensibilité à la casse des noms de bases de données dans MySQL

Création et liste des bases de données

Dans cette étape, nous apprendrons à créer des bases de données et à lister celles qui existent déjà en utilisant le client en ligne de commande MySQL. Il s'agit d'une compétence fondamentale pour tout administrateur de base de données ou développeur.

Tout d'abord, ouvrons une fenêtre de terminal. Dans l'environnement LabEx, vous utiliserez un système Ubuntu Linux. Le terminal devrait déjà être ouvert, mais s'il ne l'est pas, vous pouvez l'ouvrir en cliquant sur l'icône du terminal.

Maintenant, lançons le client MySQL :

sudo mysql -u root

Dans la machine virtuelle (VM) LabEx, vous n'avez pas besoin d'entrer de mot de passe pour l'utilisateur root.

Capture d'écran du terminal du client MySQL

Une fois que vous êtes dans le client MySQL, vous verrez une invite qui ressemble à ceci : MariaDB [(none)]>. Cela indique que vous êtes connecté au serveur MariaDB (qui est une version dérivée de MySQL) mais que vous n'avez pas encore sélectionné de base de données spécifique.

Liste des bases de données disponibles

Commençons par lister les bases de données disponibles sur votre serveur MySQL :

SHOW DATABASES;

Vous devriez voir une sortie similaire à ceci :

MariaDB [(none)]> SHOW DATABASES;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| performance_schema |
| sys                |
+--------------------+
4 rows in set (0.000 sec)

Cette commande liste toutes les bases de données actuellement disponibles sur le serveur. Analysons ce que sont ces bases de données par défaut :

  • information_schema : Une base de données qui permet d'accéder aux métadonnées de la base de données.
  • mysql : La base de données système qui contient les informations de compte utilisateur et de privilèges.
  • performance_schema : Une base de données pour surveiller l'exécution du serveur MySQL à un niveau bas.
  • sys : Une base de données qui fournit un ensemble d'objets pour aider à interpréter les données collectées par le Performance Schema.

Création d'une base de données

Maintenant, créons une nouvelle base de données appelée 'Hello_World'. En MySQL, nous utilisons la commande CREATE DATABASE pour cela :

CREATE DATABASE Hello_World;

Après avoir exécuté cette commande, MySQL répondra avec :

Query OK, 1 row affected (0.000 sec)

Cela signifie que la base de données a été créée avec succès. Pour confirmer, listons à nouveau les bases de données :

SHOW DATABASES;

Vous devriez maintenant voir 'Hello_World' dans la liste :

MariaDB [(none)]> SHOW DATABASES;
+--------------------+
| Database           |
+--------------------+
| Hello_World        |
| information_schema |
| mysql              |
| performance_schema |
| sys                |
+--------------------+
5 rows in set (0.000 sec)

Super! Vous venez de créer votre première base de données.

Sensibilité à la casse des noms de bases de données

Un concept important à comprendre en MySQL est que les noms de bases de données sont sensibles à la casse. Cela signifie que 'Hello_World' et 'hello_world' sont considérés comme deux bases de données différentes. Illustrons cela :

CREATE DATABASE hello_world;
SHOW DATABASES;

Vous devriez maintenant voir à la fois 'Hello_World' et 'hello_world' dans la liste :

MariaDB [(none)]> CREATE DATABASE hello_world;
Query OK, 1 row affected (0.000 sec)

MariaDB [(none)]> SHOW DATABASES;
+--------------------+
| Database           |
+--------------------+
| Hello_World        |
| hello_world        |
| information_schema |
| mysql              |
| performance_schema |
| sys                |
+--------------------+
6 rows in set (0.000 sec)

Cela démontre que 'Hello_World' et 'hello_world' sont considérés comme deux bases de données distinctes. Dans vos conceptions de bases de données, il est généralement recommandé d'utiliser des conventions de nommage cohérentes pour éviter toute confusion. De nombreux développeurs préfèrent utiliser uniquement des lettres minuscules pour les noms de bases de données afin d'éviter les problèmes potentiels liés à la sensibilité à la casse.

Création de bases de données avec mysqladmin

Dans cette étape, nous explorerons une méthode alternative pour créer des bases de données en utilisant l'outil mysqladmin. Cet outil est une utilitaire en ligne de commande qui vous permet d'effectuer certaines opérations administratives sans entrer dans l'invite MySQL.

Tout d'abord, quittons le client MySQL. Vous pouvez le faire en tapant exit ou quit puis en appuyant sur Entrée :

exit

Maintenant que nous sommes de retour à l'invite de commande normale, utilisons mysqladmin pour créer une nouvelle base de données :

mysqladmin -u root -p create hello_world2

Lorsque vous êtes invité à entrer un mot de passe, appuyez simplement sur Entrée (rappelez-vous, dans la machine virtuelle LabEx, l'utilisateur root de MySQL n'a pas de mot de passe défini).

La commande mysqladmin que nous venons d'utiliser peut être décomposée comme suit :

  • -u root : Cela spécifie que nous nous connectons en tant qu'utilisateur root.
  • -p : Cela indique à mysqladmin de demander un mot de passe.
  • create : C'est l'opération que nous effectuons.
  • hello_world2 : C'est le nom de la base de données que nous créons.

Maintenant, reconnectons-nous au client MySQL pour vérifier que notre nouvelle base de données a été créée :

sudo mysql -u root

Une fois que vous êtes dans le client MySQL, listez les bases de données :

SHOW DATABASES;

Vous devriez voir 'hello_world2' dans la liste :

MariaDB [(none)]> SHOW DATABASES;
+--------------------+
| Database           |
+--------------------+
| Hello_World        |
| hello_world        |
| hello_world2       |
| information_schema |
| mysql              |
| performance_schema |
| sys                |
+--------------------+
7 rows in set (0.000 sec)

L'outil mysqladmin offre un moyen rapide de créer des bases de données directement depuis la ligne de commande, ce qui peut être utile pour les tâches de scripting et d'automatisation. Il est particulièrement pratique lorsque vous devez créer des bases de données dans le cadre d'un script plus important ou d'un processus automatisé.

Suppression de bases de données

Maintenant que nous avons créé plusieurs bases de données, apprenons à les supprimer. En gestion de bases de données, il est aussi important de savoir supprimer des bases de données que de les créer. Nous ne conserverons que la base de données 'Hello_World' et supprimerons les autres.

Suppression d'une base de données avec le client MySQL

Connectez-vous au client MySQL si vous n'y êtes pas déjà :

sudo mysql -u root

Maintenant, supprimons la base de données 'hello_world' :

DROP DATABASE hello_world;
SHOW DATABASES;

Vous devriez constater que 'hello_world' n'est plus dans la liste :

MariaDB [(none)]> DROP DATABASE hello_world;
Query OK, 0 rows affected (0.002 sec)

MariaDB [(none)]> SHOW DATABASES;
+--------------------+
| Database           |
+--------------------+
| Hello_World        |
| hello_world2       |
| information_schema |
| mysql              |
| performance_schema |
| sys                |
+--------------------+
6 rows in set (0.000 sec)

Notez bien : soyez extrêmement prudent lorsque vous utilisez la commande DROP DATABASE. Elle supprime définitivement la base de données et tout son contenu sans demander de confirmation. Dans un environnement de production, vous devriez généralement avoir des mesures de sécurité et des sauvegardes en place avant d'effectuer de telles opérations.

Suppression d'une base de données avec mysqladmin

Maintenant, utilisons mysqladmin pour supprimer la base de données 'hello_world2'. Cette méthode est considérée plus sûre car elle demande une confirmation avant de supprimer la base de données.

Quittez le client MySQL en tapant exit ou quit, puis exécutez la commande suivante dans votre terminal :

mysqladmin -u root -p drop hello_world2

Vous serez invité à confirmer l'action :

Enter password:
Dropping the database is potentially a very bad thing to do.
Any data stored in the database will be destroyed.

Do you really want to drop the 'hello_world2' database [y/N] y
Database "hello_world2" dropped

Tapez 'y' et appuyez sur Entrée pour confirmer. Cette étape de confirmation supplémentaire peut aider à éviter des suppressions accidentelles de bases de données.

Maintenant, reconnectez-vous au client MySQL et vérifiez que 'hello_world2' a été supprimée :

SHOW DATABASES;

Vous devriez voir :

MariaDB [(none)]> SHOW DATABASES;
+--------------------+
| Database           |
+--------------------+
| Hello_World        |
| information_schema |
| mysql              |
| performance_schema |
| sys                |
+--------------------+
5 rows in set (0.000 sec)

Nous avons réussi à nettoyer nos bases de données supplémentaires, ne laissant que celles dont nous avons besoin.

Sélection et utilisation de bases de données

Maintenant que nous avons créé et supprimé des bases de données, apprenons à sélectionner et à utiliser une base de données spécifique. Il s'agit d'une compétence cruciale, car la majorité de vos travaux dans MySQL impliquera d'opérer au sein d'une base de données spécifique.

Sélection d'une base de données

Pour sélectionner une base de données avec laquelle travailler, utilisez la commande USE suivie du nom de la base de données :

USE Hello_World;

Vous devriez voir :

Database changed

Cela indique que vous travaillez maintenant au sein de la base de données 'Hello_World'. Toutes les commandes que vous exécuterez par la suite seront exécutées dans le contexte de cette base de données, sauf si vous spécifiez autrement.

Liste des tables dans une base de données

Pour voir les tables de la base de données actuelle, utilisez la commande SHOW TABLES; :

SHOW TABLES;

Étant donné que nous n'avons pas encore créé de tables dans notre base de données 'Hello_World', vous verrez :

Empty set (0.00 sec)

Cela est normal pour une nouvelle base de données. Au fur et à mesure que vous créerez des tables, elles apparaîtront dans cette liste.

Passons à une autre base de données et listons ses tables pour voir comment cela fonctionne avec une base de données peuplée :

USE mysql;
SHOW TABLES;

Vous verrez une liste de tables dans la base de données système 'mysql' :

MariaDB [mysql]> USE mysql;
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A

Database changed
MariaDB [mysql]> SHOW TABLES;
+---------------------------+
| Tables_in_mysql           |
+---------------------------+
| column_stats              |
| columns_priv              |
| db                        |
| event                     |
| func                      |
| general_log               |
| global_priv               |
| gtid_slave_pos            |
| help_category             |
| help_keyword              |
| help_relation             |
| help_topic                |
| index_stats               |
| innodb_index_stats        |
| innodb_table_stats        |
| plugin                    |
| proc                      |
| procs_priv                |
| proxies_priv              |
| roles_mapping             |
| servers                   |
| slow_log                  |
| table_stats               |
| tables_priv               |
| time_zone                 |
| time_zone_leap_second     |
| time_zone_name            |
| time_zone_transition      |
| time_zone_transition_type |
| transaction_registry      |
| user                      |
+---------------------------+
31 rows in set (0.001 sec)

Cela montre comment basculer entre les bases de données et afficher leur contenu. La base de données 'mysql' contient des tables système que MySQL utilise pour gérer les autorisations, les comptes utilisateurs et d'autres données internes. Dans vos propres applications, vous créerez et gérerez vos propres tables au sein de vos bases de données personnalisées.

Récupération des métadonnées MySQL

Dans cette étape finale, nous explorerons comment récupérer différents types de métadonnées depuis MySQL. Les métadonnées sont des « données sur les données » - elles fournissent des informations sur le système de base de données lui-même, plutôt que sur les données stockées à l'intérieur. Ces informations peuvent être cruciales pour comprendre et gérer votre environnement MySQL.

Version du serveur

Pour obtenir la version du serveur MySQL, utilisez :

SELECT VERSION();

Vous verrez une sortie similaire à :

MariaDB [mysql]> SELECT VERSION();
+----------------------------------+
| VERSION()                        |
+----------------------------------+
| 10.6.12-MariaDB-0ubuntu0.22.04.1 |
+----------------------------------+
1 row in set (0.000 sec)

Ces informations sont utiles lorsque vous avez besoin de savoir quelles fonctionnalités sont disponibles dans votre version actuelle de MySQL, ou lors de la résolution de problèmes spécifiques à une version.

Base de données actuelle

Pour voir quelle base de données vous utilisez actuellement :

SELECT DATABASE();

La sortie affichera le nom de la base de données actuelle ou NULL si aucune base de données n'est sélectionnée :

MariaDB [mysql]> SELECT DATABASE();
+------------+
| DATABASE() |
+------------+
| mysql      |
+------------+
1 row in set (0.000 sec)

Cela peut être utile lorsque vous travaillez avec plusieurs bases de données et que vous avez besoin de confirmer dans laquelle vous opérez actuellement.

Utilisateur actuel

Pour voir l'utilisateur actuel :

SELECT USER();

Vous verrez une sortie comme :

MariaDB [mysql]> SELECT USER();
+----------------+
| USER()         |
+----------------+
| root@localhost |
+----------------+
1 row in set (0.000 sec)

Cela montre l'utilisateur MySQL avec lequel vous êtes connecté et l'hôte depuis lequel vous vous connectez. C'est utile pour vérifier vos autorisations actuelles et les détails de votre connexion.

État et variables du serveur

Pour afficher tous les indicateurs d'état du serveur :

SHOW STATUS;

Cette commande fournit une multitude d'informations sur l'état actuel du serveur MySQL, y compris divers compteurs et statistiques.

Pour afficher toutes les variables de configuration du serveur :

SHOW VARIABLES;

Cette commande vous montre comment votre serveur MySQL est configuré, y compris les paramètres d'utilisation de la mémoire, les limites de connexion et de nombreux autres paramètres.

Ces deux commandes produiront une sortie importante. Vous pouvez la parcourir dans le terminal, ou filtrer pour obtenir des informations spécifiques. Par exemple, pour voir les variables liées au pool de tampons :

SHOW VARIABLES LIKE '%buffer%';

Ces commandes fournissent des informations détaillées sur la configuration et l'état actuel de votre serveur MySQL. Comprendre ces métadonnées peut être crucial pour optimiser les performances, résoudre les problèmes et vous assurer que votre serveur est correctement configuré pour vos besoins.

Par exemple, vous pouvez utiliser SHOW STATUS pour vérifier le nombre de requêtes qui ont été exécutées :

SHOW STATUS LIKE 'Questions';

Cela pourrait vous donner une sortie comme :

MariaDB [mysql]> SHOW STATUS LIKE 'Questions';
+---------------+-------+
| Variable_name | Value |
+---------------+-------+
| Questions     | 15    |
+---------------+-------+
1 row in set (0.001 sec)

Cela vous indique combien de déclarations ont été exécutées par le serveur depuis son démarrage.

De même, vous pouvez utiliser SHOW VARIABLES pour vérifier des paramètres de configuration importants comme la taille maximale autorisée d'un paquet :

SHOW VARIABLES LIKE 'max_allowed_packet';

Ce qui pourrait donner une sortie comme :

MariaDB [mysql]> SHOW VARIABLES LIKE 'max_allowed_packet';
+--------------------+----------+
| Variable_name      | Value    |
+--------------------+----------+
| max_allowed_packet | 16777216 |
+--------------------+----------+
1 row in set (0.001 sec)

Cela montre la taille maximale d'un paquet ou de toute chaîne générée/intermédiaire, ce qui peut être important lorsque vous travaillez avec de grandes quantités de données.

Comprendre comment récupérer et interpréter ces métadonnées est une compétence précieuse pour tout administrateur de base de données ou développeur. Elle vous permet de mieux comprendre le comportement et les performances de votre système de base de données, ce qui peut être crucial pour l'optimisation et la résolution de problèmes.

Résumé

Dans ce laboratoire, nous avons couvert les aspects fondamentaux de la gestion des bases de données dans MySQL :

  1. La création de bases de données à la fois avec le client MySQL et l'outil mysqladmin
  2. La liste des bases de données existantes et la compréhension de leur utilité
  3. La compréhension de la sensibilité à la casse des noms de bases de données dans MySQL
  4. La suppression sécurisée de bases de données et l'importance d'être prudent lors de cette opération
  5. La sélection et le basculement entre les bases de données
  6. La récupération de métadonnées importantes sur le serveur MySQL et les bases de données

Ces compétences constituent la base du travail avec les bases de données MySQL. Au fur et à mesure de votre progression dans le domaine des bases de données, vous vous appuierez sur ces bases pour effectuer des opérations et des tâches de gestion de bases de données plus complexes.