مقدمة إلى SQL

مكتمل

يرمز SQL إلى لغة الاستعلام المنظم. يتم استخدام SQL للاتصال بقاعدة بيانات ارتباطية. إنها اللغة القياسية لأنظمة إدارة قواعد البيانات الارتباطية. تستخدم عبارات SQL لتنفيذ مهام مثل تحديث البيانات في قاعدة بيانات أو استرداد البيانات من قاعدة بيانات. بعض نظم إدارة قواعد البيانات الارتباطية الشائعة التي تستخدم SQL تشمل Microsoft SQL Server، MySQL، PostgreSQL، MariaDB، وOracle.

إشعار

تم توحيد SQL في الأصل من قبل المعهد الأمريكي للمعايير الوطنية (ANSI) في عام 1986، والمنظمة الدولية للتوحيد القياسي (ISO) في عام 1987. ومنذ ذلك الحين، تم تمديد المعيار عدة مرات حيث أضاف موردو قواعد البيانات الارتباطية ميزات جديدة إلى أنظمتهم. بالإضافة إلى ذلك، يتضمن معظم موردي قواعد البيانات ملحقاتهم الخاصة التي ليست جزءا من المعيار، ما أدى إلى مجموعة متنوعة من لهجات SQL.

في هذه الوحدة، ستتعرف على SQL. سترى كيفية استخدامه للاستعلام عن البيانات وصيانتها في قاعدة بيانات، واللهجات المختلفة المتوفرة.

فهم لهجات SQL

يمكنك استخدام عبارات SQL مثل SELECTوINSERT و UPDATEوDELETEوCREATEوDROP لإنجاز كل ما يحتاج المرء إلى القيام به تقريبا مع قاعدة بيانات. على الرغم من أن عبارات SQL هذه هي جزء من معيار SQL، فإن العديد من أنظمة إدارة قواعد البيانات لديها أيضا ملحقات خاصة إضافية للتعامل مع تفاصيل نظام إدارة قاعدة البيانات هذا. توفر هذه الملحقات وظائف غير مشمولة بمعيار SQL، وتتضمن مجالات مثل إدارة الأمان وقابلية البرمجة. يستخدم Microsoft SQL Server، على سبيل المثال، Transact-SQL. يتضمن هذا التنفيذ ملحقات خاصة لكتابة الإجراءات والمشغلات المخزنة (رمز التطبيق الذي يمكن تخزينه في قاعدة البيانات)، وإدارة حسابات المستخدمين. كما أن PostgreSQL وMySQL لديهما إصداراتهما الخاصة من هذه الميزات.

تتضمن بعض اللهجات الشائعة من SQL ما يلي:

  • Transact-SQL (T-SQL). يستخدم Microsoft SQL Server وAzure SQL Database هذا الإصدار من SQL.

  • pgSQL. هذه هي اللهجة، مع تنفيذ الملحقات في PostgreSQL.

  • PL/SQL. هذه هي اللهجة التي تستخدمها Oracle. يرمز PL/SQL إلى اللغة الإجرائية/SQL.

يجب على المستخدمين الذين يخططون للعمل على وجه التحديد مع نظام قاعدة بيانات واحد معرفة تعقيدات لهجة SQL المفضلة لديهم والنظام الأساسي.

فهم أنواع عبارة SQL

يتم تجميع عبارات SQL في مجموعتين منطقيتين رئيسيتين، وهما:

  • لغة معالجة البيانات (DML)
  • لغة تعريف البيانات (DDL)

استخدام عبارات DML

يمكنك استخدام عبارات DML لمعالجة الصفوف في جدول ارتباطي. تمكنك هذه العبارات من استرداد (استعلام) البيانات أو إدراج صفوف جديدة أو تحرير صفوف موجودة. يمكنك أيضا حذف الصفوف إذا لم تعد بحاجة إليها.

عبارات DML الرئيسية الأربعة هي:

البيان‬ ‏‏الوصف
حدد … تحديد/قراءة الصفوف من جدول
أدخل إدراج صفوف جديدة في جدول
تحديث تحرير/تحديث الصفوف الموجودة
حذف حذف صفوف موجودة في جدول

سيدرج النموذج الأساسي ل عبارة INSERT صفا واحدا في كل مرة. بشكل افتراضي، يتم تطبيق عبارات SELECT و UPDATEوDELETE على كل صف في جدول. عادة ما تطبق عبارة WHERE مع هذه العبارات لتحديد المعايير؛ سيتم تحديد الصفوف التي تطابق هذه المعايير فقط أو تحديثها أو حذفها.

تحذير

لا يوفر SQL هل أنت متأكد؟ المطالبات، لذا كن حذرا عند استخدام DELETE أو UPDATE بدون عبارة WHERE لأنه يمكنك فقدان الكثير من البيانات أو تعديلها.

التعليمات البرمجية التالية هي مثال على عبارة SQL التي تحدد جميع الصفوف التي تطابق عامل تصفية واحد من جدول. تحدد عبارة FROM الجدول الذي يجب استخدامه:

SELECT *
FROM MyTable
WHERE MyColumn2 = 'contoso'

إذا أرجع استعلام العديد من الصفوف، فلن تظهر بالضرورة في أي تسلسل محدد. إذا كنت تريد فرز البيانات، يمكنك إضافة عبارة ORDER BY . سيتم فرز البيانات حسب العمود المحدد:

SELECT *
FROM MyTable
ORDER BY MyColumn1

يمكنك أيضا تشغيل عبارات SELECT التي تسترد البيانات من جداول متعددة باستخدام عبارة JOIN . تشير الصلات إلى كيفية توصيل الصفوف في جدول واحد بصفوف في الجدول الآخر لتحديد البيانات التي يجب إرجاعها. يحدد شرط الصلة الطريقة التي يرتبط بها جدولان في استعلام عن طريق:

  • تحديد العمود من كل جدول لاستخدامه في الصلة. يحدد شرط الصلة النموذجي مفتاحا خارجيا من جدول واحد والمفتاح الأساسي المقترن به في الجدول الآخر.
  • تحديد عامل تشغيل منطقي (على سبيل المثال، = أو <>،) لاستخدامه في مقارنة القيم من الأعمدة.

يعرض الاستعلام التالي مثالا ينضم إلى جدولين، باسم InventoryوCustomerOrder. يقوم باسترداد كافة الصفوف حيث تتطابق القيمة في عمود المعرف في جدول المخزون مع القيمة الموجودة في عمود InventoryID في جدول CustomerOrder .

SELECT *
FROM Inventory
JOIN CustomerOrder
ON Inventory.ID = CustomerOrder.InventoryID

يوفر SQL وظائف تجميعية. تحسب الدالة التجميعية نتيجة واحدة عبر مجموعة من الصفوف أو جدول بأكمله. يبحث المثال أدناه عن الحد الأدنى للقيمة في العمود MyColumn1 عبر جميع الصفوف في جدول MyTable :

SELECT MIN(MyColumn1)
FROM MyTable

يتوفر عدد من الدالات التجميعية الأخرى، بما في ذلك MAX (الذي يرجع أكبر قيمة في عمود)، وAVG (الذي يرجع متوسط القيمة، ولكن فقط إذا كان العمود يحتوي على بيانات رقمية)، وSUM (الذي يرجع مجموع جميع القيم في العمود، ولكن فقط إذا كان العمود رقميا).

يوضح المثال التالي كيفية تحديث صف موجود باستخدام SQL. يقوم بتعديل قيمة العمود الثاني ولكن فقط للصفوف التي تحتوي على القيمة 3 في MyColumn1. يتم ترك كافة الصفوف الأخرى دون تغيير:

UPDATE MyTable
SET MyColumn2 = 'contoso'
WHERE MyColumn1 = 3

تحذير

إذا حذفت عبارة WHERE ، فستعدل عبارة UPDATEكل صف في الجدول.

استخدم عبارة DELETE لإزالة الصفوف. يمكنك تحديد الجدول المراد الحذف منه، وعبارة WHERE التي تحدد الصفوف المراد حذفها:

DELETE FROM MyTable
WHERE MyColumn2 = 'contoso'

تحذير

إذا حذفت عبارة WHERE ، فستزيل عبارة DELETEكل صف من الجدول.

تأخذ عبارة INSERT شكلا مختلفا قليلا. يمكنك تحديد جدول وأعمدة في عبارة INTO وقائمة بالقيم التي سيتم تخزينها في هذه الأعمدة. يدعم SQL القياسي إدراج صف واحد فقط في كل مرة، كما هو موضح في المثال التالي. تسمح لك بعض اللهجات بتحديد عبارات VALUES متعددة لإضافة عدة صفوف في كل مرة:

INSERT INTO MyTable(MyColumn1, MyColumn2, MyColumn3)
VALUES (99, 'contoso', 'hello')

استخدام عبارات DDL

يمكنك استخدام عبارات DDL لإنشاء جداول وعناصر أخرى في قاعدة بيانات وتعديلها وإزالتها (الجدول والإجراءات المخزنة وطرق العرض وما إلى ذلك).

عبارات DDL الأكثر شيوعا هي:

البيان‬ ‏‏الوصف
خلق إنشاء كائن جديد في قاعدة البيانات، مثل جدول أو طريقة عرض.
تعديل تعديل بنية كائن. على سبيل المثال، تغيير جدول لإضافة عمود جديد.
DROP إزالة كائن من قاعدة البيانات.
اعاده تسميه إعادة تسمية كائن موجود.

تحذير

عبارة DROP قوية جدا. عند إسقاط جدول، يتم فقدان كافة الصفوف في هذا الجدول. ما لم يكن لديك نسخة احتياطية، فلن تتمكن من استرداد هذه البيانات.

ينشئ المثال التالي جدول قاعدة بيانات جديد. تحدد العناصر بين الأقواس تفاصيل كل عمود، بما في ذلك الاسم ونوع البيانات، وما إذا كان يجب أن يحتوي العمود دائما على قيمة (NOT NULL)، وما إذا كانت البيانات الموجودة في العمود تستخدم لتعريف صف بشكل فريد (PRIMARY KEY). يجب أن يحتوي كل جدول على مفتاح أساسي، على الرغم من أن SQL لا يفرض هذه القاعدة.

إشعار

يشار إلى الأعمدة التي تم وضع علامة NOT NULL عليها كأعمدة إلزامية . إذا حذفت عبارة NOT NULL ، يمكنك إنشاء صفوف لا تحتوي على قيمة في العمود. يقال إن عمودا فارغا في صف ما يحتوي على قيمة NULL .

CREATE TABLE MyTable
(
    MyColumn1 INT NOT NULL PRIMARY KEY,
    MyColumn2 VARCHAR(50) NOT NULL,
    MyColumn3 VARCHAR(10) NULL
);

تختلف أنواع البيانات المتوفرة للأعمدة في جدول بين أنظمة إدارة قواعد البيانات. ومع ذلك، تدعم معظم أنظمة إدارة قواعد البيانات الأنواع الرقمية مثل INT (عدد صحيح أو عدد صحيح)، وأنواع السلاسل مثل VARCHAR (VARCHAR ترمز إلى بيانات أحرف متغيرة الطول). لمزيد من المعلومات، راجع الوثائق الخاصة بنظام إدارة قاعدة البيانات المحدد.