MySQL: إنشاء طرق عرض MySQL واستخدامها

آخر تحديث: 2026-08-26

الطريقة هي عبارة عن جدول افتراضي — فهي تجمع الاستعلامات المعقدة في واجهة بسيطة.

يتناول هذا الدرس إنشاء «طرق العرض» واستخدامها وإدارتها.

100%
graph TB
    A[How Views Work] --> B[CREATE VIEW DefinitionSQL]
    B --> C[StorageSQLDefinition]
    C --> D[When querying a view]
    D --> E[Expand to the bottom layerSQL]
    E --> F[Execute a query on the underlying table]
    F --> G[Return Results]
    B --> H[WITH CHECK OPTION]
    H --> I[When modifying data<br/>Validate View Conditions]

1. ما ستتعلمه



2. سيناريوهات واقعية

(1) المشكلة: الكتابة المتكررة للاستعلامات المعقدة

غالبًا ما أحتاج إلى الاستعلام عن «إحصائيات الطلبات للعملاء النشطين»، لكن استعلام SQL هذا طويل جدًّا:

SQL
SELECT c.name, COUNT(o.id), SUM(o.amount)
FROM customers c
LEFT JOIN orders o ON c.id = o.customer_id
WHERE c.status = 'active'
GROUP BY c.id;

لا بد لي من كتابته يدويًّا في كل مرة.

(2) حل مشكلة العرض

SQL
CREATE VIEW active_customer_orders AS
SELECT c.name, COUNT(o.id) AS order_count, SUM(o.amount) AS total_amount
FROM customers c
LEFT JOIN orders o ON c.id = o.customer_id
WHERE c.status = 'active'
GROUP BY c.id;

-- Query the view directly in the future
SELECT * FROM active_customer_orders;


3. إنشاء عرض

▶ مثال: العرض الأساسي

SQL
-- Create a View
CREATE VIEW v_active_users AS
SELECT id, username, email, created_at
FROM users
WHERE status = 'active';

-- Using Views(Query like a table)
SELECT * FROM v_active_users;
SELECT * FROM v_active_users WHERE created_at >= '2026-01-01';
▶ جرّب الكود

▶ مثال: طرق العرض المعقدة

SQL
-- Order Statistics View
CREATE VIEW v_order_stats AS
SELECT 
    c.id AS customer_id,
    c.name AS customer_name,
    COUNT(o.id) AS total_orders,
    SUM(o.amount) AS total_amount,
    AVG(o.amount) AS avg_amount,
    MAX(o.order_date) AS last_order_date
FROM customers c
LEFT JOIN orders o ON c.id = o.customer_id
GROUP BY c.id, c.name;
▶ جرّب الكود

4. طرق العرض مقابل الجداول

البعد العرض الجدول
تخزين البيانات بدون تخزين (افتراضي) يخزن البيانات الفعلية
التحديث القيود (يمكن تحديثها في «العرض البسيط») يمكن إضافتها أو حذفها أو تعديلها بحرية
الأداء إعادة الحساب عند كل استعلام القراءة مباشرة
الغرض تبسيط الاستعلامات والتحكم في الوصول تخزين البيانات


5. تعديل وحذف طرق العرض

▶ مثال: عرض الإدارة

SQL
-- Edit View
ALTER VIEW v_active_users AS
SELECT id, username, email, phone, created_at
FROM users
WHERE status = 'active' AND email_verified = TRUE;

-- or use CREATE OR REPLACE
CREATE OR REPLACE VIEW v_active_users AS
SELECT id, username, email FROM users WHERE status = 'active';

-- Delete View
DROP VIEW IF EXISTS v_active_users;

-- View View Definition
SHOW CREATE VIEW v_active_users;
▶ جرّب الكود

6. مع خيار الشيك

تأكد من أن البيانات التي تم تعديلها من خلال طريقة عرض ما لا تزال تستوفي معايير تلك الطريقة.

▶ مثال: خيار الفحص

SQL
CREATE VIEW v_active_users AS
SELECT * FROM users WHERE status = 'active'
WITH CHECK OPTION;

-- Allowed: status is active
UPDATE v_active_users SET username = 'new_name' WHERE id = 1;

-- Prohibited: After the revision status is no longer active, will be rejected
UPDATE v_active_users SET status = 'inactive' WHERE id = 1;
-- ERROR: CHECK OPTION failed
▶ جرّب الكود

7. حالات استخدام «الطرق»

السيناريو الوصف
تبسيط الاستعلامات المعقدة تغليف عمليات ربط الجداول المتعددة (JOIN) وتوفير واجهة بسيطة
التحكم في الوصول عرض الحقول المحددة فقط للمستخدمين
تجريد البيانات إخفاء التغييرات التي تطرأ على بنية الجدول الأساسية
إحصائيات التقارير منطق إحصائي محدد مسبقًا

▶ مثال: التحكم في الوصول

SQL
-- Create a view that contains only public information
CREATE VIEW v_user_public AS
SELECT id, username, avatar FROM users;

-- Grant only view permissions to regular users
GRANT SELECT ON mydb.v_user_public TO 'readonly_user'@'localhost';
▶ جرّب الكود

❓ أسئلة شائعة

س هل يمكن إنشاء فهارس على طرق العرض؟
ج لا. طرق العرض هي جداول افتراضية لا تحتوي على مساحة تخزين فعلية. وتعتمد الاستعلامات التي تُجرى على طرق العرض على الفهارس الموجودة في الجداول الأساسية من أجل تحسين الأداء.
س هل يمكن تداخل العروض؟
ج نعم، CREATE VIEW v2 AS SELECT * FROM v1. ومع ذلك، فإن التداخل المفرط قد يؤثر على الأداء.
س هل البيانات المعروضة في طريقة العرض تُعرض في الوقت الفعلي؟
ج نعم. يتم إعادة حساب البيانات المعروضة من الجداول الأساسية مع كل استعلام، لذا فإنك ترى أحدث البيانات.
س هل تشغل طرق العرض مساحة تخزين؟
ج لا، لا تشغل. طرق العرض تخزن تعريف SQL فقط؛ ولا تخزن البيانات الفعلية.
س هل يمكن أن تحسّن «الطرق» الأداء؟
ج لا. «الطرق» هي مجرد «تسهيلات لغوية»؛ حيث يتم إعادة تنفيذ لغة SQL الأساسية مع كل استعلام. يجب أن يعتمد تحسين الأداء على الفهارس.

📖 ملخص


📝 تمارين

  1. مشكلة أساسية (مستوى الصعوبة: ⭐): أنشئ عرضًا يعرض فقط المعرّف واسم المستخدم والبريد الإلكتروني للمستخدمين النشطين.

  2. تمرين متقدم (مستوى الصعوبة: ⭐⭐): أنشئ عرضًا إحصائيًا للطلبات يتضمن اسم العميل وعدد الطلبات والمبلغ الإجمالي.

  3. التحدي (مستوى الصعوبة: ⭐⭐⭐): قم بتنفيذ التحكم في الوصول باستخدام طرق العرض؛ وأنشئ طريقة عرض للقراءة فقط وامنح حق الوصول لمستخدمين محددين.

Web-Tutorial.com

فريق Web-Tutorial التقني

منصة دروس برمجية يديرها عدة مطورين. كل درس يتم كتابته ومراجعته بواسطة مطورين متخصصين في المجال. نعمل على ضمان دقة وموثوقية المحتوى — إذا لاحظت أي مشكلة، فيرجى إخبارنا.

100%