في هذا الدرس 6تصفّح المواضيع
قبل إجراء أي تعديل أو حذف على قاعدة بيانات في خادم MySQL 8.4، ابدأ دائماً بفحص تعريفها الحالي وإعدادات الترميز والمقارنة والتشفير الخاصة بها عبر الأمر SHOW CREATE DATABASE db_name;:
- استعراض جملة الإنشاء الفعلية: يعرض النص الدقيق المسجل للقاعدة داخل قاموس بيانات InnoDB.
- التدقيق قبل التعديل: يتيح التأكد من الترميز الحالي للقاعدة قبل تنفيذ أمر
ALTER DATABASE.
-- Inspect the current definition of an existing database
SHOW CREATE DATABASE closetag_store;
SHOW CREATE SCHEMA closetag_analytics;
يُستخدم الأمر ALTER DATABASE (أو مرادفه ALTER SCHEMA) لتحديث الخصائص العامة لقاعدة بيانات قائمة دون مسحها:
- تحديث الترميز والمقارنة الافتراضية: يغير الإعدادات الافتراضية التي سترثها الجداول والكائنات الجديدة التي ستُنشأ لاحقاً داخل القاعدة.
- قفل القاعدة للقراءة فقط (
READ ONLY = 1): ميزة حديثة في MySQL 8 تمنع أي تعديل أو حذف للقاعدة (وترجع الخطأERROR 3989) لحمايتها أثناء الصيانة أو النسخ الاحتياطي، ويُلغى القفل عبرREAD ONLY = 0.
-- Update default collation and test READ ONLY protection lock
ALTER DATABASE closetag_store
CHARACTER SET utf8mb4
COLLATE utf8mb4_0900_as_cs;
ALTER DATABASE closetag_store READ ONLY = 1;
ALTER DATABASE closetag_store READ ONLY = 0;
بينما يعرض الأمر SHOW DATABASES; قائمة بأسماء القواعد فقط، يتيح لك جدول النظام القياسي INFORMATION_SCHEMA.SCHEMATA استعلام البيانات الوصفية الكاملة لجميع قواعد البيانات دفعة واحدة:
- العمود
SCHEMA_NAME: يعرض اسم قاعدة البيانات. - عمودا الترميز والمقارنة:
DEFAULT_CHARACTER_SET_NAMEوDEFAULT_COLLATION_NAMEلتدقيق التزام القواعد بمعيارutf8mb4. - جدول
SCHEMATA_EXTENSIONS: يعرض الخيارات الإضافية مثل حالة القفلREAD ONLY=1.
-- Audit database character sets and collations via SCHEMATA
SELECT
SCHEMA_NAME,
DEFAULT_CHARACTER_SET_NAME,
DEFAULT_COLLATION_NAME
FROM INFORMATION_SCHEMA.SCHEMATA;
يُستخدم الأمر DROP DATABASE (أو المرادف DROP SCHEMA) لحذف قاعدة البيانات بالكامل مع جميع الكائنات والملفات التابعة لها نهائياً من القرص الصلب:
- عملية نهائية غير قابلة للتراجع: يُنفذ أمر
DROP DATABASEبشكل فوري ونهائي، ولا يمكن التراجع عنه بأوامر التراجع البرمجية. - إعادة ضبط الجلسة النشطة: إذا حذفت القاعدة التي كانت مفعلة بأمر
USEفي جلستك، تعود قيمةSELECT DATABASE();تلقائياً إلىNULL.
-- Create a disposable sandbox database and drop it cleanly
CREATE DATABASE closetag_temp_sandbox;
DROP DATABASE closetag_temp_sandbox;
عند محاولة تنفيذ DROP DATABASE لقاعدة غير موجودة على الخادم، يتوقف التنفيذ بالخطأ رقم 1008 (HY000):
- تنظيف بيئات الاختبار بأمان (
IF EXISTS): تمنع إضافة العبارةIF EXISTSتوقف سكربتات تنظيف بيئات الاختبار إذا كانت القاعدة محذوفة مسبقاً، وتسجل بدلاً من الخطأ ملاحظة خفيفةNote 1008.
-- Safely drop a temporary database without failing if absent
DROP DATABASE IF EXISTS closetag_temp_sandbox;
-- Inspect the non-fatal Note 1008 logged by the server
SHOW WARNINGS;
يلخص الجدول المرجعي التالي أوامر إدارة دورة حياة قواعد البيانات الكاملة في MySQL 8.4:
| جملة SQL القياسية | الصلاحية المطلوبة | الدور في دورة الحياة | مستوى الأمان والسلوك عند الخطأ |
|---|---|---|---|
CREATE DATABASE IF NOT EXISTS db; | CREATE | إنشاء قاعدة بيانات جديدة | آمن تماماً؛ يسجل Note 1007 إذا كانت موجودة |
SHOW CREATE DATABASE db; | صلاحية الرؤية | فحص جملة الإنشاء والترميز | قراءة فقط للتدقيق قبل التعديل |
ALTER DATABASE db CHARACTER SET ...; | ALTER | تحديث الترميز والمقارنة الافتراضية | يسري على الكائنات الجديدة التي ستُنشأ لاحقاً |
ALTER DATABASE db READ ONLY = 1; | ALTER | قفل القاعدة في وضع القراءة فقط | يمنع الكتابة والحذف بالخطأ ERROR 3989 |
SELECT ... FROM INFORMATION_SCHEMA.SCHEMATA; | صلاحية الرؤية | تدقيق جميع القواعد | استعلام وصفي آمن للقراءة فقط |
DROP DATABASE IF EXISTS db; | DROP | الإزالة النهائية للقاعدة من القرص | حذف نهائي غير قابل للتراجع؛ يسجل Note 1008 إن لم توجد |
-- Final audit of active database and server hostname
SELECT
DATABASE(),
@@hostname,
@@character_set_server;
ملخص الدرس
حصاد الدرسمراجعة مركّزة لأهم المفاهيم والقواعد الهندسية التي أتقنتها في هذا الدرس قبل التطبيق العملي
ماذا تعلّمت في هذا الدرس؟
أتممت في هذا الدرس الموديول الثاني بإتقان فحص تعريف القاعدة، وتعديل إعداداتها عبر ALTER DATABASE، وحمايتها من التعديل أو الحذف بوضع READ ONLY = 1، واستعلام بيانات النظام عبر INFORMATION_SCHEMA.SCHEMATA، وضوابط الحذف الآمن عبر DROP DATABASE IF EXISTS.
الخطوة التالية والدرس القادم
انتقل الآن إلى الموديول الثالث والدرس الثامن «أنواع البيانات الرقمية الصحيحة والعشرية في MySQL» لدراسة الأنواع الرقمية الدقيقة قبل بناء الجداول.
سجّل الدخول لحفظ تقدمك
تابع إنجاز المواضيع والمصطلحات والمهام، وكمّل من آخر خطوة على أي جهاز.
المصطلحات4
راجع المعنى، اشرحه لنفسك، ثم علّم البطاقة كمفهومة.
- 01 Dropping Databases حذف القواعد
- تعلّم تعديل خصائص قواعد البيانات وحذفها بأمان في MySQL 8 الحديث عبر ALTER DATABASE ووضع READ ONLY وجدول INFORMATION_SCHEMA.SCHEMATA و DROP DATABASE IF EXISTS.
- للمراجعة
- 02 Inspecting Database Definition فحص تعريف القاعدة المنشأة
- المفهوم الهندسي والتطبيق العملي المباشر لقسم فحص تعريف القاعدة المنشأة في MySQL 8.4.
- للمراجعة
- 03 ALTER DATABASE Charset Settings تعديل ترميز القاعدة بـ ALTER
- المفهوم الهندسي والتطبيق العملي المباشر لقسم تعديل ترميز القاعدة بـ ALTER في MySQL 8.4.
- للمراجعة
- 04 Querying Information Schema استعلام بيانات القواعد بالنظام
- المفهوم الهندسي والتطبيق العملي المباشر لقسم استعلام بيانات القواعد بالنظام في MySQL 8.4.
- للمراجعة
لا توجد بطاقات تطابق البحث والتصفية.
اقرأ البطاقات بحرية. سجّل الدخول لحفظ تقدم مراجعتك.
الاختصارات4
راجع المعنى، اشرحه لنفسك، ثم علّم البطاقة كمفهومة.
- 01 DDL DDL
- Data Definition Language
- أوامر تعريف البيانات (CREATE و ALTER و DROP) التي تدير هياكل القواعد وتُنفذ فوراً.
- للمراجعة
- 02 RO RO
- Read-Only Schema Mode (READ ONLY = 1)
- وضع القراءة فقط للقاعدة في MySQL 8 الذي يسمح بالقراءة ويمنع أي تعديل أو حذف.
- للمراجعة
- 03 ISO ISO
- International Organization for Standardization
- المنظمة الدولية للمعايير التي وضعت مواصفات جداول البيانات الوصفية INFORMATION_SCHEMA.
- للمراجعة
- 04 DBA DBA
- Database Administrator
- مسؤول قواعد البيانات المختص بإدارة دورة حياة القواعد والنسخ الاحتياطي والصلاحيات.
- للمراجعة
لا توجد بطاقات تطابق البحث والتصفية.
اقرأ البطاقات بحرية. سجّل الدخول لحفظ تقدم مراجعتك.
مهامك قبل الاختبار
خطوة صغيرة كل مرة. وإنجاز تقدر ترجع له.
-
نفّذ أمثلة SQL المشروحة في قسم فحص تعريف القاعدة المنشأة على خادم MySQL 8 المحلي وتحقق من النتيجة.
-
بدّل بين الحالات الثلاث في المحاكي التفاعلي ضمن قسم تعديل ترميز القاعدة بـ ALTER وقارن مخرجات خادم MySQL.
تأشير المهمة إقرار منك بإتمامها، وليس تصحيحًا آليًا للكود. يُحفظ تقدمك في حسابك.
اختبر فهمك.
ووصلها للإتقان.
كل سؤال خطوة لقدّام. اختار، اكتب كود، وشوف نتيجتك فورًا.
أكمل المهام، واجمع كل الإجابات الصحيحة. أقل من 100%؟ راجع وأعد المحاولة.
الأسئلة متاحة للاطلاع. سجّل الدخول للتفاعل وحفظ تقدمك.
لمحة عن التحدي7 أسئلة تنتظرك +
لماذا لا يتضمن خادم MySQL 8.4 أمراً مباشراً باسم RENAME DATABASE لإعادة تسمية قاعدة البيانات؟
لأن تغيير اسم القاعدة مباشرة قد يخل بسلامة قاموس البيانات والصلاحيات والعروض، لذا يتم إنشاء قاعدة جديدة ونقل الكائنات إليها.
أي أمر في MySQL 8.4 يقفل قاعدة البيانات closetag_store بحيث يُسمح بالقراءة فقط وتُمنع جميع عمليات التعديل أو الحذف بالخطأ ERROR 3989؟
يفعّل الأمر ALTER DATABASE closetag_store READ ONLY = 1; وضع القراءة فقط لحماية القاعدة من التعديل أو الحذف.
يؤدي تنفيذ ALTER DATABASE closetag_store CHARACTER SET ... إلى تحديث الترميز والمقارنة الافتراضية للجداول الجديدة التي ستُنشأ لاحقاً في القاعدة.
صواب؛ يحدّث الأمر الإعدادات الافتراضية للقاعدة والتي ترثها الكائنات الجديدة عند إنشائها.
أي جدول نظام قياسي يتيح استعلام اسم القاعدة والترميز الافتراضي والمقارنة الافتراضية لجميع قواعد البيانات على الخادم؟
يوفر الجدول INFORMATION_SCHEMA.SCHEMATA البيانات الوصفية الكاملة لجميع قواعد البيانات في الخادم.
بعد تنفيذ الأمر DROP DATABASE closetag_temp_sandbox;، يمكنك استرجاع القاعدة المحذوفة فوراً عبر تشغيل أمر ROLLBACK;.
خطأ؛ أمر DROP DATABASE عملية هدم نهائية غير قابلة للتراجع ولا يمكن استردادها إلا من نسخة احتياطية خارجية.
ما الفائدة الهندسية من إضافة الشرط IF EXISTS في جملة DROP DATABASE IF EXISTS closetag_temp_sandbox;؟
يمنع توقف السكربت بالخطأ ERROR 1008 إذا لم تكن القاعدة موجودة، ويسجل بدلاً منه ملاحظة غير قاتلة Note 1008.
ما إجراءات الأمان التي يجب التحقق منها قبل تنفيذ أمر DROP DATABASE؟ (اختر كل ما ينطبق)
التحقق من القاعدة النشطة واسم المضيف عبر SELECT DATABASE(), @@hostname، والتأكد من وجود نسخة احتياطية، وحماية القواعد الحساسة بـ READ ONLY = 1.