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.
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
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
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);
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é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 commandeSHOW INDEX FROM table namepour 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.
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 » ?
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 ê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;
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)
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
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 */; ……
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 unebase 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+Zpour quitter MySQL. Récupérez lebak.sqlpourtestla 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.
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
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!