Heim > Datenbank > MySQL-Tutorial > Hauptteil

Beherrschen von Datenbankoperationen: Indexieren, Anzeigen, Sichern und Wiederherstellen

PHPz
Freigeben: 2024-08-17 22:31:39
Original
576 Leute haben es durchsucht

Einführung

Mastering Database Operations: Index, View, Backup, and Recovery

In diesem Labor lernen und üben wir Indizierung, Ansicht, Sicherung und Wiederherstellung. Diese Konzepte sind für einen Datenbankmanager von entscheidender Bedeutung.

Lernziel

  • Index erstellen
  • Ansicht erstellen
  • Sicherung und Wiederherstellung

Vorbereitung

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
Nach dem Login kopieren

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
Nach dem Login kopieren
Nach dem Login kopieren

Index

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);
Nach dem Login kopieren

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);
Nach dem Login kopieren

Erstellen Sie einen idx_name-Index in der Namensspalte in der Mitarbeitertabelle

CREATE INDEX idx_name ON employee (name);
Nach dem Login kopieren

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;
Nach dem Login kopieren
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)
Nach dem Login kopieren

Wenn wir die SELECT-Anweisung zur Abfrage verwenden, beurteilt die WHERE-Bedingung automatisch, ob ein Index vorhanden ist.

Sicht

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?

  • Nur ​​die Definition der Ansicht wird in der Datenbank gespeichert, während ihre Daten in der Originaltabelle gespeichert werden;
  • Wenn wir View zum Abfragen von Daten verwenden, extrahiert die Datenbank entsprechend Daten aus der Originaltabelle.
  • Da die Daten in der Ansicht davon abhängen, was in der Originaltabelle gespeichert ist, ändert sich auch das, was wir in der Ansicht sehen, sobald sich die Daten in der Tabelle geändert haben.
  • Behandeln Sie die Ansicht als Tabelle.

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;
Nach dem Login kopieren

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;
Nach dem Login kopieren

und dann eingeben

SELECT * FROM v_emp;
Nach dem Login kopieren
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)
Nach dem Login kopieren

Sicherung

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
Nach dem Login kopieren

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;
Nach dem Login kopieren

Verwenden Sie den Befehl „ls“ und wir sehen die Sicherungsdatei bak.sql;

cat bak.sql
Nach dem Login kopieren
-- 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 */;

……
Nach dem Login kopieren

Erholung

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
Nach dem Login kopieren
Nach dem Login kopieren

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;
Nach dem Login kopieren
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)
Nach dem Login kopieren

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
Nach dem Login kopieren

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
Nach dem Login kopieren
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)
Nach dem Login kopieren

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

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!

Quelle:dev.to
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage
Über uns Haftungsausschluss Sitemap
Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!