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.
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
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.
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 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)
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 */; ……
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 testNous 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 TABLESMariaDB [(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 ?
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