في لغة SQL، تُستخدم خاصية CREATE VIEW لإنشاء "عرض" (View)، وهو عبارة عن جدول افتراضي مُستند إلى نتيجة استعلام SQL. لا يتم تخزين البيانات بشكل فعلي في العرض، بل يتم إعادة حسابها في كل مرة يتم فيها الاستعلام عن العرض. يُعتبر العرض بمثابة استعلام مُخزّن يُمكن استخدامه كجدول عادي في استعلامات SQL الأخرى.

فوائد استخدام العروض:

  • تبسيط الاستعلامات المعقدة: يُمكن إنشاء عرض يُمثل استعلامًا مُعقدًا ثم استخدامه في استعلامات أبسط، مما يُسهل قراءة الكود وكتابته وصيانته.
  • الأمان: يُمكن استخدام العروض للتحكم في الوصول إلى البيانات، حيث يُمكن منح المستخدمين صلاحية الوصول إلى عرض معين دون منحهم صلاحية الوصول إلى الجدول الأصلي.
  • تجريد البيانات: يُمكن استخدام العروض لإخفاء تعقيدات بنية قاعدة البيانات عن المستخدمين.
  • اتساق البيانات: يُمكن استخدام العروض لضمان عرض البيانات بشكل مُتسق في جميع الاستعلامات.

صيغة CREATE VIEW:

SQL
CREATE VIEW اسم_العرض AS
SELECT عمود1, عمود2, ...
FROM جدول1
WHERE شرط;
  • اسم_العرض: اسم العرض الذي سيتم إنشاؤه.
  • SELECT: استعلام SQL الذي يُحدد البيانات التي سيتم عرضها في العرض.
  • FROM: الجدول أو الجداول التي سيتم استخلاص البيانات منها.
  • WHERE: شرط اختياري لتحديد الصفوف التي سيتم تضمينها في العرض.

أمثلة:

لنفترض أن لدينا جدولًا باسم Customers يحتوي على الأعمدة التالية: CustomerID, Name, City, Country.

  1. إنشاء عرض لعرض العملاء من مدينة معينة:
SQL
CREATE VIEW CustomersFromLondon AS
SELECT CustomerID, Name
FROM Customers
WHERE City = 'London';

الآن يُمكن الاستعلام عن هذا العرض كأنه جدول عادي:

SQL
SELECT * FROM CustomersFromLondon;
  1. إنشاء عرض يجمع بيانات من أكثر من جدول (باستخدام JOIN):

لنفترض أن لدينا جدولًا آخر باسم Orders يحتوي على الأعمدة التالية: OrderID, CustomerID, OrderDate.

SQL
CREATE VIEW CustomerOrders AS
SELECT c.Name, o.OrderID, o.OrderDate
FROM Customers c
JOIN Orders o ON c.CustomerID = o.CustomerID;

الآن يُمكن الاستعلام عن هذا العرض لعرض أسماء العملاء وتواريخ طلباتهم:

SQL
SELECT * FROM CustomerOrders;

خيارات إضافية مع CREATE VIEW:

  • OR REPLACE: إذا كان العرض موجودًا بالفعل، سيتم استبداله بالعرض الجديد.
SQL
CREATE OR REPLACE VIEW CustomersFromLondon AS
SELECT CustomerID, Name, Country
FROM Customers
WHERE City = 'London';
  • WITH CHECK OPTION: يضمن أن أي عمليات إدخال أو تحديث للبيانات من خلال العرض تُطابق الشروط المُحددة في استعلام SELECT الخاص بالعرض.
SQL
CREATE VIEW CustomersFromLondon AS
SELECT CustomerID, Name
FROM Customers
WHERE City = 'London'
WITH CHECK OPTION;

في هذا المثال، إذا حاولت إدخال عميل من مدينة أخرى غير لندن من خلال العرض CustomersFromLondon، فسيتم رفض العملية.

ملاحظات هامة:

  • لا يُمكن استخدام ORDER BY في تعريف العرض إلا إذا تم استخدام TOP أو LIMIT (حسب نظام إدارة قواعد البيانات).
  • في بعض أنظمة إدارة قواعد البيانات، يُمكن تحديث البيانات من خلال العروض، ولكن هذا يعتمد على تعقيد العرض وبنية الجداول الأساسية.
  • يُمكن حذف العرض باستخدام الأمر DROP VIEW اسم_العرض;.

باختصار، تُعتبر خاصية CREATE VIEW أداة قوية في SQL لتبسيط الاستعلامات، وتحسين الأمان، وتجريد البيانات، وضمان اتساقها.