SQL
ما هو SQL؟
SQL لغة تُستخدم للاستعلام عن البيانات وتغييرها في قاعدة بيانات علائقية. يتكوّن الجدول من صفوف وأعمدة. يختار SQL صفوفًا من ذلك الجدول، أو يضيف صفًا، أو يعدّل صفًا موجودًا، أو يحذفه.
SQL ليست لغة برمجة عامة مثل Python أو JavaScript. عملها ليس بناء نافذة البرنامج، بل الحديث مع البيانات المخزّنة. كثير من المواقع والتطبيقات تبقي بياناتها في قاعدة وتصل إليها بـ SQL.
أنظمة مثل PostgreSQL وMySQL وSQLite وSQL Server تقبل SQL. الأوامر الأساسية متشابهة، لكن قد تكون لكل نظام فروق صغيرة. والاستعلام الذي يعمل في نظام قد لا يُكتب بالحروف نفسها في نظام آخر.
فيمَ يُستخدم SQL؟
يُستخدم SQL حيث تُحفظ البيانات:
- اختيار الصفوف المطلوبة
- إضافة سجل جديد
- تغيير سجل موجود
- حذف سجل لم يعد مطلوبًا
- العد والتجميع حسب شرط
- جمع الصفوف المتطابقة من أكثر من جدول
مثلًا حين يريد تطبيق أن يعرض سجلات المستخدم نفسه فقط، يُكتب هذا الشرط عادة في استعلام SQL. إذا كان الشرط خاطئًا فقد لا تظهر نتيجة، أو تظهر صفوف أكثر من اللازم.
ماذا يمكن أن تفعل باستخدام SQL؟
يمكن باستخدام SQL القيام بالأعمال الأساسية على جدول:
- قراءة كل الأعمدة أو بعضها
- إيجاد الصفوف التي تطابق شرطًا
- كتابة صف جديد
- تغيير قيمة عمود
- حذف صف محدد
مثال بسيط
SELECT name FROM books WHERE year = 2026;
يختار هذا الاستعلام من جدول books الأسماء الخاصة بسنة 2026 فقط. يجب أن يكون الجدول والأعمدة موجودين من قبل.
هل تعلم SQL صعب؟
قراءة أول استعلام SELECT ليست صعبة. تبدأ الصعوبة مع الشرط وأكثر من جدول وأمر حذف خاطئ. قد يحذف DELETE المكتوب من دون WHERE كل الصفوف في الجدول.
هذا الترتيب مفيد في البداية:
- ما الجدول والصف والعمود
- SELECT وFROM
- الشرط باستخدام WHERE
- صف جديد باستخدام INSERT
- التغيير باستخدام UPDATE
- تجربة DELETE على صف حددته أولًا
- تغيير الاستعلام نفسه بنفسك على جدول صغير
الأأمن أن تُكتب الاستعلامات الأولى على جدول صغير فارغ، لا على قاعدة مشروع حقيقي.
المميزات والعيوب
المزايا
- يختار الصف المطلوب من دون المرور على الجدول كله يدويًا
- الأوامر الأساسية متشابهة في عدة أنظمة قواعد بيانات
- يمكن كتابة الشرط والترتيب والعد في الاستعلام نفسه
- لا يضطر كود التطبيق إلى حفظ كل البيانات داخله
- توجد أنظمة قواعد بيانات مجانية للتعلم
العيوب
- لا يكتب صفحة أو زرًا أو منطق لعبة
- طريقة الكتابة ليست متطابقة في كل نظام
- قد يغيّر التحديث أو الحذف من دون شرط صفوفًا كثيرة
- لصق النص الذي كتبه المستخدم مباشرة داخل الاستعلام خطر
البناء والمفاهيم الأساسية
يبدأ الاستعلام عادة بالأمر الذي يقول ماذا سيُفعل. SELECT يقرأ، وINSERT يضيف، وUPDATE يغيّر، وDELETE يحذف. ويأتي اسم الجدول بعد FROM أو INTO.
القراءة
SELECT name, year FROM books WHERE year >= 2020;
الإضافة
INSERT INTO books (name, year)
VALUES ('كتاب مثال', 2026);التغيير
UPDATE books SET year = 2025 WHERE name = 'كتاب مثال';
جزء WHERE يبيّن أي الصفوف ستُمَس. وتركه في UPDATE أو DELETE قد يغيّر بقية الجدول بدل صف واحد مطابق.
أمثلة على الأكواد
صفوف تطابق شرطًا واحدًا
SELECT title FROM notes WHERE lang = 'ar';
العد
SELECT COUNT(*) FROM notes WHERE lang = 'ar';
حذف الصف المحدد فقط
DELETE FROM notes WHERE id = 15;
أمثلة تعمل
الاستعلامات القصيرة أعلاه تقرأ شيئاً واحداً. هذه الأربعة تبني جدولاً صغيراً ثم تستعمله. شغّلها بالترتيب على قاعدة فارغة. SQLite يكفي. الأول يصنع الجدول. الثاني يكتب سطرين. الثالث يُبقي واحداً. الرابع يغيّر رقماً.
صنع الجدول
CREATE TABLE يصنع جدولاً فارغاً اسمه students. id عدد صحيح ومفتاح أساسي، لذلك سطران لا يتقاسمان id نفسه. name نص وNOT NULL، فالسطر بلا اسم يُرفض. score عدد صحيح وقد يبقى فارغاً. هذا السطر لا يضيف Aysel ولا Murad. هو يبني الأعمدة فقط.
CREATE TABLE students ( id INTEGER PRIMARY KEY, name TEXT NOT NULL, score INTEGER );
بعد هذا يوجد الجدول وفيه صفر سطر. إذا شغلته مرة ثانية تقول القاعدة إن الجدول موجود أصلاً.
إضافة طالبين
INSERT يكتب أسطر. الأسماء بين القوسين هي الأعمدة. القيم تأتي بالترتيب نفسه: id ثم name ثم score. درجة Aysel هي 85. درجة Murad هي 40. النص داخل علامات تنصيص. الرقم بلا تنصيص. إذا أدخلت id 1 مرة أخرى فالمفتاح الأساسي يوقف النسخة الثانية.
INSERT INTO students (id, name, score) VALUES (1, 'Aysel', 85), (2, 'Murad', 40);
في الجدول الآن سطران. لا يُطبع شيء إلا إذا طلبت بـ SELECT.
إبقاء الدرجة الناجحة فقط
SELECT يختار الأعمدة. WHERE يرمي السطر الذي لا يمر الشرط. 85 تبقى و40 لا تبقى لأن 40 تحت 50. ORDER BY score DESC يضع الدرجة الأكبر أولاً. DESC تعني تنازلياً. بلا WHERE ترى الطالبين. بلا ORDER BY قد ترجع القاعدة الأسطر بأي ترتيب.
SELECT name, score FROM students WHERE score >= 50 ORDER BY score DESC;
يرجع سطر واحد: Aysel و85. Murad ما زال في الجدول. هذا الاستعلام أخفاه فقط.
تغيير درجة واحدة
UPDATE يكتب قيمة جديدة في عمود موجود. SET يقول إن الدرجة الجديدة 70. WHERE يقول إن السطر الذي اسمه Murad وحده يتغير. SELECT تحته يقرأ الجدول مرة أخرى فترى السطرين. إذا نسيت WHERE صارت درجة كل طالب 70. هذا هو الخطأ المعتاد.
UPDATE students SET score = 70 WHERE name = 'Murad'; SELECT name, score FROM students;
Murad الآن 70. Aysel تبقى 85. الأربعون القديمة ذهبت لأن UPDATE يضع مكانها الجديد.
الأسئلة الشائعة
ما هو SQL؟
SQL لغة استعلام تُستخدم لقراءة البيانات وتغييرها في قاعدة بيانات علائقية.
هل SQL لغة برمجة؟
هي لغة استعلام للبيانات. ولا تُستخدم كما تُستخدم Python لكتابة التطبيق كله.
هل SQL مجاني؟
تعلم اللغة نفسها مجاني. ويمكن تثبيت أنظمة مثل PostgreSQL وSQLite مجانًا. قد تكون لبعض منتجات الخادم شروط منفصلة.
هل SQL وMySQL شيء واحد؟
لا. SQL هي اللغة. وMySQL أحد أنظمة قواعد البيانات التي تقبل هذه اللغة.
هل Excel وSQL شيء واحد؟
لا. الجدول فكرة قريبة، لكن SQL يعمل بالاستعلام وهو للصفوف المحفوظة في قاعدة بيانات.
هل يمكن لاستعلام خاطئ أن يحذف البيانات؟
نعم. قد يمس DELETE أو UPDATE المكتوب من دون WHERE صفوفًا أكثر مما تتوقع. جرّبه أولًا على جدول صغير.
هل يجوز لصق النص الذي كتبه المستخدم مباشرة في الاستعلام؟
لا. بدل لصق النص داخل الاستعلام، استخدم معاملًا منفصلًا تقبله قاعدة البيانات.