الفرق بين المراجعتين لصفحة: «SQL»

من موسوعة حسوب
لا ملخص تعديل
 
ط إشارة لمقال قواعد البيانات الشامل
 
(5 مراجعات متوسطة بواسطة مستخدم واحد آخر غير معروضة)
سطر 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 تُصرِّح عن النتيجة النهائية للعملية التي نريد إجراءها، وليس عن التفاصيل اللازمة لطريقة إجراء تلك العملية، إذ إنَّ محركات قواعد البيانات هي المسؤولة عن تلك التفاصيل.


تُنفَّذ تعليمات 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">
 
SELECT name, age*365 AS AgeDays
FROM students
WHERE age > 10
ORDER BY name;
</syntaxhighlight>
نُظِّم هذا الدليل بتخصيص صفحة لكل عبارة أو كلمة محجوزة أو معامل في SQL، ويكون اسم تلك الصفحة بأحرفٍ صغيرة، وإذا تألفت العبارة من أكثر من كلمة فيُفصَل بينها بشرطة سفلية؛ فمثلًا صفحة الاستعلام <code>SELECT</code> ستكون موجودةً على الرابط [[SQL/select]]، أما صفحة <code>ORDER BY</code> فهي موجودة في [[SQL/order_by]] وهكذا...
نُظِّم هذا الدليل بتخصيص صفحة لكل عبارة أو كلمة محجوزة أو معامل في SQL، ويكون اسم تلك الصفحة بأحرفٍ صغيرة، وإذا تألفت العبارة من أكثر من كلمة فيُفصَل بينها بشرطة سفلية؛ فمثلًا صفحة الاستعلام <code>SELECT</code> ستكون موجودةً على الرابط [[SQL/select]]، أما صفحة <code>ORDER BY</code> فهي موجودة في [[SQL/order_by]] وهكذا...


{{:SQL/Topics}}
{{:SQL/Topics}}
[[تصنيف:SQL]]
[[تصنيف:SQL|{{SUBPAGENAME}}]]


== مصادر ==
== مصادر ==
سطر 18: سطر 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.

مصادر

هذا الدليل مبنيٌ على التوثيق الرسمي لمختلف محركات قواعد البيانات، مع محاولة مقارنة دعم تلك المحركات للميزات، مع تبسيطها والابتعاد عن التعقيدات الموجودة فيها: