انتقل إلى محتوى الدرس
الدرس 50
دورة MySQL

إنشاء عروض البيانات Views والاستعلام منها في MySQLMySQL Creating and Querying Views

تعلّم إنشاء عروض البيانات Views والاستعلام منها في MySQL بأسلوب MySQL 8 الحديث مع أمثلة استعلامات SQL وتطبيقات تفاعلية.
أقسام الدرس
6
الأمثلة
5
اللغة
العربية
تاريخ النشر
غير محدد
المشاهدات
7
محتوى الدرس
في هذا الدرس 6تصفّح المواضيع

يُعرَّف العرض View في MySQL بأنه جدول افتراضي مسمّى (Virtual Table) يتكوّن محتواه من استعلام SELECT محفوظ داخل قاموس بيانات المحرك (Data Dictionary). وعلى خلاف الجداول الفيزيائية الأساسية (Base Tables) في محرك InnoDB، لا يحجز العرض مساحة تخزينية لنسخ الصفوف على القرص الصلب، بل يعيد تنفيذ الاستعلام الكامن خلفه لحظياً في كل مرة تقرأ فيها البيانات منه.

تُستخدم العروض في الأنظمة الإنتاجية لتحقيق ثلاثة أهداف هندسية رئيسية:

  • تغليف الاستعلامات المعقدة (Query Encapsulation): اختصار عبارات الربط المتعددة INNER JOIN وLEFT JOIN والتجميعات في اسم منطقي واحد يسهل استدعاؤه من تطبيقات الواجهة الخلفية.
  • عزل طبقة التطبيق عن تغيرات المخطط (Schema Abstraction): إذا قُسِّم جدول كبير لاحقاً إلى جدولين، يمكنك تعديل تعريف العرض ليحافظ على نفس أسماء الأعمدة دون كسر كود التطبيق.
  • توحيد منطق الأعمال (Single Source of Truth): بدلاً من تكرار معادلة حساب صافي الفاتورة أو حالة العميل النشط في عشرات الملفات البرمجية، تُكتب المعادلة مرة واحدة داخل العرض.
مخطط إنشاء عروض البيانات Views والاستعلام منها في MySQL
SQL
SELECT * FROM v_active_customers;

تتجلى القوة الحقيقية للأمر CREATE VIEW عندما تبني العرض فوق استعلام يربط عدة جداول (مثل ربط جدول الطلبات orders بجدول العملاء customers) مع حساب مجاميع مالية عبر دوال التجميع COUNT وSUM. كما يتيح لك MySQL تحديد أسماء صريحة لأعمدة العرض بين قوسين مباشرة بعد اسم العرض أو عبر الاسم المستعار AS داخل قائمة SELECT.

يشترط MySQL أن تكون أسماء الأعمدة داخل العرض فريدة تماماً؛ فإذا اشترك جدولان مربوطان في عمود يحمل الاسم id أو created_at، فيجب منح كل عمود اسماً مستعاراً مميزاً قبل حفظ العرض.

SQL
CREATE VIEW v_customer_order_totals (...) AS SELECT ...;

محاكي عروض البيانات التفاعلي

يُعدّ حجب الأعمدة الحساسة (Column-Level Projection & Masking) من أهم استخدامات العروض في بيئات الشركات. فجدول الموظفين الأساسي employees يحتوي عادةً على أعمدة سرية مثل الراتب الأساسي base_salary ورقم الآيبان البنكي iban_number وبصمة كلمة المرور، بينما تحتاج لوحة دليل الموظفين الداخلي إلى عرض الاسم والقسم والبريد المهني فقط.

يمكنك أيضاً دمج دوال النصوص والشرط مثل CONCAT وRIGHT وCASE داخل تعريف العرض لإخفاء جزء من البيانات الحساسة (Partial Masking) بدلاً من إزالتها بالكامل.

SQL
SELECT emp_id, full_name, masked_nid FROM v_employee_directory;

عندما تتغير متطلبات العمل وتحتاج إلى إضافة عمود جديد أو تعديل شرط التصفية داخل عرض موجود مسبقاً، فإن تنفيذ CREATE VIEW بنفس الاسم سيُرجع الخطأ ERROR 1050 (42S01): Table already exists. ولتجنب حذف العرض يدوياً ثم إعادة إنشائه، يوفر MySQL صيغتين قياسيتين لتحديث تعريف العرض في مكانه:

  • صيغة CREATE OR REPLACE VIEW: تنشئ العرض إذا لم يكن موجوداً، أو تستبدل تعريفه فوراً إذا كان موجوداً مسبقاً، وهي الصيغة الأكثر شيوعاً في ملفات الترحيل (Migrations).
  • صيغة ALTER VIEW: تعدّل تعريف عرض موجود بالفعل، وتفشل برسالة خطأ واضحة إذا لم يكن العرض موجوداً في قاعدة البيانات.
SQL
CREATE OR REPLACE VIEW v_active_customers AS SELECT ...;

عند تنفيذ الأمر العادي SHOW TABLES، يعرض MySQL أسماء الجداول الفيزيائية والعروض الافتراضية معاً في قائمة واحدة. وللتمييز بينهما بدقة وفحص الكود المصدري لأي عرض أو حذفه عند انتهاء الحاجة إليه، نستخدم أدوات الفحص والإدارة التالية:

  • SHOW FULL TABLES WHERE Table_type = 'VIEW': يعرض قائمة العروض الافتراضية فقط مع عمود التصنيف VIEW في مقابل BASE TABLE.
  • SHOW CREATE VIEW view_name: يكشف نص استعلام SELECT الكامل المخزن داخل MySQL مع ترميز المحارف.
  • DROP VIEW IF EXISTS view_name: يحذف تعريف العرض فقط من قاموس البيانات دون المساس بأي صف أو جدول من الجداول الأساسية.
SQL
SHOW FULL TABLES WHERE Table_type = 'VIEW';

يلخّص الجدول المرجعي التالي أوامر إدارة العروض الافتراضية في MySQL 8.4 ومزاياها وحدودها الهندسية عند تصميم قواعد البيانات:

العنصر / الأمرالصيغة القياسيةالوظيفة الأساسيةملاحظة هندسية في MySQL 8.4
إنشاء عرض جديدCREATE VIEW v_name AS SELECT ...حفظ استعلام كجدول افتراضيلا يخزن بيانات مكررة على القرص
تحديث تعريف العرضCREATE OR REPLACE VIEW v_name AS ...استبدال بنية العرض ذرياًيحافظ على استمرارية الاستعلامات المتزامنة
حجب الأعمدة الحساسةSELECT safe_cols FROM base_tblإخفاء الرواتب والبيانات السريةيدعم دمج دوال التقنيع مثل CONCAT وRIGHT
فحص العروض المسجلةSHOW FULL TABLES WHERE Table_type='VIEW'تمييز العروض عن الجداول الفيزيائيةيمكن فحص الكود عبر SHOW CREATE VIEW
حذف العرض بأمانDROP VIEW IF EXISTS v_nameإزالة تعريف العرض من القاموسلا يحذف أي صف من الجداول الأساسية
خلاصة المعرفة ومحطة الانتقال

ملخص الدرس

حصاد الدرس

مراجعة مركّزة لأهم المفاهيم والقواعد الهندسية التي أتقنتها في هذا الدرس قبل التطبيق العملي

ماذا تعلّمت في هذا الدرس؟

تعلمت في هذا الدرس مفهوم العرض الافتراضي (View) في MySQL 8.4، وكيفية إنشائه بـ CREATE VIEW، وحجب الأعمدة الحساسة، وتحديث بنيته عبر CREATE OR REPLACE VIEW، وفحصه بـ SHOW FULL TABLES وحذفه بأمان بـ DROP VIEW IF EXISTS.

الخطوة التالية والدرس القادم

في الدرس القادم سنتعمق في إدارة العروض القابلة للتحديث (Updatable Views) وشروط تعديل البيانات عبر العرض وحماية الصفوف من الاختفاء غير المقصود.

مشاركة

هل كان هذا الدرس مفيدًا؟

جارٍ تحميل الآراء…

ابنِ لغتك البرمجية

المصطلحات4

راجع المعنى، اشرحه لنفسك، ثم علّم البطاقة كمفهومة.

0 / 4 مفهومةأول بطاقة، أول خطوة
01 Creating Views إنشاء العروض
تعلّم إنشاء عروض البيانات Views والاستعلام منها في MySQL بأسلوب MySQL 8 الحديث مع أمثلة استعلامات SQL وتطبيقات تفاعلية.
للمراجعة
02 Concept of Virtual Saved Queries مفهوم العرض كجدول افتراضي
المفهوم الهندسي الأساسي وقواعد التنفيذ العملي لقسم مفهوم العرض كجدول افتراضي في قواعد بيانات MySQL 8.4 الحديثة.
للمراجعة
03 Creating Views with CREATE VIEW إنشاء العرض بـ CREATE VIEW
المفهوم الهندسي الأساسي وقواعد التنفيذ العملي لقسم إنشاء العرض بـ CREATE VIEW في قواعد بيانات MySQL 8.4 الحديثة.
للمراجعة
04 Hiding Sensitive Columns in Views حجب الأعمدة الحساسة بالعروض
المفهوم الهندسي الأساسي وقواعد التنفيذ العملي لقسم حجب الأعمدة الحساسة بالعروض في قواعد بيانات MySQL 8.4 الحديثة.
للمراجعة

اقرأ البطاقات بحرية. سجّل الدخول لحفظ تقدم مراجعتك.

حروف قليلة. معنى كامل.

الاختصارات2

راجع المعنى، اشرحه لنفسك، ثم علّم البطاقة كمفهومة.

0 / 2 مفهومةأول بطاقة، أول خطوة
01 DDL DDL
Data Definition Language
لغة تعريف البيانات (وتشمل أوامر CREATE VIEW وALTER VIEW وDROP VIEW).
للمراجعة
02 PII PII
Personally Identifiable Information
معلومات التعريف الشخصية الحساسة التي يُنصح بحجبها أو تقنيعها داخل عروض القراءة.
للمراجعة

اقرأ البطاقات بحرية. سجّل الدخول لحفظ تقدم مراجعتك.

من الفهم للتطبيق

مهامك قبل الاختبار

خطوة صغيرة كل مرة. وإنجاز تقدر ترجع له.

0/2مهام منجزة
  1. افتح عميل MySQL 8.4 المحلي ونفّذ استعلام SQL المشروح في قسم مفهوم العرض كجدول افتراضي للتحقق من النتائج.

  2. بدّل بين السيناريوهات الثلاثة في المحاكي التفاعلي ضمن قسم إنشاء العرض بـ CREATE VIEW وقارن مخرجات MySQL 8.4.

تأشير المهمة إقرار منك بإتمامها، وليس تصحيحًا آليًا للكود. يُحفظ تقدمك في حسابك.

مساحة التحدي

اختبر فهمك.
ووصلها للإتقان.

كل سؤال خطوة لقدّام. اختار، اكتب كود، وشوف نتيجتك فورًا.

4أسئلة 1أنواع تحديات 100%هدف الإتقان
تصحيح تلقائي. فرص بلا حدود.

أكمل المهام، واجمع كل الإجابات الصحيحة. أقل من 100%؟ راجع وأعد المحاولة.

الأسئلة متاحة للاطلاع. سجّل الدخول للتفاعل وحفظ تقدمك.

لمحة عن التحدي4 أسئلة تنتظرك
01

ماذا يخزن محرك MySQL 8.4 على القرص الصلب عند تنفيذ الأمر CREATE VIEW v_active_customers AS SELECT ...؟

اختر الإجابة الأدق وفق قواعد محرك MySQL 8.4.

02

أي عبارة SQL تحدّث تعريف عرض موجود مسبقاً بأمان دون الحاجة لحذفه يدوياً أولاً؟

اختر الإجابة الأدق وفق قواعد محرك MySQL 8.4.

03

أي أمر يعرض قائمة الجداول والعروض مع عمود Table_type للتمييز بين VIEW وBASE TABLE؟

اختر الإجابة الأدق وفق قواعد محرك MySQL 8.4.

04

ماذا يحدث لبيانات الجدول الأساسي عند تنفيذ الأمر DROP VIEW IF EXISTS v_active_customers؟

اختر الإجابة الأدق وفق قواعد محرك MySQL 8.4.