في هذا الدرس التطبيقي، سوف نتعلم ونتدرب على الفهرسة والعرض والنسخ الاحتياطي والاسترداد. تعتبر هذه المفاهيم بالغة الأهمية لمدير قاعدة البيانات.
قبل أن نبدأ، نحتاج إلى تهيئة البيئة.
ابدأ خدمة MySQL وقم بتسجيل الدخول كجذر.
cd ~/project sudo service mysql start mysql -u root
تحميل البيانات في الملف. تحتاج إلى إدخال الأمر في وحدة تحكم MySQL لإنشاء قاعدة البيانات:
source ~/project/init-database.txt
الفهرس عبارة عن بنية مرتبطة بالجدول. دورها يعادل دليل الكتاب. يمكنك العثور بسرعة على المحتوى وفقًا لرقم الصفحة في الدليل.
عندما تريد الاستعلام عن جدول يحتوي على عدد كبير من السجلات، ولا يحتوي على فهرس، فسيتم سحب كافة السجلات لمطابقة شروط البحث واحدا تلو الآخر، وإرجاع السجلات المطابقة للشروط . إنها تستغرق وقتًا طويلاً للغاية وتؤدي إلى عدد كبير من عمليات الإدخال/الإخراج على القرص.
إذا كان هناك فهرس في الجدول، فيمكننا العثور بسرعة على البيانات الموجودة في الجدول حسب قيمة الفهرس، مما يؤدي إلى تسريع عملية الاستعلام بشكل كبير.
هناك طريقتان لإعداد فهرس لعمود معين:
ALTER TABLE table name ADD INDEX index name (column name); CREATE INDEX index name ON table name (column name);
دعونا نستخدم هاتين العبارتين لإنشاء فهرس.
قم بإنشاء فهرس idx_id في عمود المعرف في جدول الموظفين:
ALTER TABLE employee ADD INDEX idx_id (id);
إنشاء فهرس idx_name في عمود الاسم في جدول الموظفين
CREATE INDEX idx_name ON employee (name);
نستخدم الفهرس لتسريع عملية الاستعلام. عندما لا تكون هناك بيانات كافية، لن نكون قادرين على الشعور بقوتها السحرية. لنستخدم هنا الأمر إظهار الفهرس من اسم الجدول لعرض الفهرس الذي أنشأناه للتو.
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)
عندما نستخدم عبارة SELECT للاستعلام، فإن شرط WHERE سيحكم تلقائيًا على ما إذا كان هناك فهرس.
العرض عبارة عن جدول افتراضي مشتق من جدول واحد أو أكثر. إنها بمثابة نافذة يمكن للأشخاص من خلالها عرض البيانات الخاصة التي يوفرها النظام حتى لا يضطروا إلى عرض البيانات بأكملها في قاعدة البيانات. يمكنهم التركيز على الأشخاص الذين يهتمون بهم.
كيفية تفسير "العرض عبارة عن جدول افتراضي"؟
تنسيق كشف الحساب المستخدم لإنشاء العرض:
CREATE VIEW view name (column a, column b, column c) AS SELECT column 1, column 2, column 3 FROM table name;
من البيان، يمكننا أن نرى أن الجزء الأخير هو عبارة SELECT، مما يعني أن العرض يمكن أيضًا أن يكون مبنيًا على جداول متعددة. كل ما يتعين علينا فعله هو استخدام الاستعلامات الفرعية أو الانضمام إلى عبارة SELECT.
الآن لنقم بإنشاء عرض بسيط باسم v_emp والذي يتضمن ثلاثة أعمدة v_name، v_age، v_phone:
CREATE VIEW v_emp (v_name,v_age,v_phone) AS SELECT name,age,phone FROM employee;
ثم أدخل
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)
لأسباب أمنية، النسخ الاحتياطي مهم للغاية في إدارة قاعدة البيانات.
يقوم الملف الذي تم تصديره بحفظ البيانات في قاعدة البيانات فقط بينما يحفظ النسخ الاحتياطي بنية قاعدة البيانات بأكملها بما في ذلك البيانات والقيود والفهارس والعرض وما إلى ذلك في ملف جديد.
mysqldump هو برنامج عملي في MySQL للنسخ الاحتياطي. وينتج ملف نصي SQL يحتوي على كافة الأوامر الأساسية لإعادة إنشاء قاعدة بيانات من البداية، مثل CREATE وINSERT وما إلى ذلك.
بيان لاستخدام النسخ الاحتياطي 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
حاول إجراء نسخ احتياطي لقاعدة البيانات بأكملها mysql_labex. اسم الملف إلى bak.sql. اضغط أولاً على Ctrl Z للخروج من وحدة تحكم MySQL، ثم افتح الوحدة الطرفية وأدخل الأمر:
cd ~/project/ mysqldump -u root mysql_labex > bak.sql;
استخدم الأمر "ls" وسنرى ملف النسخ الاحتياطي 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 */; ……
في وقت سابق من هذا التمرين المعملي، تدربنا على استخدام ملف النسخ الاحتياطي لاستعادة قاعدة البيانات. استخدمنا أمرًا مشابهًا لهذا:
source ~/project/init-database.txt
يقوم هذا البيان باستعادة قاعدة بيانات mysql_labex من ملف import-database.txt.
هناك طريقة أخرى لاستعادة قاعدة البيانات، ولكن قبل ذلك، نحتاج إلى إنشاء قاعدة بيانات فارغة باسم الاختبار أولاً:
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 للخروج من MySQL. قم باستعادة bak.sql لاختبار قاعدة البيانات:
mysql -u root USE test SHOW TABLESMariaDB [(لا شيء)]> اختبار الاستخدام؛ قراءة معلومات الجدول لاستكمال أسماء الجداول والأعمدة يمكنك إيقاف تشغيل هذه الميزة لبدء تشغيل أسرع باستخدام -A تم تغيير قاعدة البيانات MariaDB [اختبار]> إظهار الجداول؛ ---------------- | Tables_in_test | ---------------- | قسم | | موظف | | مشروع | | table_1 | ---------------- 4 صفوف في المجموعة (0.000 ثانية)
mysql -u root test يمكننا أن نرى أنه تم بالفعل استرداد الجداول الأربعة إلى قاعدة بيانات الاختبار.ملخص
تهانينا! لقد أكملت الدرس التطبيقي حول العمليات الأساسية الأخرى في MySQL. لقد تعلمت كيفية إنشاء الفهارس وطرق العرض وكيفية النسخ الاحتياطي لقاعدة البيانات واستعادتها.
؟ التدريب الآن: العمليات الأساسية الأخرى
هل تريد معرفة المزيد؟
تنصل: جميع الموارد المقدمة هي جزئيًا من الإنترنت. إذا كان هناك أي انتهاك لحقوق الطبع والنشر الخاصة بك أو الحقوق والمصالح الأخرى، فيرجى توضيح الأسباب التفصيلية وتقديم دليل على حقوق الطبع والنشر أو الحقوق والمصالح ثم إرسالها إلى البريد الإلكتروني: [email protected]. سوف نتعامل مع الأمر لك في أقرب وقت ممكن.
Copyright© 2022 湘ICP备2022001581号-3