في لغة SQL، تُستخدم خاصية CREATE VIEW
لإنشاء "عرض" (View)، وهو عبارة عن جدول افتراضي مُستند إلى نتيجة استعلام SQL. لا يتم تخزين البيانات بشكل فعلي في العرض، بل يتم إعادة حسابها في كل مرة يتم فيها الاستعلام عن العرض. يُعتبر العرض بمثابة استعلام مُخزّن يُمكن استخدامه كجدول عادي في استعلامات SQL الأخرى.
فوائد استخدام العروض:
- تبسيط الاستعلامات المعقدة: يُمكن إنشاء عرض يُمثل استعلامًا مُعقدًا ثم استخدامه في استعلامات أبسط، مما يُسهل قراءة الكود وكتابته وصيانته.
- الأمان: يُمكن استخدام العروض للتحكم في الوصول إلى البيانات، حيث يُمكن منح المستخدمين صلاحية الوصول إلى عرض معين دون منحهم صلاحية الوصول إلى الجدول الأصلي.
- تجريد البيانات: يُمكن استخدام العروض لإخفاء تعقيدات بنية قاعدة البيانات عن المستخدمين.
- اتساق البيانات: يُمكن استخدام العروض لضمان عرض البيانات بشكل مُتسق في جميع الاستعلامات.
صيغة CREATE VIEW
:
CREATE VIEW اسم_العرض ASSELECT عمود1, عمود2, ...FROM جدول1WHERE شرط;
اسم_العرض
: اسم العرض الذي سيتم إنشاؤه.SELECT
: استعلام SQL الذي يُحدد البيانات التي سيتم عرضها في العرض.FROM
: الجدول أو الجداول التي سيتم استخلاص البيانات منها.WHERE
: شرط اختياري لتحديد الصفوف التي سيتم تضمينها في العرض.
أمثلة:
لنفترض أن لدينا جدولًا باسم Customers
يحتوي على الأعمدة التالية: CustomerID
, Name
, City
, Country
.
- إنشاء عرض لعرض العملاء من مدينة معينة:
CREATE VIEW CustomersFromLondon ASSELECT CustomerID, NameFROM CustomersWHERE City = 'London';
الآن يُمكن الاستعلام عن هذا العرض كأنه جدول عادي:
SELECT * FROM CustomersFromLondon;
- إنشاء عرض يجمع بيانات من أكثر من جدول (باستخدام
JOIN
):
لنفترض أن لدينا جدولًا آخر باسم Orders
يحتوي على الأعمدة التالية: OrderID
, CustomerID
, OrderDate
.
CREATE VIEW CustomerOrders ASSELECT c.Name, o.OrderID, o.OrderDateFROM Customers cJOIN Orders o ON c.CustomerID = o.CustomerID;
الآن يُمكن الاستعلام عن هذا العرض لعرض أسماء العملاء وتواريخ طلباتهم:
SELECT * FROM CustomerOrders;
خيارات إضافية مع CREATE VIEW
:
OR REPLACE
: إذا كان العرض موجودًا بالفعل، سيتم استبداله بالعرض الجديد.
CREATE OR REPLACE VIEW CustomersFromLondon ASSELECT CustomerID, Name, CountryFROM CustomersWHERE City = 'London';
WITH CHECK OPTION
: يضمن أن أي عمليات إدخال أو تحديث للبيانات من خلال العرض تُطابق الشروط المُحددة في استعلامSELECT
الخاص بالعرض.
CREATE VIEW CustomersFromLondon ASSELECT CustomerID, NameFROM CustomersWHERE City = 'London'WITH CHECK OPTION;
في هذا المثال، إذا حاولت إدخال عميل من مدينة أخرى غير لندن من خلال العرض CustomersFromLondon
، فسيتم رفض العملية.
ملاحظات هامة:
- لا يُمكن استخدام
ORDER BY
في تعريف العرض إلا إذا تم استخدامTOP
أوLIMIT
(حسب نظام إدارة قواعد البيانات). - في بعض أنظمة إدارة قواعد البيانات، يُمكن تحديث البيانات من خلال العروض، ولكن هذا يعتمد على تعقيد العرض وبنية الجداول الأساسية.
- يُمكن حذف العرض باستخدام الأمر
DROP VIEW اسم_العرض;
.
باختصار، تُعتبر خاصية CREATE VIEW
أداة قوية في SQL لتبسيط الاستعلامات، وتحسين الأمان، وتجريد البيانات، وضمان اتساقها.