لغة الاستعلامات المهيكلة
لغة الاستعلام المهيكل (بالإنجليزية: Structured Query Language) اختصاراً SQL، (لغة قواعد البيانات) هي لغة برمجة غير إجرائية، وهي بذلك تختلف عن لغات البرمجة المعتادة مثل سي أو جافا، حيث أن اللغات غير الإجرائية هي لغات متخصصة.[1][2][3] ولذلك فإن لغة الاستعلامات البنائية هي لغة للتعامل والتحكم مع قواعد البيانات المترابطة من خلال التعامل مع تراكيب البيانات وإجراء عمليات إدخال البيانات والحذف والفرز والبحث والتصفية والتعديل وخلافه.
إس كيو إل
|
تاريخ تطور لغة الاستعلامات البنائية
في يونيو 1970 نشر العالم البريطاني إدجار كود ورقة علمية بعنوان "A Relational Model of Data for Large Shared Data Banks" (نموذج مترابط للبيانات في مستودعات البيانات الضخمة المشتركة) قدم فيها نموذجا لإنشاء وإدارة قواعد البيانات عرف باسم نموذج قاعدة البيانات العلائقية (بالإنجليزية: Relational Database Model). وفقا لهذا النموذج، يتم الاحتفاظ بالبيانات في جداول متفرقة ترتبط فيما بينها بعلاقات. حقق نموذج قاعدة البيانات العلائقية نجاحًا سريعًا بين المختصين، لكن كان من الصعب التعامل مع هذا النموذج من خلال لغات البرمجة المألوفة آنذاك مثل لغة سي وبيسيك. لذلك سعى المختصون في ابتكار لغة برمجة جديدة تكون قادرة على إنشاء قواعد البيانات والتعامل معها وفق نموذج قاعدة البيانات العلائقية. قامت جماعة من الباحثين في مختبرات شركة آي بي إم بإنتاج أول لغة برمجة تحقق هذا الهدف وأطلقوا عليها الاسم سيكيول (بالإنجليزية: SEQUEL) وهذا اللفظ اختصار لعبارة اللغة الإنجليزية "Structured English Query Language" والتي تعني لغة الاستعلامات البنائية الإنجليزية. لكنهم تخلوا عن هذا الاسم سريعًا عندما اكتشفوا أنه علامة تجارية لشركة بريطانية تعمل في حقل الطيران واستبدلوه بالاسم الذي أصبح مستخدم حتى اليوم وهو إس كيو إل الذي يرمز إلى تركيب لغة الاستعلامات البنائية. قامت شركة آي بي إم باستخدام تركيب لغة الاستعلامات البنائية في إنتاج عدد من نظم إدارة قواعد البيانات المترابطة وتوزيعها مثل النظام System R والنظام System/38 والنظام SQL/DS وأخيرًا النظام DB2. لكن النظام الذي حقق النجاح الأكبر هو النظام الذي اعتمدته شركة أوراكل وحمل اسمها والذي طرحته لأول مرة عام 1979. منذ ابتكار لغة الاستعلامات البنائية في مطلع السبعينات، خضعت للعديد من التعديلات والتطويرات. كما قامت العديد من الشركات والمؤسسات البحثية بتصميم نسختها الخاصة من تركيب لغة الاستعلامات البنائية. ولمجابهة هذا الموقف قام المعهد الوطني الأمريكي للقياس (بالإنجليزية: American National Standards Institute أو ANSI) بإصدار أول نسخة قياسية من تركيب لغة الاستعلامات البنائية عام 1987 والتي عرفت باسم SQL1987. ثم توالت التعديلات والنسخ القياسية، وحاليًا فإن اللغة القياسة المعتمدة هي إس كيو إل:٢٠٠٨.
تاريخ التوحيد القياسي
السنة | الإسم | إسم آخر | تعليقلات |
---|---|---|---|
١٩٨٦ | إس كيو إل-٨٦ | إس كيو إل-٨٧ | عرفت رسمياً من قبل ANSI |
١٩٨٩ | إس كيو إل-٨٩ | FIPS 127-1 | مراجعة بسيطة، إضافة قيود التكامل |
١٩٩٢ | إس كيو إل-٩٢ | إس كيو إل ٢، FIPS 127-2 | مراجعة رئيسية (ISO 9075)، مستوى الإدخال SQL-92 |
١٩٩٩ | إس كيو إل:1999 | إس كيو إل ٣ |
|
٢٠٠٣ | إس كيو إل:٢٠٠٣ | تم إضافة الميزات المتعلقة بـ
| |
٢٠٠٦ | إس كيو إل:٢٠٠٦ | ISO/IEC 9075-14:2006 يحدد الطرق التي يمكن بها استخدام إس كيو إل مع XML. وهو يحدد طرق استيراد وتخزين بيانات XML في قاعدة بيانات إس كيو إل ومعالجتها داخل قاعدة البيانات ونشر كل من XML والبيانات التقليدية في نموذج XML. بالإضافة إلى ذلك، فإنه يتيح للتطبيقات دمج الاستعلامات في التعليمات البرمجية الخاصة بإس كيو إل الخاصة بها باستخدام XQuery، لغة استعلام XML التي نشرها اتحاد رابطة الشبكة العالمية (W3C)، للوصول في نفس الوقت إلى بيانات إس كيو إل العادية ومستندات XML | |
٢٠٠٨ | إس كيو إل:٢٠٠٨ |
| |
٢٠١١ | إس كيو إل:٢٠١١ |
| |
٢٠١٦ | إس كيو إل:٢٠١٦ | إضافة مطابقة نمط الصف، وظائف الجدول متعدد الأشكال، جسون | |
٢٠١٩ | إس كيو إل:٢٠١٩ | إضافة الجزء 15، المصفوفات متعددة الأبعاد (نوع MDarray والمعاملات) |
تركيب لغة الاستعلامات البنائية
تتركب لغة الاستعلامات البنائية من عدد من الكلمات المحجوزة، ويمكن تقسيم هذه الكلمات المحجوزة تبعًا لوظائفها التي تقوم بها إلى ثلاثة أقسام رئيسة هي:
- لغة تعريف البيانات (بالإنجليزية: Data Definition Language أو DDL)
- لغة معالجة البيانات (بالإنجليزية: Data Manipulation Language أو DML)
- لغة التحكم بالبيانات (بالإنجليزية: Data Control Language أو DCL)
لغة تعريف البيانات (DDL)
لغة تعريف البيانات هي مجموعة من الكلمات المحجوزة التي تقوم بإدارة الكائنات في قاعدة البيانات سواء بالإنشاء أو التعديل أو الحذف. تشتمل هذه المجموعة على الكلمات المحجوزة التالية:
- ALTER DATABASE: للتعديل في قاعدة البيانات
- ALTER TABLE: للتعديل في جدول
- CREATE DATABASE: لانشاء قاعدة بيانات
- CREATE INDEX: لانشاء مفتاح بحث
- CREATE TABLE: لانشاء جدول
- DROP DATABASE: لحذف قاعدة بيانات
- DROP INDEX: لحذف مفتاح بحث
- DROP TABLE: لحذف جدول
- RENAME TABLE: لاعادة تسمية جدول
لغة معالجة البيانات (DML)
وهي اللغة الخاصة بالتعامل مع البيانات ذات نفسها داخل قواعد البيانات. تشتمل هذه المجموعة على الكلمات المحجوزة التالية:
- SELECT: للاستعلام عن البيانات
- DELETE: لحذف البيانات
- UPDATE: لتحديث البيانات
- INSERT: لادخال بيانات جديدة
لغة التحكم بالبيانات (DCL)
وهي اللغة الخاصة بمنح المستخدمين صلاحيات معينة مثل:
- GRANT: تستخدم لمنح المستخدمين صلاحيات معينة لأداء مهام معينة.
- REVOKE: تستخدم لإلغاء الصلاحيات التي تم منحها بالأمر السابق.
ويمكن السماح للمستخدمين بالصلاحيات الآتية:
- CONNECT: الإتصال بقاعدة البيانات
- SELECT: الإستعلام عن بيانات من قاعدة البيانات
- INSERT: إضافة بيانات لقاعدة البيانات
- UPDATE: تحديث البيانات في قاعدة البيانات
- DELETE: حذف بيانات من قاعدة البيانات
- EXECUTE: إستدعاء الدوال المخزنة مسبقا
- USAGE: بدون صلاحيات
انتقادات حول لغة الاستعلامات البنائية
التصميم
وجهت العديد من الانتقادات إلى لغة الاستعلامات البنائية، وتتمحور هذه الانتقادات حول فكرة أن لغة الاستعلامات البنائية قد صممت لتكون لغة غير إجرائية مخصصة لبرمجة قواعد البيانات المترابطة وهو ما تحققه لغة الاستعلامات البنائية، إلا أن بعض أدواتها تظهر قصور عن تحقيق هذه الفكرة. وقد عمل الكثير من الباحثين على معالجة القصور، إلا أن المنتقدين يكررون باستمرار أن القصور يرجع إلى خلل في التصميم الأساسي للغة الاستعلامات البنائية وهو خلل لا يمكن معالجته لأنه جزء من مكونات لغة الاستعلامات البنائية الأساسية.
تعامد واكتمال
لم تدعم المواصفات المبكرة الميزات الرئيسية، مثل المفاتيح الرئيسية. كما تعذر تسمية مجموعات النتائج، ولم يتم تعريف الاستعلامات الفرعية. وقد أضيفت هذه المواصفات في عام ١٩٩٢.
القيمة الفارغه
مفهوم Null هو موضوع بعض المناقشات. تشير علامة Null إلى عدم وجود قيمة ولا حتى 0 لعمود عدد صحيح أو نص من طول 0 لعمود نصي.
التكرارات
انتقاد شعبي آخر هو السماح بالصفوف المكررة، مما يجعل التكامل مع لغات مثل بايثون، الذي من الصعب فيه تمثيل البيانات بدقة بسبب أنواع البيانات، صعباً من حيث التحليل وعدم وجود وحدات.
عدم تطابق المعاوقة
بمعنى مشابه إلى عدم تطابق معوقية الكائنات العلائقية، هناك عدم تطابق بين لغة إس كيو إل التصريحية واللغات الإجرائية التي يتم تضمين إس كيو إل فيها عادة.
بدائل لغة الاستعلامات البنائية
اقترح منتقدي لغة الاستعلامات البنائية تصميم بدائل لها يتم فيها تفادي القصور الذي تعاني منها هذه اللغة، تضم البدائل المقترحة:
- آي بي إم نظام الأعمال 12 (بالإنجليزية: IBM Business System 12) من شركة آي بي إم
- إي جي بي-كيو إل (بالإنجليزية: EJB-QL) من شركة صن ميكروسيستمز
- لغة استعلامات الكائنات (بالإنجليزية: Object Query Language)
النظم التي تدعم لغة الاستعلامات البنائية
تصمم معظم نظم أدارة قواعد البيانات المترابطة بحيث تكون متوافقة مع لغة الاستعلامات البنائية، ويعتبر التوافق مع النسخة المعيارية للغة الاستعلامات البنائية ANSI SQL من الميزات التي تحقق بها النظم شعبيتها. تضم هذه النظم عدداً كبيراً من البرمجيات بعضها ذات سمعة كبيرة وبعضها الآخر قد لا يزيد عدد مستخدمية عن مطوريه وأصدقائهم. أهم هذه النظم هي:
- أوراكل من الشركة المعروفة بنفس الاسم
- ماي إس كيو إل (بالإنجليزية: MySQL) من شركة ماي إس كيو إل إيه بي
- ميكروسوفت إس كيو إل سيرفر (بالإنجليزية: Microsoft SQL Server)
- بوستجري إس كيو إل (بالإنجليزية: PostgreSQL)
- آي بي إم دي بي 2 (بالإنجليزية: IBM Db2) من شركة آي بي إم
- بورلاند إنتربيس (بالإنجليزية: Borland Interbase) من شركة بورلاند
انظر أيضًا
- Wikibook SQL
- قاعدة البيانات الكائنية
- List of relational database management systems
- Comparison of relational database management systems
- Comparison of object–relational database management systems
- D (data language specification)
- Query by Example
- SQL syntax
- Oracle PL/SQL
- تي-سكيول
- معالجة عملياتية متصلة
- معالجة تحليلية متصلة
- مستودع البيانات
- Relational data stream management system
- NoSQL
- ممبس
- نموذج قاعدة البيانات الهرمية
- Star schema
- Snowflake schema
المراجع
- "Mimer SQL, Built on Standards"، Mimer SQL official website، Mimer Information Technology، 2009، مؤرشف من الأصل في 03 مايو 2016.
- "IBM PureData System for Analytics, Version 7.0.3"، مؤرشف من الأصل في 10 ديسمبر 2019.
- Reinsch, R. (1988)، "Distributed database for SAA"، IBM Systems Journal، 27 (3): 362–389، doi:10.1147/sj.273.0362.
وصلات خارجية
- بوابة برمجة الحاسوب
- بوابة علم الحاسوب
- بوابة قاعدة بيانات