Maison> base de données> tutoriel mysql> le corps du texte

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

PHPz
Libérer: 2024-08-17 22:31:39
original
399 Les gens l'ont consulté

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 récupération. 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
Copier après la connexion

Chargez 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
Copier après la connexion
Copier après la connexion

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 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);
Copier après la connexion

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);
Copier après la connexion

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

CREATE INDEX idx_name ON employee (name);
Copier après la connexion

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 commandeSHOW INDEX FROM table namepour afficher l'index que nous venons de créer.

SHOW INDEX FROM employee;
Copier après la connexion
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)
Copier après la connexion

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;
Copier après la connexion

D'après l'instruction, nous pouvons voir que la dernière partie est une instruction SELECT, ce qui signifie que View peut également êtreconstruit 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éev_empqui comprend trois colonnesv_name,v_age,v_phone:

CREATE VIEW v_emp (v_name,v_age,v_phone) AS SELECT name,age,phone FROM employee;
Copier après la connexion

puis entrez

SELECT * FROM v_emp;
Copier après la connexion
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)
Copier après la connexion

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.

mysqldumpest 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.

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
Copier après la connexion

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;
Copier après la connexion

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

cat bak.sql
Copier après la connexion
-- 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 */; ……
Copier après la connexion

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
Copier après la connexion
Copier après la connexion

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 unebase de données vide nommée test:

mysql -u root CREATE DATABASE test;
Copier après la connexion
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)
Copier après la connexion

Ctrl+Zpour quitter MySQL. Récupérez lebak.sqlpourtestla base de données :

mysql -u root test < bak.sql
Copier après la connexion

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
Copier après la connexion
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)
Copier après la connexion

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!

source:dev.to
Déclaration de ce site Web
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
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!