مقدمة في SQL: لغة قواعد البيانات
كل تطبيق تستخدمه يحفظ بيانات: حسابك في موقع التواصل، وطلباتك في متجر إلكتروني، ودرجاتك في نظام المدرسة. هذه البيانات تُحفظ غالباً في قواعد بيانات، والتعامل معها يتم بلغة اسمها SQL. في هذا الدرس ستفهم ما هي قاعدة البيانات، وكيف تُنظَّم في جداول، وستكتب أول استعلام لك.
ما هي قاعدة البيانات؟
Section titled “ما هي قاعدة البيانات؟”قاعدة البيانات (Database) مكان منظم لحفظ البيانات، بحيث يسهل إضافتها والبحث فيها وتعديلها وحذفها بسرعة، حتى لو كانت بالملايين.
ربما تسأل: لماذا لا نحفظ البيانات في ملف عادي أو في جدول Excel؟ لأن قاعدة البيانات مصممة لأشياء لا يستطيعها الملف العادي بكفاءة:
- البحث في ملايين السجلات خلال أجزاء من الثانية.
- تعامل آلاف المستخدمين معها في نفس اللحظة دون أن تختلط البيانات.
- حماية البيانات من الضياع والتلف.
- التحكم في من يستطيع قراءة ماذا.
الجداول والصفوف والأعمدة
Section titled “الجداول والصفوف والأعمدة”أشهر أنواع قواعد البيانات هي قواعد البيانات العلائقية (Relational Databases)، وفيها تُحفظ البيانات في جداول تشبه جداول Excel:
جدول الطلاب students:
| name | age | city |
|---|---|---|
| منى | 14 | طنطا |
| علي | 15 | القاهرة |
| سارة | 13 | الإسكندرية |
- الجدول (Table): مجموعة بيانات عن نوع واحد من الأشياء، هنا «الطلاب».
- العمود (Column): صفة واحدة، مثل
nameأوage. ولكل عمود نوع بيانات: نص أو رقم أو تاريخ. - الصف (Row): سجل واحد كامل، هنا طالب واحد بكل بياناته.
تخيّل قاعدة البيانات مثل أرشيف مدرسة: فيه دواليب (قواعد بيانات)، وفي كل دولاب ملفات منظمة (جداول)، وفي كل ملف بطاقات (صفوف)، وكل بطاقة فيها خانات ثابتة (أعمدة).
ولماذا «علائقية»؟ لأن الجداول ترتبط ببعضها بـ علاقات: مثلاً جدول «الطلاب» يرتبط بجدول «الدرجات». ستتعلم هذا في درس JOIN.
ما هي SQL؟
Section titled “ما هي SQL؟”SQL اختصار لـ Structured Query Language، أي «لغة الاستعلام البنيوية»، ويُنطق اسمها «إس كيو إل» أو «سيكوِل». ظهرت في السبعينيات من أبحاث شركة IBM، وأصبحت اللغة القياسية للتعامل مع قواعد البيانات العلائقية.
والجميل في SQL أنك تتعلمها مرة واحدة وتستخدمها مع أنظمة كثيرة: MySQL و PostgreSQL و SQLite و SQL Server و Oracle. توجد اختلافات بسيطة بينها، لكن الأساسيات واحدة.
أول استعلام: SELECT
Section titled “أول استعلام: SELECT”الاستعلام (Query) سؤال أو طلب توجهه لقاعدة البيانات. وأشهر استعلام هو SELECT لجلب البيانات:
SELECT * FROM students;اقرأه كجملة إنجليزية: «اختر كل الأعمدة من جدول الطلاب». العلامة * تعني «كل الأعمدة».
الناتج:
| name | age | city |
|---|---|---|
| منى | 14 | طنطا |
| علي | 15 | القاهرة |
| سارة | 13 | الإسكندرية |
اختيار أعمدة محددة مع شرط
Section titled “اختيار أعمدة محددة مع شرط”SELECT name, ageFROM studentsWHERE age >= 14;«اختر الاسم والعمر من جدول الطلاب، حيث العمر 14 أو أكثر».
الناتج:
| name | age |
|---|---|
| منى | 14 |
| علي | 15 |
سارة لم تظهر لأن عمرها 13، فلا يتحقق فيها الشرط.
عدّ الصفوف
Section titled “عدّ الصفوف”SELECT COUNT(*) FROM students;الناتج: 3
قواعد الكتابة
Section titled “قواعد الكتابة”- الكلمات المحجوزة مثل
SELECTوFROMلا تهتم بحالة الأحرف، لكن العُرف أن تُكتب بحروف كبيرة لتتميز عن أسماء الجداول والأعمدة. - النصوص تُكتب بين علامتي تنصيص مفردتين:
WHERE city = 'طنطا'. - الاستعلام ينتهي بفاصلة منقوطة
;. - يمكنك تقسيم الاستعلام على عدة أسطر ليكون أوضح، كما فعلنا في المثال الثاني.
العمليات الأربع الأساسية (CRUD)
Section titled “العمليات الأربع الأساسية (CRUD)”كل ما تفعله مع البيانات يرجع لأربع عمليات، تُعرف باختصار CRUD:
| العملية | المعنى | أمر SQL |
|---|---|---|
| Create | إنشاء / إضافة | INSERT |
| Read | قراءة | SELECT |
| Update | تعديل | UPDATE |
| Delete | حذف | DELETE |
ستتعلم كل واحدة منها بالتفصيل في الدروس القادمة.
جرّب بنفسك
Section titled “جرّب بنفسك”يمكنك تجربة SQL دون تثبيت أي شيء من خلال مواقع «SQL Online» أو «SQLite Online» في المتصفح. أنشئ جدول الطلاب وأدخل البيانات بهذا الكود (ستفهمه بالتفصيل لاحقاً):
CREATE TABLE students (name TEXT, age INTEGER, city TEXT);INSERT INTO students VALUES ('منى', 14, 'طنطا');INSERT INTO students VALUES ('علي', 15, 'القاهرة');INSERT INTO students VALUES ('سارة', 13, 'الإسكندرية');ثم جرّب:
- اعرض أسماء الطلاب فقط.
- اعرض الطلاب الذين يسكنون في القاهرة.
- اعرض الطلاب الأصغر من 15 سنة.
أخطاء شائعة
Section titled “أخطاء شائعة”- نسيان علامات التنصيص حول النصوص:
WHERE city = طنطاخطأ، والصحيحWHERE city = 'طنطا'. - استخدام علامات تنصيص مزدوجة للنصوص: في أغلب الأنظمة تُستخدم المفردة
' 'للنصوص. - الخطأ في اسم الجدول أو العمود: رسالة مثل
no such tableأوno such columnتعني أن الاسم غير موجود. راجع الكتابة.
اختبر نفسك
Section titled “اختبر نفسك”سؤال
في جدول الطلاب، ماذا يمثل الصف الواحد؟
الصف (Row) سجل كامل لعنصر واحد، والعمود (Column) صفة واحدة.
سؤال
ماذا يعني الاستعلام SELECT * FROM products;؟
SELECT للقراءة، و * تعني كل الأعمدة، و FROM products تحدد الجدول.
الخلاصة
Section titled “الخلاصة”- قاعدة البيانات مكان منظم لحفظ البيانات والبحث فيها بسرعة وأمان.
- القواعد العلائقية تحفظ البيانات في جداول من صفوف وأعمدة، وترتبط الجداول بعلاقات.
- SQL هي اللغة القياسية للتعامل معها، وتعمل مع MySQL و PostgreSQL و SQLite وغيرها.
SELECT أعمدة FROM جدول WHERE شرط;لجلب البيانات.- العمليات الأساسية أربع (CRUD): INSERT و SELECT و UPDATE و DELETE.