لغة 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
بالتالي يمكنك استنتاج بمجرد النظر أنSELECTوFROMوWHEREهي أوامرSQL
بينماnameوsalaryوemployeesهي أسماء أعمدة أو جداول
لذا يفضل كتابة الأوامر بـUPPERCASEلتسهيل القراءة والفهم