Maison  >  Article  >  base de données  >  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

PHPz
PHPzoriginal
2024-08-17 22:31:39617parcourir

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 retrouver rapidement le contenu en fonction du numéro de page dans un annuaire.

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 façons 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.

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

ALTER TABLE employee ADD INDEX idx_id (id);

créez 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 View comme un tableau.

Format de déclaration utilisé pour créer View :

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 nous 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 entrez

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 qui contient toutes les commandes essentielles pour recréer une base de données à partir de zéro, telles que CREATE, INSERT etc.

Déclaration 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 récupérer 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 < bak.sql

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)

We can see that the 4 tables have already been recovered to the test database.

Summary

Congratulations! You've completed the lab on other basic operations in MySQL. You've learned how to create indexes, views, and how to backup and recover a database.


? Practice Now: Other Basic Operations


Want to Learn More?

  • ? Learn the latest MySQL Skill Trees
  • ? Read More MySQL Tutorials
  • ? Join our Discord or tweet us @WeAreLabEx

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn