البرمجة

تعلم SQL بالأمثلة العملية

جدول المحتوى

تعلم لغة الاستعلام SQL بالأمثلة العملية

لغة الاستعلام البنيوية SQL (Structured Query Language) تعد من أهم اللغات المستخدمة في مجال قواعد البيانات. فهي الوسيلة الأساسية للتعامل مع قواعد البيانات العلائقية (Relational Databases)، حيث تتيح للمستخدمين إمكانية إدخال البيانات، تعديلها، حذفها، واسترجاعها بطريقة منظمة وفعالة. تعتبر SQL لغة قياسية معتمدة على مستوى عالمي، وتستخدمها معظم أنظمة إدارة قواعد البيانات مثل MySQL، Oracle، Microsoft SQL Server، PostgreSQL، و SQLite.

في هذا المقال، سوف نناقش مفهوم SQL بشكل مفصل، ونغوص في بنيتها الأساسية، ثم ننتقل إلى استعراض أمثلة عملية تغطي أهم أوامر SQL الأساسية والمتقدمة. هذا المقال موجه لمن يريد إتقان SQL من الصفر حتى المستويات المتقدمة مع التركيز على التطبيق العملي المباشر.


تعريف لغة SQL وأهميتها

لغة SQL هي لغة متخصصة في إدارة قواعد البيانات العلائقية، وتعمل على تنظيم المعلومات في جداول تحتوي صفوفًا (Records) وأعمدة (Fields). تكمن أهمية SQL في كونها توفر واجهة سهلة نسبياً للتعامل مع البيانات الضخمة التي تحتاج إلى إدارة دقيقة وسريعة.

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


مكونات لغة SQL

لغة SQL تتكون من عدة أقسام رئيسية تتعامل مع جوانب مختلفة من قواعد البيانات، منها:

  • DDL (Data Definition Language): أوامر تعريف البيانات مثل إنشاء الجداول، تعديل هيكل الجداول، حذف الجداول.

  • DML (Data Manipulation Language): أوامر معالجة البيانات داخل الجداول مثل الإدخال، التعديل، الحذف، والاستعلام.

  • DCL (Data Control Language): أوامر التحكم في صلاحيات المستخدمين وإدارة الأمان.

  • TCL (Transaction Control Language): أوامر التحكم في المعاملات لضمان سلامة العمليات (مثل التراجع والالتزام).


أوامر SQL الأساسية مع الأمثلة العملية

1. إنشاء قاعدة بيانات وجداول (DDL)

إنشاء قاعدة بيانات

sql
CREATE DATABASE School;

هذا الأمر يقوم بإنشاء قاعدة بيانات جديدة باسم “School”.

اختيار قاعدة البيانات للاستخدام

sql
USE School;

إنشاء جدول

لنفترض أننا نريد إنشاء جدول للطلاب يحتوي على الأعمدة التالية: StudentID (رقم الطالب)، Name (اسم الطالب)، Age (العمر)، و Grade (الصف الدراسي).

sql
CREATE TABLE Students ( StudentID INT PRIMARY KEY, Name VARCHAR(100), Age INT, Grade VARCHAR(10) );

في المثال أعلاه:

  • INT نوع بيانات للأعداد الصحيحة.

  • VARCHAR(100) نوع بيانات للنصوص بطول يصل إلى 100 حرف.

  • PRIMARY KEY تعني أن العمود StudentID هو المفتاح الأساسي لكل سجل.


2. إدخال البيانات في الجداول (DML)

إضافة سجل جديد

sql
INSERT INTO Students (StudentID, Name, Age, Grade) VALUES (1, 'أحمد علي', 15, 'العاشر');

يمكن إضافة عدة سجلات دفعة واحدة كالتالي:

sql
INSERT INTO Students (StudentID, Name, Age, Grade) VALUES (2, 'سارة محمد', 16, 'الحادي عشر'), (3, 'خالد يوسف', 14, 'التاسع');

3. استرجاع البيانات (SELECT)

الاستعلام الأساسي لاسترجاع البيانات من جدول معين هو:

sql
SELECT * FROM Students;

هذا الأمر يعرض كل الأعمدة وكل السجلات في جدول Students.

استرجاع أعمدة محددة

sql
SELECT Name, Age FROM Students;

استرجاع بيانات مع شرط معين (تصفية)

sql
SELECT * FROM Students WHERE Age > 15;

يتم هنا استرجاع الطلاب الذين أعمارهم أكبر من 15 سنة فقط.


4. تحديث البيانات (UPDATE)

لتعديل بيانات موجودة:

sql
UPDATE Students SET Grade = 'الثاني عشر' WHERE StudentID = 2;

يقوم الأمر أعلاه بتحديث الصف الدراسي للطالب صاحب الرقم 2.


5. حذف البيانات (DELETE)

لحذف سجل معين:

sql
DELETE FROM Students WHERE StudentID = 3;

6. التصفية المتقدمة مع LIKE وBETWEEN وIN

استخدام LIKE للبحث الجزئي

sql
SELECT * FROM Students WHERE Name LIKE 'س%';

يسترجع هذا الطلاب الذين تبدأ أسماؤهم بحرف السين.

BETWEEN للبحث ضمن نطاق

sql
SELECT * FROM Students WHERE Age BETWEEN 14 AND 16;

IN للبحث ضمن مجموعة محددة

sql
SELECT * FROM Students WHERE Grade IN ('العاشر', 'الحادي عشر');

7. ترتيب النتائج (ORDER BY)

sql
SELECT * FROM Students ORDER BY Age DESC;

يرتب النتائج بحسب العمر من الأكبر للأصغر.


8. تجميع البيانات (GROUP BY) واستخدام الدوال التجميعية

تستخدم الدوال التجميعية لحساب إحصائيات من البيانات.

مثال: حساب عدد الطلاب في كل صف

sql
SELECT Grade, COUNT(*) AS NumberOfStudents FROM Students GROUP BY Grade;

دوال تجميعية أخرى:

الدالة الوصف
COUNT(column) حساب عدد السجلات غير الفارغة
SUM(column) مجموع القيم الرقمية
AVG(column) متوسط القيم الرقمية
MIN(column) أقل قيمة
MAX(column) أعلى قيمة

9. الربط بين الجداول (JOIN)

في قواعد البيانات العلائقية، غالباً ما يتم توزيع المعلومات على عدة جداول مرتبطة ببعضها. لجمع البيانات من جداول مختلفة نستخدم أوامر الربط (JOIN).

إنشاء جدول آخر – الدرجات

sql
CREATE TABLE Grades ( GradeID INT PRIMARY KEY, GradeName VARCHAR(10) ); INSERT INTO Grades (GradeID, GradeName) VALUES (1, 'التاسع'), (2, 'العاشر'), (3, 'الحادي عشر'), (4, 'الثاني عشر');

إضافة عمود للربط في جدول الطلاب

sql
ALTER TABLE Students ADD GradeID INT;

تحديث بيانات الربط

sql
UPDATE Students SET GradeID = 2 WHERE StudentID = 1; UPDATE Students SET GradeID = 3 WHERE StudentID = 2;

استعلام JOIN

sql
SELECT Students.Name, Grades.GradeName FROM Students JOIN Grades ON Students.GradeID = Grades.GradeID;

10. التعامل مع NULL والقيم الفارغة

في SQL، يمكن أن تحتوي الأعمدة على قيمة فارغة أو غير معرفة تسمى NULL، وهي تعني عدم وجود قيمة.

التحقق من وجود NULL

sql
SELECT * FROM Students WHERE GradeID IS NULL;

استبدال NULL بقيمة أخرى باستخدام الدالة COALESCE

sql
SELECT Name, COALESCE(GradeID, 0) AS GradeID FROM Students;

استخدام المعاملات (Transactions)

تساعد المعاملات في تنفيذ مجموعة من الأوامر كوحدة واحدة، بحيث إذا حدث خطأ في أي خطوة يمكن التراجع عن الكل لضمان سلامة البيانات.

sql
BEGIN TRANSACTION; UPDATE Students SET Age = Age + 1 WHERE StudentID = 1; UPDATE Students SET Age = Age + 1 WHERE StudentID = 2; COMMIT;

في حالة حدوث مشكلة يتم تنفيذ:

sql
ROLLBACK;

نصائح وأفضل ممارسات عند تعلم واستخدام SQL

  • فهم هيكل قاعدة البيانات: لا بد من معرفة كيفية تنظيم الجداول والعلاقات بينها قبل كتابة الاستعلامات.

  • استخدام الأسماء الواضحة: تسمية الجداول والأعمدة بأسماء معبرة يسهل قراءة وفهم الاستعلامات.

  • **تجنب استخدام SELECT *: الاستعلام عن الأعمدة المحددة فقط يحسن الأداء ويقلل استهلاك الموارد.

  • تنظيف البيانات: التعامل مع القيم NULL بعناية لتجنب أخطاء منطقية.

  • تجربة الاستعلامات في بيئة اختبار: قبل تطبيق الأوامر على قاعدة البيانات الحقيقية.

  • تحسين الأداء: باستخدام الفهارس (Indexes) على الأعمدة المستخدمة بشكل متكرر في عمليات البحث والربط.


جدول يوضح مقارنة بين بعض أوامر SQL الرئيسية

الفئة الأمر الوصف مثال
DDL CREATE TABLE إنشاء جدول جديد CREATE TABLE Students (...)
DML INSERT INTO إضافة بيانات جديدة إلى الجدول INSERT INTO Students VALUES...
DML SELECT استرجاع بيانات من جدول SELECT * FROM Students
DML UPDATE تعديل بيانات موجودة UPDATE Students SET Age=16
DML DELETE حذف بيانات من جدول DELETE FROM Students WHERE ...
DCL GRANT منح صلاحيات لمستخدم GRANT SELECT ON Students TO user
TCL COMMIT تأكيد تنفيذ المعاملات COMMIT;
TCL ROLLBACK التراجع عن المعاملات ROLLBACK;

الخاتمة

إتقان لغة SQL يتطلب ممارسة مستمرة وفهم عميق لمفاهيم قواعد البيانات العلائقية. بالاعتماد على الأمثلة العملية المذكورة، يمكن بناء أساس قوي يمكن تطويره من خلال دراسة الأوامر المتقدمة وتقنيات تحسين الأداء، بالإضافة إلى التعرف على خواص كل نظام إدارة قواعد بيانات على حدة. تعتبر SQL أداة لا غنى عنها لكل مهندس بيانات، محلل بيانات، مطور برامج، أو أي متخصص يتعامل مع البيانات الضخمة والمنظمة.


المصادر والمراجع


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