Heim >Datenbank >MySQL-Tutorial >Beherrschen von Datenbankoperationen: Indexieren, Anzeigen, Sichern und Wiederherstellen
In diesem Labor lernen und üben wir Indizierung, Ansicht, Sicherung und Wiederherstellung. Diese Konzepte sind für einen Datenbankmanager von entscheidender Bedeutung.
Bevor wir beginnen, müssen wir die Umgebung vorbereiten.
Starten Sie den MySQL-Dienst und melden Sie sich als Root an.
cd ~/project sudo service mysql start mysql -u root
Daten in die Datei laden. Sie müssen den Befehl in der MySQL-Konsole eingeben, um die Datenbank zu erstellen:
source ~/project/init-database.txt
Der Index ist eine tabellenbezogene Struktur. Seine Rolle entspricht einem Buchverzeichnis. Sie können den Inhalt schnell anhand der Seitenzahl in einem Verzeichnis finden.
Wenn Sie eine Tabelle abfragen möchten, die eine große Anzahl von Datensätzen enthält und keinen Index hat, werden alle Datensätze nacheinander herausgezogen, um den Suchbedingungen zu entsprechen, und die Datensätze zurückgegeben, die den Bedingungen entsprechen . Dies ist sehr zeitaufwändig und führt zu einer großen Anzahl von Festplatten-E/A-Vorgängen.
Wenn in der Tabelle ein Index vorhanden ist, können wir die Daten in der Tabelle anhand des Indexwerts schnell finden, was den Abfragevorgang erheblich beschleunigt.
Es gibt zwei Möglichkeiten, einen Index für eine bestimmte Spalte einzurichten:
ALTER TABLE table name ADD INDEX index name (column name); CREATE INDEX index name ON table name (column name);
Lassen Sie uns diese beiden Anweisungen verwenden, um einen Index zu erstellen.
Erstellen Sie einen idx_id-Index in der ID-Spalte der Mitarbeitertabelle:
ALTER TABLE employee ADD INDEX idx_id (id);
Erstellen Sie einen idx_name-Index in der Namensspalte in der Mitarbeitertabelle
CREATE INDEX idx_name ON employee (name);
Wir verwenden den Index, um den Abfrageprozess zu beschleunigen. Wenn nicht genügend Daten vorhanden sind, können wir seine magische Kraft nicht spüren. Hier verwenden wir den Befehl SHOW INDEX FROM table name, um den Index anzuzeigen, den wir gerade erstellt haben.
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)
Wenn wir die SELECT-Anweisung zur Abfrage verwenden, beurteilt die WHERE-Bedingung automatisch, ob ein Index vorhanden ist.
Die Ansicht ist eine virtuelle Tabelle, die aus einer oder mehreren Tabellen abgeleitet ist. Es ist wie ein Fenster, durch das Benutzer spezielle, vom System bereitgestellte Daten anzeigen können, sodass sie nicht die gesamten Daten in der Datenbank anzeigen müssen. Sie können sich auf diejenigen konzentrieren, die sie interessieren.
Wie ist „Ansicht ist eine virtuelle Tabelle“ zu interpretieren?
Anweisungsformat, das zum Erstellen der Ansicht verwendet wird:
CREATE VIEW view name (column a, column b, column c) AS SELECT column 1, column 2, column 3 FROM table name;
Aus der Anweisung können wir ersehen, dass der letzte Teil eine SELECT-Anweisung ist, was bedeutet, dass View auch auf mehreren Tabellen erstellt werden kann. Wir müssen lediglich Unterabfragen verwenden oder die SELECT-Anweisung einbinden.
Jetzt erstellen wir eine einfache Ansicht mit dem Namen v_emp, die drei Spalten enthält: v_name, v_age, v_phone:
CREATE VIEW v_emp (v_name,v_age,v_phone) AS SELECT name,age,phone FROM employee;
und dann eingeben
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)
Aus Sicherheitsgründen ist die Sicherung bei der Datenbankverwaltung äußerst wichtig.
Die exportierte Datei speichert nur die Daten in einer Datenbank, während die Sicherung die gesamte Datenbankstruktur einschließlich Daten, Einschränkungen, Indizes, Ansichten usw. in einer neuen Datei speichert.
mysqldump ist ein praktisches Programm in MySQL für Backups. Es erstellt eine SQL-Skriptdatei, die alle wesentlichen Befehle enthält, um eine Datenbank von Grund auf neu zu erstellen, wie z. B. CREATE, INSERT usw.
Anweisung zur Verwendung von mysqldump-Backup:
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
Versuchen Sie, die gesamte Datenbank mysql_labex zu sichern. Benennen Sie die Datei in bak.sql. Drücken Sie zunächst Strg+Z, um die MySQL-Konsole zu verlassen, öffnen Sie dann das Terminal und geben Sie den Befehl ein:
cd ~/project/ mysqldump -u root mysql_labex > bak.sql;
Verwenden Sie den Befehl „ls“ und wir sehen die Sicherungsdatei 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 */; ……
Zu Beginn dieser Übung haben wir die Verwendung einer Sicherungsdatei zum Wiederherstellen der Datenbank geübt. Wir haben einen Befehl ähnlich diesem verwendet:
source ~/project/init-database.txt
Diese Anweisung stellt die Datenbank mysql_labex aus der Datei import-database.txt wieder her.
Es gibt eine andere Möglichkeit, die Datenbank wiederherzustellen, aber vorher müssen wir zuerst eine leere Datenbank namens test erstellen:
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)
Strg+Z um MySQL zu beenden. Stellen Sie die Datei bak.sql wieder her, um die Datenbank zu zu testen:
mysql -u root test < bak.sql
Wir können bestätigen, ob die Wiederherstellung erfolgreich ist oder nicht, indem wir einen Befehl zum Anzeigen von Tabellen in der Testdatenbank eingeben:
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
Das obige ist der detaillierte Inhalt vonBeherrschen von Datenbankoperationen: Indexieren, Anzeigen, Sichern und Wiederherstellen. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!