"Si un ouvrier veut bien faire son travail, il doit d'abord affûter ses outils." - Confucius, "Les Entretiens de Confucius. Lu Linggong"
Page de garde > La programmation > Maîtriser les opérations de base de données : index, vue, sauvegarde et récupération

Maîtriser les opérations de base de données : index, vue, sauvegarde et récupération

Publié le 2024-08-23
Parcourir:882

Introduction

Mastering Database Operations: Index, View, Backup, and Recovery

Dans cet atelier, nous apprendrons et mettrons en pratique l'indexation, la visualisation, la sauvegarde et la restauration. Ces concepts sont très cruciaux pour un gestionnaire de base de données.

Objectif d'apprentissage

  • Créer un index
  • Créer une vue
  • Sauvegarde et récupération

Préparation

Avant de commencer, nous devons préparer l'environnement.

Démarrez le service MySQL et connectez-vous en tant que root.

cd ~/project
sudo service mysql start
mysql -u root

Charger les données dans le fichier. Vous devez saisir la commande dans la console MySQL pour construire la base de données :

source ~/project/init-database.txt

Indice

L'index est une structure liée aux tables. Son rôle est équivalent à celui d'un répertoire de livres. Vous pouvez trouver rapidement le contenu en fonction du numéro de page dans un répertoire.

Lorsque vous souhaitez interroger une table contenant un grand nombre d'enregistrements et qu'elle n'a pas d'index, tous les enregistrements seront extraits pour correspondre aux conditions de recherche un par un et renverront les enregistrements qui correspondent aux conditions. . Cela prend beaucoup de temps et entraîne un grand nombre d’opérations d’E/S disque.

Si un index existe dans la table, nous pouvons alors trouver rapidement les données dans la table grâce à la valeur de l'index, ce qui accélère considérablement le processus de requête.

Il existe deux manières de configurer un index sur une colonne particulière :

ALTER TABLE table name ADD INDEX index name (column name);

CREATE INDEX index name ON table name (column name);

Utilisons ces deux instructions pour créer un index.

Créez un index idx_id dans la colonne id de la table des employés :

ALTER TABLE employee ADD INDEX idx_id (id);

créer un index idx_name dans la colonne nom de la table des employés

CREATE INDEX idx_name ON employee (name);

Nous utilisons l'index pour accélérer le processus de requête. Lorsqu’il n’y a pas assez de données, nous ne pourrons pas ressentir son pouvoir magique. Utilisons ici la commande SHOW INDEX FROM table name pour afficher l'index que nous venons de créer.

SHOW INDEX FROM employee;
MariaDB [mysql_labex]> ALTER TABLE employee ADD INDEX idx_id (id);
Query OK, 0 rows affected (0.005 sec)
Records: 0  Duplicates: 0  Warnings: 0

MariaDB [mysql_labex]> SHOW INDEX FROM employee;
 ---------- ------------ ---------- -------------- ------------- ----------- ------------- ---------- -------- ------ ------------ --------- --------------- --------- 
| Table    | Non_unique | Key_name | Seq_in_index | Column_name | Collation | Cardinality | Sub_part | Packed | Null | Index_type | Comment | Index_comment | Ignored |
 ---------- ------------ ---------- -------------- ------------- ----------- ------------- ---------- -------- ------ ------------ --------- --------------- --------- 
| employee |          0 | PRIMARY  |            1 | id          | A         |           5 |     NULL | NULL   |      | BTREE      |         |               | NO      |
| employee |          0 | phone    |            1 | phone       | A         |           5 |     NULL | NULL   |      | BTREE      |         |               | NO      |
| employee |          1 | emp_fk   |            1 | in_dpt      | A         |           5 |     NULL | NULL   |      | BTREE      |         |               | NO      |
| employee |          1 | idx_id   |            1 | id          | A         |           5 |     NULL | NULL   |      | BTREE      |         |               | NO      |
| employee |          1 | idx_name |            1 | name        | A         |           5 |     NULL | NULL   | YES  | BTREE      |         |               | NO      |
 ---------- ------------ ---------- -------------- ------------- ----------- ------------- ---------- -------- ------ ------------ --------- --------------- --------- 
5 rows in set (0.000 sec)

Lorsque nous utilisons l'instruction SELECT pour interroger, la condition WHERE jugera automatiquement s'il existe un index.

Voir

La vue est une table virtuelle dérivée d'une ou plusieurs tables. C'est comme une fenêtre à travers laquelle les utilisateurs peuvent visualiser les données spéciales fournies par le système afin de ne pas avoir à visualiser l'intégralité des données de la base de données. Ils peuvent se concentrer sur ceux qui les intéressent.

Comment interpréter « La vue est une table virtuelle » ?

  • Seule la définition de View est stockée dans la base de données tandis que ses données sont stockées dans la table d'origine ;
  • Lorsque nous utilisons View pour interroger des données, la base de données extraira les données de la table d'origine en conséquence.
  • Étant donné que les données dans View dépendent de ce qui est stocké dans la table d'origine, une fois que les données de la table ont changé, ce que nous voyons dans View changera également.
  • Traitez la vue comme un tableau.

Format de déclaration utilisé pour créer la vue :

CREATE VIEW view name (column a, column b, column c) AS SELECT column 1, column 2, column 3 FROM table name;

D'après l'instruction, nous pouvons voir que la dernière partie est une instruction SELECT, ce qui signifie que View peut également être construit sur plusieurs tables. Tout ce que nous avons à faire est d'utiliser des sous-requêtes ou de joindre l'instruction SELECT.

Créons maintenant une vue simple nommée v_emp qui comprend trois colonnes v_name, v_age, v_phone :

CREATE VIEW v_emp (v_name,v_age,v_phone) AS SELECT name,age,phone FROM employee;

puis saisissez

SELECT * FROM v_emp;
MariaDB [mysql_labex]> CREATE VIEW v_emp (v_name,v_age,v_phone) AS SELECT name,age,phone FROM employee;
Query OK, 0 rows affected (0.003 sec)

MariaDB [mysql_labex]> SELECT * FROM v_emp;
 -------- ------- --------- 
| v_name | v_age | v_phone |
 -------- ------- --------- 
| Tom    |    26 |  119119 |
| Jack   |    24 |  120120 |
| Jobs   |  NULL |   19283 |
| Tony   |  NULL |  102938 |
| Rose   |    22 |  114114 |
 -------- ------- --------- 
5 rows in set (0.000 sec)

Sauvegarde

Pour des raisons de sécurité, la sauvegarde est extrêmement importante dans la gestion des bases de données.

Le fichier exporté enregistre uniquement les données dans une base de données tandis que la sauvegarde enregistre l'intégralité de la structure de la base de données, y compris les données, les contraintes, les index, la vue, etc. dans un nouveau fichier.

mysqldump est un programme pratique dans MySQL pour la sauvegarde. Il produit un fichier de script SQL contenant toutes les commandes essentielles pour recréer une base de données à partir de zéro, telles que CREATE, INSERT, etc.

Instruction pour utiliser la sauvegarde mysqldump :

mysqldump -u root database name > backup file name;   #backup entire database

mysqldump -u root database name table name > backup file name;  #backup the entire table

Essayez de sauvegarder l'intégralité de la base de données mysql_labex. Nommez le fichier bak.sql. Appuyez d'abord sur Ctrl Z pour quitter la console MySQL, puis ouvrez le terminal et entrez la commande :

cd ~/project/
mysqldump -u root mysql_labex > bak.sql;

Utilisez la commande "ls" et nous verrons le fichier de sauvegarde bak.sql;

cat bak.sql
-- MariaDB dump 10.19  Distrib 10.6.12-MariaDB, for debian-linux-gnu (x86_64)
--
-- Host: localhost    Database: mysql_labex
-- ------------------------------------------------------
-- Server version       10.6.12-MariaDB-0ubuntu0.22.04.1

/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
/*!40101 SET NAMES utf8 */;
/*!40103 SET @OLD_TIME_ZONE=@@TIME_ZONE */;
/*!40103 SET TIME_ZONE=' 00:00' */;
/*!40014 SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0 */;
/*!40014 SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0 */;
/*!40101 SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='NO_AUTO_VALUE_ON_ZERO' */;
/*!40111 SET @OLD_SQL_NOTES=@@SQL_NOTES, SQL_NOTES=0 */;

……

Récupération

Plus tôt dans cet atelier, nous nous sommes entraînés à utiliser un fichier de sauvegarde pour restaurer la base de données. Nous avons utilisé une commande similaire à celle-ci :

source ~/project/init-database.txt

Cette instruction récupère la base de données mysql_labex à partir du fichier import-database.txt.

Il existe une autre façon de récupérer la base de données, mais avant cela, nous devons d'abord créer une base de données vide nommée test :

mysql -u root
CREATE DATABASE test;
MariaDB [(none)]> CREATE DATABASE test;
Query OK, 1 row affected (0.000 sec)

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

Ctrl Z pour quitter MySQL. Récupérez le bak.sql pour tester la base de données :

mysql -u root test 



Nous pouvons confirmer si la récupération a réussi ou non en entrant une commande pour afficher les tables dans la base de données de test :

mysql -u root
USE test
SHOW TABLES
MariaDB [(none)]> USE test;
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 [test]> SHOW TABLES;
 ---------------- 
| Tables_in_test |
 ---------------- 
| department     |
| employee       |
| project        |
| table_1        |
 ---------------- 
4 rows in set (0.000 sec)

Nous pouvons voir que les 4 tables ont déjà été récupérées dans la base de données de test.

Résumé

Félicitations! Vous avez terminé l'atelier sur d'autres opérations de base dans MySQL. Vous avez appris à créer des index, des vues, ainsi qu'à sauvegarder et restaurer une base de données.


 ? Entraînez-vous maintenant : autres opérations de base


Vous voulez en savoir plus ?

  •  ? Découvrez les derniers arbres de compétences MySQL
  •  ? Lire plus de didacticiels MySQL
  •  ? Rejoignez notre Discord ou tweetez-nous @WeAreLabEx
Déclaration de sortie Cet article est reproduit sur : https://dev.to/labex/mastering-database-operations-index-view-backup-and-recovery-26dp?1 En cas de violation, veuillez contacter [email protected] pour supprimer il
Dernier tutoriel Plus>

Clause de non-responsabilité: Toutes les ressources fournies proviennent en partie d'Internet. En cas de violation de vos droits d'auteur ou d'autres droits et intérêts, veuillez expliquer les raisons détaillées et fournir une preuve du droit d'auteur ou des droits et intérêts, puis l'envoyer à l'adresse e-mail : [email protected]. Nous nous en occuperons pour vous dans les plus brefs délais.

Copyright© 2022 湘ICP备2022001581号-3