لغة SQL وأهميتها في إدارة قواعد البيانات
السلام عليكم ورحمة الله وبركاته
المقدمة
أظننا سنبدأ رحلة جديدة وسلسلة جديدة عن الـ SQL
عندما تبدأ الحديث عن قواعد البيانات، فإن أول ما يتبادر إلى الذهن هى لغة الـ SQL
تقريبًا كل تطبيق أو موقع ويب تستخدمه يوميًا يعتمد على قواعد البيانات
وهذا بديهي لأن الـ SQL
هي اللغة التي تسمح لنا بالتعامل مع هذه البيانات بطريقة منظمة
سواء بتخزين البيانات، وكيفية تخزينها والشروط التي يجب أن تتوفر فيها
وتوفر لنا وسيلة للاستعلام عن البيانات واسترجاعها وهو ما نسميه بالـ Query
وتسمح لنا بإجراء عمليات على البيانات مثل الإضافة والتحديث والحذف
وأيضًا ربط أكثر من جدول معًا
في هذه السلسلة من المقالات، سنأخذك في رحلة شاملة لتعلم لغة الـ SQL
وسأحاول أن اشرحها وأبسطها لك قدر الإمكان
ما هي لغة الـ SQL ؟
أولًا الـ SQL
هي اختصار لـ Structured Query Language
وعندما تتأمل في الاسم، ستجد أنه يصف ثلاثة أشياء رئيسية:
Structured
: تعني أن البيانات منظمة في جداول ولها قواعد محددة وصارمة في بعض الأحيانQuery
: تعني الاستعلام، أي أنك تستطيع طرح أسئلة على البيانات واسترجاع المعلومات التي تحتاجها وغالبًا سيكون هذا الجزء الأكثر استخدامًا في الـSQL
وهو ما ستتعلمه ونستفيض فيه في هذه السلسلةLanguage
: تعني أنها لغة، بالتالي لهاsyntax
أو قواعد كتابة خاصة بها بالتالي يسهل فهمها والتعامل معها
عندنا تسألني عن ما هي الأمور التي يمكنك القيام بها باستخدام SQL
فالإجابة ستكون أنه في حالة أنك تريد التعامل مع قواعد البيانات، فإنك ستستخدم SQL
للقيام بالآتي:
- قراءة البيانات من قاعدة البيانات بإستخدام أمر يدعى
SELECT
- إضافة بيانات جديدة بإستخدام أمر يدعى
INSERT
- تحديث البيانات الموجودة بإستخدام أمر يدعى
UPDATE
أوALTER
- حذف البيانات غير المرغوب فيها بإستخدام أمر يدعى
DELETE
أوDROP
- إنشاء جداول وقواعد بيانات جديدة بإستخدام أمر يدعى
CREATE
- إدارة أذونات المستخدمين والأمان بإستخدام أوامر خاصة بذلك
بالطبع يوجد أووامر أخرى كثيرة في SQL
، ولكن هذه هي الأساسيات التي ستحتاجها في البداية
مثال بسيط
لنفترض أن لدينا جدولًا في قاعدة البيانات يسمى employees
يحتوي على بيانات الموظفين، مثل:
Employees Table
+----+--------+--------------+--------+
| id | name | country_name | salary |
+----+--------+--------------+--------+
| 10 | Ahmed | Egypt | 3500 |
| 20 | Ali | Egypt | 4500 |
| 30 | Yehia | Palestine | 7000 |
| 40 | Omar | Egypt | 8000 |
| 50 | Ismail | Palestine | 5000 |
+----+--------+--------------+--------+
عندما تتعامل مع SQL
فأنت ستتعامل مع جداول مثل هذا الجدول
وكل جدول يحتوي على أعمدة وصفوف
وكل عمود يمثل خانات توصف البيانات مثل id
, name
, country_name
, salary
وكل صف يمثل سجلًا أو بيانات موظف
لو قلت لك أنني أريد أسماء الموظفين الذين يعيشون في مصر ومرتبهم أكبر من 5000
جنيه،
سأكتب لك query
على جدول الموظفين السابق يقوم بتنفيذ المطلوب
SELECT name, salary FROM employees
WHERE salary > 5000 AND country_name = 'Egypt';
أعلم أنك قد لا تفهم ما كتبته الآن، ولكن لا تقلق كل شيء سيأتي في وقته
لكن بمجرد النظر ومعرفتك البسيطة باللغة الانجليزية، هل تستطيع على الاقل فهم ما الذي يحدث هنا؟
لدينا هنا أمر SELECT
والذي يعني اختار ثم يليه name, salary
أي انه هنا يحدد الأعمدة name
و salary
ثم يليه FROM employees
هنا يحضر البيانات من جدول الموظفين
لذا عندما تقرأ SELECT name, salary FROM employees
هنا كأنه يقول لك "اختر لي أسماء الموظفين ومرتباتهم من جدول الموظفين"
هنا في السؤال كنا نريد أسماء الموظفين الذين يعيشون في مصر ومرتبهم أكبر من 5000
جنيه
لذا ستجد WHERE salary > 5000 AND country_name = 'Egypt'
وهو تماما ما يعني "حيث أن مرتب الموظف أكبر من 5000 ويعيش في مصر"
بمعنى أن الأمر الذي كتبناه للتو وهو SELECT name, salary FROM employees WHERE salary > 5000 AND country_name = 'Egypt';
قراءته بكل سهولة "اختر لي أسماء الموظفين ومرتباتهم من جدول الموظفين حيث أن مرتبهم أكبر من 5000 ويعيشون في مصر"
هذا من أحد الأمور التي تجعل لغة الـ SQL
سهلة وبسيطة
أنك حتى ولو لم تكن تعرفها، يمكنك أن تفهم ما يحدث بمجرد النظر إلى الأمر
أنواع قواعد البيانات المختلفة - DBMS
عليك أن تعرف أن هناك شيء يدعى DBMS
أو Database Management System
وهي مجموعة من الأنظمة التي بنيت على الـ SQL
لتسهل عليك التعامل مع قواعد البيانات
سواء بجعل الـ SQL
أسهل وأسرع وحتى أكثر أمانًا
وتضيف أحيانًا أوامر مختلفة وأمورًا جديدة زائدة على الـ SQL
الأصلي
أو حتى لكي تكون متخصص في نوع معين من قواعد البيانات أو في استخدامات محددة
ومن أشهر هذه الأنظمة:
- MySQL: وهو نظام مفتوح المصدر ويعتبر من أكثر الأنظمة استخدامًا في العالم، ويستخدم في العديد من التطبيقات والمواقع
يمكنك القول أنه النظام الشعبي الأكثر استخدامًا في عالم قواعد البيانات - PostgreSQL: وهو نظام مفتوح المصدر أيضًا ويتميز بقوته ومرونته، ويستخدم في التطبيقات التي تتطلب معالجة بيانات معقدة
يعتبر الخيار المفضل للمشاريع الكبيرة والمعقدة، يمكنك تخيله كالأخ الأكبر لـMySQL
الذي يرتدي بدلة رسمية - SQLite: وهو نظام خفيف ومناسب للتطبيقات الصغيرة
ويستخدم بشكل شائع في تطبيقات الهواتف المحمولة أو في الـFrontend
أو التطبيقات التي لا تحتاج إلىBackend
لأنه يمكن تضمينه في التطبيق نفسه ولا يحتاج إلىServer
لا داعي لأن أشبه بأنه الأخ الأصغر لـMySQL
الذي لا يحتاج إلى الكثير من المتطلبات - ... وهناك العديد من الأنظمة الأخرى مثل
Microsoft SQL Server
وOracle Database
وغيرها
الـ SQL له Standard
الـ SQL
بحد ذاتها هي لغة لها معيار موحد أي SQL Standard
وهذا يعني أن هناك مجموعة من الأوامر والقواعد التي يجب أن تتواجد في أي DBMS
يدعم الـ SQL
لكن كل نظام قد يضيف ميزات أو أوامر خاصة به
وهذا بديهي لأنك لو أردت أن تنشيء نظامًا جديدًا لإدارة قواعد البيانات لكي يخدم شيء معين أو غرض معين
فأنت يجب عليك أولًا دعم الأمور الأساسية في الـ SQL Standard
ثم بعد ذلك يمكنك إضافة ميزات جديدة أو أوامر خاصة بك
وهذا ما تفعله الأنظمة المختلفة مثل MySQL
و PostgreSQL
و SQLite
وكل نظام له ميزاته الخاصة التي تجعله مناسبًا لأغراض معينة أو لمشاريع محددة
لكن كلها تدعم الـ SQL Standard
بشكل أساسي وتدعم الأوامر الأساسية التي ستتعلمها في هذه السلسلة مثل SELECT
, INSERT
, UPDATE
, DELETE
, CREATE
, DROP
وغيرها
ما الذي ستتعلمه في هذه السلسلة ؟
في هذه السلسلة، سأقوم بتغطية العديد من المواضيع المتعلقة بلغة الـ SQL
- أوامر متعلقة بالـ
Database
: لتعرف كيف تنشيء قاعدة بيانات جديدة وتحذفها وتعدل عليها ومن هذه الأوامرCREATE DATABASE
,DROP DATABASE
وغيرها - أوامر متعلقة بالـ
Table
: لتتعلم كيف تنشيء جدولًا جديدًا، تحذفه، تعدل عليه، ومن هذه الأوامرCREATE TABLE
,DROP TABLE
,ALTER TABLE
وغيرها - أساسيات الـ
SQL
: سنبدأ من الصفر ونتعلم الأساسيات مثلSELECT
,INSERT
,UPDATE
,DELETE
وغيرها - التعمق في الـ
SELECT
: حيث سنستعرض كيفية استخدامSELECT
بشكل متقدم، مثل استخدامJOIN
لربط الجداول معًا، واستخدامGROUP BY
وORDER BY
لتنظيم البيانات - التعامل مع الدوال: مثل
COUNT
,SUM
,AVG
وغيرها من الدوال التي تساعدك في إجراء عمليات حسابية على البيانات - التعامل مع الـ
View
: حيث سنتعلم كيف تنشئView
لعرض البيانات بطريقة معينة دون الحاجة إلى إنشاء جدول جديد - وأمور متعددة سواء بسيطة أو متقدمة مثل التعامل مع الـ
Transactions
,Indexes
, وغيرها
ملحوظة
: أوامر الـSQL
يمكننا كتابتهاlowercase
أوUPPERCASE
أو حتىcamelCase
لذا يمكنك كتابة الأمرSELECT
بأي من هذه الطرق وستظل النتيجة كما هي
لكن المتعارف عليه هو كتابة الأوامر بـUPPERCASE
للتفريق بينها وبين أسماء الجداول والأعمدة التي عادة ما تكون بـlowercase
أوcamelCase