طَبِّقْهاتعلّم المبدأ، وطبّقه بيدكمقرر 121 · مبادئ قواعد البيانات
الدرس 2 · الوحدة 1: مفهوم قواعد البيانات وأهميته

نظام إدارة قواعد البيانات ولغة SQL

البرنامج الذي يحرس البيانات، واللغة التي نخاطبه بها. ⏱ نحو 20 دقيقة.

بعد هذا الدرس ستستطيع أن:
  • تفرّق بين قاعدة البيانات ونظام إدارتها DBMS.
  • تعدّد وظائف نظام إدارة قواعد البيانات وأشهر أنظمته.
  • تصنّف أوامر SQL إلى عائلاتها الخمس.
  • تكتب أوامر SQL وفق قواعدها: التنصيص والفاصلة المنقوطة والتعليق.

١قاعدة البيانات والبرنامج الذي يديرها

قاعدة البيانات هي البيانات نفسها مخزنة في ملفات. أما البرنامج الذي يخزّنها ويحميها ويجيب عن أسئلتنا عنها فاسمه نظام إدارة قواعد البيانات Database Management System، واختصاره DBMS.

موظف المتجرWorkbenchتطبيق الجوالAppموقع المتجرWebsiteنظام إدارة قواعد البياناتDBMS: MySQLملفات البياناتطلب بلغة SQL ← وجواب: نتيجة
لا أحد يلمس ملفات البيانات مباشرة: كل الطلبات تمر عبر نظام إدارة قواعد البيانات.

تشبيه: قاعدة البيانات مثل مستودع البضائع، ونظام إدارتها مثل أمين المستودع. لا تدخل المستودع بنفسك؛ تطلب من الأمين، فيُحضر لك ما تريد، ويتأكد أنك مسموح لك.

٢ماذا يعمل نظام إدارة قواعد البيانات؟

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

٣أشهر أنظمة إدارة قواعد البيانات

النظامالترخيصأين نراه؟
MySQLمجاني ومفتوح المصدرأشهر نظام لمواقع الويب. ستستخدمه في المعمل عبر XAMPP و MySQL Workbench.
PostgreSQLمجاني ومفتوح المصدرالأسرع انتشارًا اليوم بين المطورين، وفي التطبيقات الكبيرة.
SQL Serverتجاري من Microsoftالشركات والجهات التي تعتمد منتجات Microsoft.
Oracleتجاريالبنوك والأنظمة الحكومية الكبيرة.
SQLiteمجاني ومدمجداخل تطبيقات الجوال والمتصفحات. وهو الذي يعمل في صفحات هذا المقرر.

٤لغة SQL: خمس عائلات من الأوامر

SQL اختصار Structured Query Language، أي «لغة الاستعلام البنائية». وأوامرها خمس عائلات حسب وظيفتها:

العائلةوظيفتهاأوامرها
DDL تعريف البياناتإنشاء الجداول وتعديل بنيتها وحذفهاCREATE ALTER DROP
DML معالجة البياناتإضافة الصفوف وتعديلها وحذفهاINSERT UPDATE DELETE
DQL الاستعلامقراءة البيانات وعرضهاSELECT
DCL التحكم في الصلاحياتمنح الصلاحيات وسحبهاGRANT REVOKE
TCL التحكم في المعاملاتحفظ مجموعة تغييرات أو إلغاؤها معًاCOMMIT ROLLBACK

وهذه أوامر من ثلاث عائلات في مثال واحد. اضغط ✏️ جرّب وعدّل وغيّر السعر:

query.sql
-- DDL: إنشاء جدول جديدCREATE TABLE drinks (  id    INTEGER PRIMARY KEY,  name  TEXT,  price REAL); -- DML: إضافة صفينINSERT INTO drinks VALUES (1, 'قهوة', 12);INSERT INTO drinks VALUES (2, 'شاي', 8); -- DQL: عرض النتيجةSELECT * FROM drinks;
✓ أُنشئ الجدول
✓ أُضيف صف واحد
✓ أُضيف صف واحد
النتيجة · صفّان
idnameprice
1قهوة12
2شاي8

٥قواعد كتابة SQL

✗ خطأ
query.sql
SELECT name FROM customers WHERE city = جدة;
✗ خطأ (السطر 1): لا يوجد عمود باسم جدة
✓ صواب
query.sql
SELECT name FROM customers WHERE city = 'جدة';
النتيجة · صفّان
name
ريم الشهري
عبدالله الزهراني

النص بلا تنصيص يظنه النظام اسم عمود، فيبحث عن عمود اسمه «جدة» ولا يجده.

query.sql
select name, cityfrom CUSTOMERSwhere ID = 4;
النتيجة · صف واحد
namecity
ريم الشهريجدة

يعمل، لأن الكلمات المحجوزة وأسماء الجداول في SQLite و MySQL على Windows لا تتأثر بحالة الأحرف. لكن اكتب بأسلوب واحد ثابت: الكلمات المحجوزة كبيرة، والأسماء صغيرة.

٦أين تكتب SQL؟

في هذا الموقع: أي مثال فيه زر ✏️ جرّب وعدّل، والزر 🗂 الجداول في المحرر يعرض جداول القاعدة وأعمدتها. وهذه جداول «متجر الواحة»:

customers 10 rows

  • id INTEGER PK
  • name TEXT
  • city TEXT
  • phone TEXT
  • joined TEXT

products 12 rows

  • id INTEGER PK
  • name TEXT
  • category TEXT
  • price REAL
  • stock INTEGER

orders 12 rows

  • id INTEGER PK
  • customer_id INTEGER FK→customers
  • order_date TEXT
  • status TEXT

order_items 23 rows

  • order_id INTEGER PKFK→orders
  • product_id INTEGER PKFK→products
  • qty INTEGER
  • price REAL

وفي المعمل: تثبّت XAMPP الذي يشغّل خادم MySQL، ثم تفتح MySQL Workbench أو phpMyAdmin وتكتب الأوامر نفسها. وفي MySQL أوامر لإدارة الخادم نفسه لا تحتاجها هنا:

mysql.sql
-- أوامر خاصة بـ MySQL (تُكتب في Workbench لا في هذا الموقع)CREATE DATABASE store;    -- إنشاء قاعدة بيانات جديدةUSE store;                -- العمل داخل قاعدة storeSHOW TABLES;              -- عرض جداولهاDESCRIBE customers;       -- عرض أعمدة جدول
🧪 ملعب SQLجرّب عرض الجداول الأخرى: products و order_items. واضغط 🗂 الجداول لترى الأعمدة.

توقّع وتحقّق

البرنامج الذي يدير قاعدة البيانات اختصاره:

Database Management System.

الأمر CREATE TABLE من عائلة:

تعريف البنية.

الأمر INSERT من عائلة:

معالجة البيانات.

كيف يُكتب النص في SQL؟

بين علامتي تنصيص مفردتين.

الخلاصة

تحدٍّ برمجي: تقرير المخزون

سهل

أمين المستودع يريد معرفة الكمية المتبقية من كل منتج: اسم المنتج وتصنيفه والكمية في المخزون.

المطلوب:
  • اكتب سطر تعليق في أول الكود يشرح ماذا يعمل الاستعلام.
  • اعرض الأعمدة name ثم category ثم stock من جدول المنتجات.
👀 اعرض النتيجة المطلوبة
النتيجة المطلوبة
namecategorystock
قهوة عربية 250غمشروبات40
شاي أخضرمشروبات65
تمر عجوة 1كغتمور25
تمر سكري 1كغتمور0
عسل سدر 500غعسل12
عسل زهور 500غعسل30
دلة قهوةأدوات8
فناجين (6 قطع)أدوات20
هيل 100غبهارات50
زعفران 5غبهارات15
ماء زمزم 5لترمشروبات100
مبخرةأدوات5
✓ التحقق الآلي من حلّك:
  • الكود يعمل بلا أخطاء
  • النتيجة: اسم كل منتج وتصنيفه وكميته
  • في الكود تعليق يبدأ بـ --

💡 تلميح 1
اضغط 🗂 الجداول لترى أسماء أعمدة products.
💡 تلميح 2
التعليق: سطر يبدأ بشرطتين -- ثم ملاحظتك بالعربية.

حاول بنفسك أولًا؛ للمسألة أكثر من حلّ صحيح.

solution.sql
-- تقرير المخزون: اسم المنتج وتصنيفه وكميتهSELECT name, category, stockFROM products;
انتقل إلى تقييم الدرساختيار من متعدد، وصح وخطأ، وأكمل الفراغ، وتتبّع الناتج.ابدأ التقييم ←

📝 معلم؟ أرسل ملاحظة للمؤلف عن هذا الدرس