الفرق بين المراجعتين لصفحة: «SQL»
إضافة مثال |
Wael-aldaghma (نقاش | مساهمات) ط إشارة لمقال قواعد البيانات الشامل |
||
(4 مراجعات متوسطة بواسطة مستخدم واحد آخر غير معروضة) | |||
سطر 1: | سطر 1: | ||
'''SQL''' هي اختصارٌ للعبارة Structured Query Language (أي لغة الاستعلام البنوية)، وهي اللغة المستخدمة لإجراء عمليات على قواعد البيانات، بما في ذلك إضافة أو تحديث أو حذف البيانات من قاعدة البيانات، أو لتعديل بينة قاعدة البيانات نفسها. | '''SQL''' هي اختصارٌ للعبارة Structured Query Language (أي لغة الاستعلام البنوية)، وهي اللغة المستخدمة لإجراء عمليات على قواعد البيانات، بما في ذلك إضافة أو تحديث أو حذف البيانات من قاعدة البيانات، أو لتعديل بينة قاعدة البيانات نفسها. | ||
{{Course|course=cs}} | |||
__TOC__ | |||
== بنية تعليمات SQL == | |||
تُنفَّذ تعليمات SQL على الجداول الموجودة في [https://academy.hsoub.com/devops/servers/databases/%D9%82%D9%88%D8%A7%D8%B9%D8%AF-%D8%A7%D9%84%D8%A8%D9%8A%D8%A7%D9%86%D8%A7%D8%AA-database/ قواعد البيانات]، وتلك الجداول تتألف من أعمدة وسجلات؛ أما التعليمات فهي تتألف من كلمات محجوزة ومتغيرات ومعاملات (وغير ذلك) التي تُحدِّد ما هي العملية التي نريد تنفيذها. | |||
لغة SQL تُصرِّح عن النتيجة النهائية للعملية التي نريد إجراءها، وليس عن التفاصيل اللازمة لطريقة إجراء تلك العملية، إذ إنَّ محركات قواعد البيانات هي المسؤولة عن تلك التفاصيل. | لغة SQL تُصرِّح عن النتيجة النهائية للعملية التي نريد إجراءها، وليس عن التفاصيل اللازمة لطريقة إجراء تلك العملية، إذ إنَّ محركات قواعد البيانات هي المسؤولة عن تلك التفاصيل. | ||
المثال الآتي يُبيّن استخدام الاستعلام <code>[[SQL/select|SELECT]]</code> لتحديد عمودين من أحد الجداول، مع توفير اسم بديل (<code>[[SQL/alias|AS]]</code>) لأحد الأعمدة، لتحديد السجلات التي ينطبق عليها شرطٌ معيّن (<code>[[SQL/where|WHERE]]</code>)، وترتيبها وفق أحد الأعمدة (<code>[[SQL/order by|ORDER BY]]</code>):<syntaxhighlight lang="sql"> | المثال الآتي يُبيّن استخدام الاستعلام <code>[[SQL/select|SELECT]]</code> لتحديد عمودين من أحد الجداول، مع توفير اسم بديل (<code>[[SQL/alias|AS]]</code>) لأحد الأعمدة، لتحديد السجلات التي ينطبق عليها شرطٌ معيّن (<code>[[SQL/where|WHERE]]</code>)، وترتيبها وفق أحد الأعمدة (<code>[[SQL/order by|ORDER BY]]</code>):<syntaxhighlight lang="sql"> | ||
سطر 14: | سطر 16: | ||
{{:SQL/Topics}} | {{:SQL/Topics}} | ||
[[تصنيف:SQL]] | [[تصنيف:SQL|{{SUBPAGENAME}}]] | ||
== مصادر == | == مصادر == | ||
سطر 24: | سطر 26: | ||
* [https://docs.microsoft.com/en-us/sql/index توثيق محرك SQLServer] | * [https://docs.microsoft.com/en-us/sql/index توثيق محرك SQLServer] | ||
__NOEDITSECTION__ | __NOEDITSECTION__ | ||
{{#seo: | |||
description=شرح SQL باللغة العربية مدعّم بالأمثلة ضمن توثيق موسوعة حسوب الكامل وعالي الجودة لمختلف لغات البرمجة وتقنيات الويب والجوال. | |||
}} |
المراجعة الحالية بتاريخ 05:22، 6 يوليو 2023
SQL هي اختصارٌ للعبارة Structured Query Language (أي لغة الاستعلام البنوية)، وهي اللغة المستخدمة لإجراء عمليات على قواعد البيانات، بما في ذلك إضافة أو تحديث أو حذف البيانات من قاعدة البيانات، أو لتعديل بينة قاعدة البيانات نفسها.
- 62 ساعة فيديو تدريبية
- من الصفر دون الحاجة لخبرة مسبقة
- شهادة معتمدة من أكاديمية حسوب
- متابعة أثناء الدورة من فريق مختص
بنية تعليمات SQL
تُنفَّذ تعليمات SQL على الجداول الموجودة في قواعد البيانات، وتلك الجداول تتألف من أعمدة وسجلات؛ أما التعليمات فهي تتألف من كلمات محجوزة ومتغيرات ومعاملات (وغير ذلك) التي تُحدِّد ما هي العملية التي نريد تنفيذها.
لغة SQL تُصرِّح عن النتيجة النهائية للعملية التي نريد إجراءها، وليس عن التفاصيل اللازمة لطريقة إجراء تلك العملية، إذ إنَّ محركات قواعد البيانات هي المسؤولة عن تلك التفاصيل.
المثال الآتي يُبيّن استخدام الاستعلام SELECT
لتحديد عمودين من أحد الجداول، مع توفير اسم بديل (AS
) لأحد الأعمدة، لتحديد السجلات التي ينطبق عليها شرطٌ معيّن (WHERE
)، وترتيبها وفق أحد الأعمدة (ORDER BY
):
SELECT name, age*365 AS AgeDays
FROM students
WHERE age > 10
ORDER BY name;
نُظِّم هذا الدليل بتخصيص صفحة لكل عبارة أو كلمة محجوزة أو معامل في SQL، ويكون اسم تلك الصفحة بأحرفٍ صغيرة، وإذا تألفت العبارة من أكثر من كلمة فيُفصَل بينها بشرطة سفلية؛ فمثلًا صفحة الاستعلام SELECT
ستكون موجودةً على الرابط SQL/select، أما صفحة ORDER BY
فهي موجودة في SQL/order_by وهكذا...
أنواع البيانات
أنواع البيانات التي يمكن استخدامها مع محركات قواعد البيانات المختلفة (البيانات العددية، والبيانات النصية، والوقت والتاريخ، والبيانات الثنائية ...إلخ.).
أساسيات لغة SQL
القيمة NULL
يستخدم التعبير IS NULL
للتأكد من خلو القيمة (أي لا توجد قيمة في الحقل المحدد).
التعليقات Comments
تضاف التعليقات إلى الشيفرة بهدف تسهيل قراءتها أو كتابة ملاحظات جانبية مساعدة.
SELECT count(*); -- This comment continues to the end of line
SELECT count(*); /* This is an inline comment */;
التسمية Alias
يمكن إطلاق تسمية على الجداول أو الحقول تسهيلًا للتعامل معها بالاسم البديل المؤقت، وذلك عند الحاجة إلى الوصول إلى نفس الجدول أو الحقل عدة مرات، وعندما يكون اسم الجدول أو الحقل طويلًا وصعب الكتابة.
الاستعلامات الفرعية Subqueries
هي استعلام واقعٌ ضمن استعلام آخر بهدف استخدام البيانات الناتجة عنه في الاستعلام الرئيسي الذي يحتويه.
التعامل مع السجلات
عرض السجلات SELECT
يُستخدَم للحصول على سجلات البيانات من الجداول المخزنة في قاعدة البيانات، قد تكون نتيجة الاستعلام سجلًا أو أكثر، وعمودًا أو أكثر.
الشرط WHERE
يُستخدم ضمن استعلام SELECT
لتحديد الشروط التي تُعرض أو تحذف السجلات أو تُعدل قيم حقولها وفقًا لها، إذ يُمكن أن تستخدم أيضًا مع استعلامَي DELETE
و UPDATE
.
التجميع GROUP BY
تُستخدم في استعلام SELECT
بهدف تجميع النتائج ضمن مجموعات بحسب عمود أو أكثر من الجدول.
الشرط HAVING
يُستخدم ضمن استعلام SELECT
لتحديد شرطٍ معينٍ عند تجميع السجلات مع بعضها GROUP BY
.
ترتيب النتائج ORDER BY
تتلخص مهمة عبارة ORDER BY
بترتيب النتائج (تصاعديًا أو تنازليًا) ضمن استعلام SELECT
وفق عمودٍ (أو أكثر) من الجدول.
الحصول على عدد محدد من النتائج
يمكن تحديد عدد السجلات التي ستُجلب من الجدول ضمن استعلام SELECT
أو التي ستُحذف من الجدول ضمن استعلام DELETE
أو ستُحدَّث قيمها ضمن استعلام UPDATE
، هنالك اختلافات بين محركات قواعد البيانات، ويُفضَّل العودة إلى هذه الصفحة للتفاصيل.
إدخال السجلات للجدول INSERT
مهمة هذا الاستعلام هي إنشاء سجل جديد في الجدول.
حذف السجلات من الجدول DELETE
يُستخدم لحذف سجل أو أكثر.
الاستبدال REPLACE
هو استعلام يستخدم للقيام بنفس مهمة الاستعلام INSERT
(إضافة سجل جديد للجدول) ولكن لإدخال سجلٍ بنفس القيمة الموجودة مسبقًا في عمود المفتاح الأوليّ وذلك منعًا لحدوث التكرار.
التعديل UPDATE
يُستخدم هذا الاستعلام من أجل تحديث قيم البيانات المخزنة في سجلات الجداول.
ربط الجداول
الربط الداخلي INNER JOIN
يُستخدم لتحديد بعض السجلات من الجدول اليساري والجدول اليميني بحيث تحقق شرط الربط.
الربط اليساري LEFT JOIN
يُستخدم لتحديد كافة السجلات من الجدول اليساري وبعض السجلات من الجدول اليميني التي تحقق شرط الربط.
الربط اليميني RIGHT JOIN
يُستخدم لتحديد بعض السجلات التي تحقق شرط الربط من الجدول اليساري وكافة السجلات من الجدول اليميني.
الربط التامّ FULL JOIN
يُستخدم لتحديد كافة السجلات من الجدولين اليساري واليميني بغض النظر عن تحقيقها للشرط.
المعاملات
المعاملات الأساسية
تتضمن المعاملات الأساسية المعاملات الرياضية، والمعاملات الثنائية، ومعاملات المقارنة، والمعاملات المنطقية، وتحتوي الصفحة أيضًا على جداول تبيّن أولوية المعاملات.
النتائج المتمايزة DISTINCT
تستخدم للحصول على قيمٍ فريدةٍ غير مكررة، وغالبًا ما تستخدم في استعلام SELECT
للحصول على سجلات لا تتكرر القيم فيما بينها.
التأكد من وجود سجل EXISTS
يستخدم للتأكد من وجود سجلات ناتجة عن الاستعلام الفرعي المستخدم في الاستعلام الرئيسي.
المعامل LIKE
يستخدم لتحديد نمط معين للسلسلة النصية يُحدد الشرط وفقًا له.
المعاملات المنطقية AND, OR, NOT
غالبًا ما تستخدم المعاملات المنطقية (AND
و OR
و NOT
) في عبارة WHERE
للربط ما بين الشروط أو نفيها.
معاملات المجال IN, BETWEEN
تُستخدَم هذه المعاملات لتحديد مجال أو عدد محدّد من القيم في SQL.
معاملات الضم UNION, INTERSECT, EXCEPT
تُستخدَم هذه المعاملات للربط بين نتائج الاستعلامات في SQL.
معاملات المقارنة ALL, SOME, ANY
تستخدم بهدف المقارنة مع القيم الناتجة (لعمودٍ واحدٍ) عن أحد الاستعلامات الفرعية.
بنى التحكم
شرط IF
تستخدم صيغة IF
لاختبار شرط معين للتأكّد من تحقّقه أو عدم تحقّقه وإجراء ما يتناسب مع ذلك.
شرط CASE
تستخدم لاختبار شرط معين بشكل مشابه لتعليمات if/else
في لغات البرمجة الأخرى لتعيد أحد التعابير الممكنة.
حلقة WHILE
تهدف حلقة WHILE
إلى تكرار عددٍ من التعليمات باستمرار تحقق الشرط ضمنها، إذ يُتأكَّد من تحقّق الشرط قبل البدء بتنفيذ التعليمات التي تحتويه.
العمليات
لمحة عن العمليات
العملية هي مجموعة من التعديلات التي تتم في قاعدة البيانات وفق تسلسل منطقي، وينتج عنها بعض التغييرات في القاعدة كحذف سجل أو تعديل بيانات أو إنشاء سجل جديد، هذه كلها عبارة عن عمليات، وتصبح هذه التغييرات جزءًا دائمًا من قاعدة البيانات إذا نُفذَّت بشكل تامّ دون أخطاء، أما في حال حدوث أيّ خطأ فيُتراجَع عن هذه التغييرات وتعود قاعدة البيانات كما هي قبل إنجاز العمليات عليها.
أمر بدأ العمليات START TRANSACTION
يُستخدم هذا الأمر للإعلام بالبدء بإجراء مجموعة من العمليات التي قد تنتهي بأمر COMMIT
أو ROLLBACK
.
الأمر COMMIT
يستخدم بهدف حفظ التغييرات المُجراة على قاعدة البيانات نتيجة لتنفيذ العمليات، إذ تحفظ كافة التغييرات منذ آخر أمر COMMIT
أو ROLLBACK
.
الأمر ROLLBACK
يستخدم لإلغاء العمليات المُجراة على قاعدة البيانات مما يعني تجاهل التغييرات التي طرأت عليها.
التعامل مع المستخدمين
إنشاء المستخدم CREATE USER
يُستخدم لإنشاء مستخدم جديد، وتختلف صيغته بحسب محركات قواعد البيانات المختلفة.
تعديل المستخدم ALTER USER
يُستخدم للتعديل من خصائص وسماحيات المستخدم، وتختلف صيغته بحسب محركات قواعد البيانات المختلفة.
حذف المستخدم DROP USER
يُستخدَم لحذف مستخدم.
منح الصلاحيات GRANT
يستخدم لمنح صلاحيات الوصول access privileges لمستخدمٍ أو مجموعة مستخدمين أو أكثر، وتختلف صيغته بحسب محركات قواعد البيانات المختلفة.
إلغاء الصلاحيات REVOKE
يستخدم لإلغاء صلاحيات الوصول access privileges لمستخدمٍ أو مجموعة مستخدمين أو أكثر، وتختلف صيغته بحسب محركات قواعد البيانات المختلفة.
التعامل مع الفهارس
إنشاء الفهرس CREATE INDEX
يستخدم لإنشاء فهرس للجدول.
تعديل الفهرس ALTER INDEX
يستخدم لتعديل الفهرس المُنشأ عبر الأمر CREATE INDEX
.
حذف الفهرس DROP INDEX
يستخدم لحذف فهرس أو أكثر.
التعامل مع قواعد البيانات
إنشاء قاعدة البيانات CREATE DATABASE
يستخدم لإنشاء قاعدة بيانات جديدة.
حذف قاعدة البيانات DROP DATABASE
يستخدم لحذف قاعدة البيانات.
الاستخدام USE
يستخدم لتحديد قاعدة البيانات التي يتَعامَل معها لنقل السياق context
لها.
التعامل مع الجداول
مفاتيح الجداول Table Keys
تستخدم المفاتيح بهدف الربط ما بين الجداول في قواعد البيانات. ومن أنواعها: المفتاح الأولي، والمفتاح الثانوي.
إنشاء الجدول CREATE TABLE
يستخدم لإنشاء جدولٍ جديدٍ في قاعدة البيانات.
تعديل جدول ALTER TABLE
يستخدم لتعديل تعريف الجدول المُنشأ مسبقًا عبر الأمر CREATE TABLE
.
حذف الجدول DROP TABLE
يستخدم لحذف جدول أو أكثر من قاعدة البيانات.
التعامل مع الدوال
بعض الدوال المساعدة في SQL
هذه الدوال تساعد في إجراء العمليات الرياضية والإحصائية، مثل إيجاد عدد السجلات، وإعادة أكبر أو أصغر قيمة، وغيرها من العمليات.
إنشاء الدالة CREATE FUNCTION
يستخدم لتعريف دالة جديدة.
تعديل الدالة ALTER FUNCTION
يستخدم لتعديل تعريف دالة مُعرَّفة مسبقًا عبر الأمر CREATE FUNCTION
.
حذف الدالة DROP FUNCTION
يستخدم لحذف دالة (أو إجراء) أو أكثر مُعرَّفة مسبقًا عبر الأمر CREATE FUNCTION
.
العودة من الدالة RETURN
تستخدم لإنهاء الدالة وإعادة قيمة ما للموقع الذي استُدعيت فيه الدالة.
التعامل مع العرض
إنشاء العرض CREATE VIEW
يستخدم لإنشاء عرضٍ والذي هو عبارة عن جدول افتراضي يُبنى بالاعتماد على نتائج استعلامٍ ما.
تعديل العرض ALTER VIEW
يستخدم لتعديل عرضٍ مُنشَأ مسبقًا عبر الأمر CREATE VIEW
.
حذف العرض DROP VIEW
يستخدم لحذف view
أو أكثر مُنشئ مسبقًا عبر الأمر CREATE VIEW
.
مصادر
هذا الدليل مبنيٌ على التوثيق الرسمي لمختلف محركات قواعد البيانات، مع محاولة مقارنة دعم تلك المحركات للميزات، مع تبسيطها والابتعاد عن التعقيدات الموجودة فيها: