تخطَّ إلى المحتوى

مقدمة في SQL: لغة قواعد البيانات

الدرس 1 من 12 · SQL

كل تطبيق تستخدمه يحفظ بيانات: حسابك في موقع التواصل، وطلباتك في متجر إلكتروني، ودرجاتك في نظام المدرسة. هذه البيانات تُحفظ غالباً في قواعد بيانات، والتعامل معها يتم بلغة اسمها SQL. في هذا الدرس ستفهم ما هي قاعدة البيانات، وكيف تُنظَّم في جداول، وستكتب أول استعلام لك.

قاعدة البيانات (Database) مكان منظم لحفظ البيانات، بحيث يسهل إضافتها والبحث فيها وتعديلها وحذفها بسرعة، حتى لو كانت بالملايين.

ربما تسأل: لماذا لا نحفظ البيانات في ملف عادي أو في جدول Excel؟ لأن قاعدة البيانات مصممة لأشياء لا يستطيعها الملف العادي بكفاءة:

  • البحث في ملايين السجلات خلال أجزاء من الثانية.
  • تعامل آلاف المستخدمين معها في نفس اللحظة دون أن تختلط البيانات.
  • حماية البيانات من الضياع والتلف.
  • التحكم في من يستطيع قراءة ماذا.

الجداول والصفوف والأعمدة

Section titled “الجداول والصفوف والأعمدة”

أشهر أنواع قواعد البيانات هي قواعد البيانات العلائقية (Relational Databases)، وفيها تُحفظ البيانات في جداول تشبه جداول Excel:

جدول الطلاب students:

name age city
منى 14 طنطا
علي 15 القاهرة
سارة 13 الإسكندرية
  • الجدول (Table): مجموعة بيانات عن نوع واحد من الأشياء، هنا «الطلاب».
  • العمود (Column): صفة واحدة، مثل name أو age. ولكل عمود نوع بيانات: نص أو رقم أو تاريخ.
  • الصف (Row): سجل واحد كامل، هنا طالب واحد بكل بياناته.

تخيّل قاعدة البيانات مثل أرشيف مدرسة: فيه دواليب (قواعد بيانات)، وفي كل دولاب ملفات منظمة (جداول)، وفي كل ملف بطاقات (صفوف)، وكل بطاقة فيها خانات ثابتة (أعمدة).

ولماذا «علائقية»؟ لأن الجداول ترتبط ببعضها بـ علاقات: مثلاً جدول «الطلاب» يرتبط بجدول «الدرجات». ستتعلم هذا في درس JOIN.

SQL اختصار لـ Structured Query Language، أي «لغة الاستعلام البنيوية»، ويُنطق اسمها «إس كيو إل» أو «سيكوِل». ظهرت في السبعينيات من أبحاث شركة IBM، وأصبحت اللغة القياسية للتعامل مع قواعد البيانات العلائقية.

والجميل في SQL أنك تتعلمها مرة واحدة وتستخدمها مع أنظمة كثيرة: MySQL و PostgreSQL و SQLite و SQL Server و Oracle. توجد اختلافات بسيطة بينها، لكن الأساسيات واحدة.

الاستعلام (Query) سؤال أو طلب توجهه لقاعدة البيانات. وأشهر استعلام هو SELECT لجلب البيانات:

SELECT * FROM students;

اقرأه كجملة إنجليزية: «اختر كل الأعمدة من جدول الطلاب». العلامة * تعني «كل الأعمدة».

الناتج:

name age city
منى 14 طنطا
علي 15 القاهرة
سارة 13 الإسكندرية

اختيار أعمدة محددة مع شرط

Section titled “اختيار أعمدة محددة مع شرط”
SELECT name, age
FROM students
WHERE age >= 14;

«اختر الاسم والعمر من جدول الطلاب، حيث العمر 14 أو أكثر».

الناتج:

name age
منى 14
علي 15

سارة لم تظهر لأن عمرها 13، فلا يتحقق فيها الشرط.

SELECT COUNT(*) FROM students;

الناتج: 3

  • الكلمات المحجوزة مثل SELECT و FROM لا تهتم بحالة الأحرف، لكن العُرف أن تُكتب بحروف كبيرة لتتميز عن أسماء الجداول والأعمدة.
  • النصوص تُكتب بين علامتي تنصيص مفردتين: WHERE city = 'طنطا'.
  • الاستعلام ينتهي بفاصلة منقوطة ;.
  • يمكنك تقسيم الاستعلام على عدة أسطر ليكون أوضح، كما فعلنا في المثال الثاني.

العمليات الأربع الأساسية (CRUD)

Section titled “العمليات الأربع الأساسية (CRUD)”

كل ما تفعله مع البيانات يرجع لأربع عمليات، تُعرف باختصار CRUD:

العملية المعنى أمر SQL
Create إنشاء / إضافة INSERT
Read قراءة SELECT
Update تعديل UPDATE
Delete حذف DELETE

ستتعلم كل واحدة منها بالتفصيل في الدروس القادمة.

يمكنك تجربة 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, 'الإسكندرية');

ثم جرّب:

  1. اعرض أسماء الطلاب فقط.
  2. اعرض الطلاب الذين يسكنون في القاهرة.
  3. اعرض الطلاب الأصغر من 15 سنة.
  • نسيان علامات التنصيص حول النصوص: WHERE city = طنطا خطأ، والصحيح WHERE city = 'طنطا'.
  • استخدام علامات تنصيص مزدوجة للنصوص: في أغلب الأنظمة تُستخدم المفردة ' ' للنصوص.
  • الخطأ في اسم الجدول أو العمود: رسالة مثل no such table أو no such column تعني أن الاسم غير موجود. راجع الكتابة.

سؤال

في جدول الطلاب، ماذا يمثل الصف الواحد؟

سؤال

ماذا يعني الاستعلام SELECT * FROM products;؟

  • قاعدة البيانات مكان منظم لحفظ البيانات والبحث فيها بسرعة وأمان.
  • القواعد العلائقية تحفظ البيانات في جداول من صفوف وأعمدة، وترتبط الجداول بعلاقات.
  • SQL هي اللغة القياسية للتعامل معها، وتعمل مع MySQL و PostgreSQL و SQLite وغيرها.
  • SELECT أعمدة FROM جدول WHERE شرط; لجلب البيانات.
  • العمليات الأساسية أربع (CRUD): INSERT و SELECT و UPDATE و DELETE.