نظام إدارة قواعد البيانات ولغة SQL
البرنامج الذي يحرس البيانات، واللغة التي نخاطبه بها. ⏱ نحو 20 دقيقة.
- تفرّق بين قاعدة البيانات ونظام إدارتها
DBMS. - تعدّد وظائف نظام إدارة قواعد البيانات وأشهر أنظمته.
- تصنّف أوامر
SQLإلى عائلاتها الخمس. - تكتب أوامر
SQLوفق قواعدها: التنصيص والفاصلة المنقوطة والتعليق.
١قاعدة البيانات والبرنامج الذي يديرها
قاعدة البيانات هي البيانات نفسها مخزنة في ملفات. أما البرنامج الذي يخزّنها ويحميها ويجيب عن أسئلتنا عنها فاسمه نظام إدارة قواعد البيانات Database Management System، واختصاره DBMS.
تشبيه: قاعدة البيانات مثل مستودع البضائع، ونظام إدارتها مثل أمين المستودع. لا تدخل المستودع بنفسك؛ تطلب من الأمين، فيُحضر لك ما تريد، ويتأكد أنك مسموح لك.
٢ماذا يعمل نظام إدارة قواعد البيانات؟
| الوظيفة | مثال |
|---|---|
| التخزين والتنظيم | يحفظ الجداول في ملفات بطريقة تسرّع الوصول إليها. |
| تنفيذ الاستعلامات | يستقبل سؤالًا بلغة 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 |
وهذه أوامر من ثلاث عائلات في مثال واحد. اضغط ✏️ جرّب وعدّل وغيّر السعر:
-- 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;
| id | name | price |
|---|---|---|
| 1 | قهوة | 12 |
| 2 | شاي | 8 |
٥قواعد كتابة SQL
- الكلمات المحجوزة مثل
SELECTلا تتأثر بحالة الأحرف:selectوSELECTسواء. لكن العُرف كتابتها بأحرف كبيرة لتتميز عن أسماء الجداول. - النصوص بين علامتي تنصيص مفردتين:
'جدة'. أما الأرقام فبلا تنصيص:35. - الفاصلة المنقوطة
;تنهي الأمر، وتفصل بين الأوامر حين تكتب أكثر من أمر. - التعليق يبدأ بشرطتين
--، ويتجاهله النظام. اكتب به ملاحظاتك. - المسافات والأسطر الجديدة لا تهم. قسّم الاستعلام الطويل على أسطر ليسهل قراءته.
SELECT name FROM customers WHERE city = جدة;SELECT name FROM customers WHERE city = 'جدة';| name |
|---|
| ريم الشهري |
| عبدالله الزهراني |
النص بلا تنصيص يظنه النظام اسم عمود، فيبحث عن عمود اسمه «جدة» ولا يجده.
select name, cityfrom CUSTOMERSwhere ID = 4;
| name | city |
|---|---|
| ريم الشهري | جدة |
يعمل، لأن الكلمات المحجوزة وأسماء الجداول في 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 (تُكتب في Workbench لا في هذا الموقع)CREATE DATABASE store; -- إنشاء قاعدة بيانات جديدةUSE store; -- العمل داخل قاعدة storeSHOW TABLES; -- عرض جداولهاDESCRIBE customers; -- عرض أعمدة جدول
توقّع وتحقّق
البرنامج الذي يدير قاعدة البيانات اختصاره:
Database Management System.الأمر CREATE TABLE من عائلة:
الأمر INSERT من عائلة:
كيف يُكتب النص في SQL؟
الخلاصة
DBMSبرنامج يقف بين المستخدمين والبيانات: يخزّن ويجيب ويحمي.- أشهر الأنظمة:
MySQLوPostgreSQLوSQL ServerوOracleوSQLite. - عائلات
SQL: DDLللبنية، وDMLللبيانات، وDQLللاستعلام، وDCLللصلاحيات، وTCLللمعاملات. - النص بين
' '، والأمر ينتهي بـ ; والتعليق يبدأ بـ --
تحدٍّ برمجي: تقرير المخزون
سهلأمين المستودع يريد معرفة الكمية المتبقية من كل منتج: اسم المنتج وتصنيفه والكمية في المخزون.
- اكتب سطر تعليق في أول الكود يشرح ماذا يعمل الاستعلام.
- اعرض الأعمدة
nameثمcategoryثمstockمن جدول المنتجات.
👀 اعرض النتيجة المطلوبة
| name | category | stock |
|---|---|---|
| قهوة عربية 250غ | مشروبات | 40 |
| شاي أخضر | مشروبات | 65 |
| تمر عجوة 1كغ | تمور | 25 |
| تمر سكري 1كغ | تمور | 0 |
| عسل سدر 500غ | عسل | 12 |
| عسل زهور 500غ | عسل | 30 |
| دلة قهوة | أدوات | 8 |
| فناجين (6 قطع) | أدوات | 20 |
| هيل 100غ | بهارات | 50 |
| زعفران 5غ | بهارات | 15 |
| ماء زمزم 5لتر | مشروبات | 100 |
| مبخرة | أدوات | 5 |
- الكود يعمل بلا أخطاء
- النتيجة: اسم كل منتج وتصنيفه وكميته
- في الكود تعليق يبدأ بـ --
💡 تلميح 1
💡 تلميح 2
حاول بنفسك أولًا؛ للمسألة أكثر من حلّ صحيح.
-- تقرير المخزون: اسم المنتج وتصنيفه وكميتهSELECT name, category, stockFROM products;