مقدمة إلى SQL: كتابة أول استعلام لك
مقدمة
لغة SQL (Structured Query Language) هي لغة برمجة تُستخدم لإدارة البيانات في قواعد البيانات العلائقية. تُعتبر SQL أساسية لإجراء العمليات المختلفة على البيانات مثل الاستعلام عن البيانات، وإدخالها، وتحديثها، وحذفها. في هذا الدرس، سنستعرض كيفية كتابة استعلامات SQL بسيطة ومتقدمة، وكيفية استخدامها للتفاعل مع قواعد البيانات بشكل فعال.
ما هي SQL؟
SQL، أو لغة الاستعلامات الهيكلية، هي لغة قياسية تُستخدم للوصول إلى البيانات في نظام إدارة قواعد البيانات العلائقية (RDBMS). تُستخدم SQL لإجراء عمليات مختلفة مثل الاستعلام عن البيانات، إدراج بيانات جديدة، تحديث البيانات الحالية، وحذف البيانات. تعتمد SQL على هيكل بسيط لكنها قوية وفعالة في التعامل مع كميات كبيرة من البيانات.
أساسيات قواعد البيانات العلائقية
قبل أن نبدأ في كتابة استعلامات SQL، من المهم أن نفهم بعض المفاهيم الأساسية لقواعد البيانات العلائقية:
- الجدول (Table): هو مجموعة من البيانات المنظمة في صفوف وأعمدة. كل صف يمثل سجلًا (Record) وكل عمود يمثل حقلًا (Field) معينًا من البيانات.
- السجل (Record): هو صف في الجدول، يمثل مجموعة من القيم المرتبطة ببعضها لبعض الحقول.
- الحقل (Field): هو عمود في الجدول، يمثل نوعًا معينًا من البيانات في السجل، مثل اسم الموظف أو رقم الهاتف.
- المفتاح الأساسي (Primary Key): هو حقل أو مجموعة من الحقول التي تميز كل سجل في الجدول بشكل فريد.
- المفتاح الخارجي (Foreign Key): هو حقل أو مجموعة من الحقول في جدول يشير إلى المفتاح الأساسي في جدول آخر، مما يخلق علاقة بين الجدولين.
كتابة أول استعلام SQL
لبدء كتابة استعلامات SQL، نستخدم عبارة SELECT
لاسترجاع البيانات من قاعدة البيانات. إليك الصيغة الأساسية لاستعلام SELECT
:
SELECT column1, column2 FROM table_name;
في هذا الاستعلام، column1
وcolumn2
هما أسماء الأعمدة التي ترغب في استردادها، وtable_name
هو اسم الجدول الذي يحتوي على هذه الأعمدة.
استعلام SQL بسيط: مثال عملي
لنفترض أن لدينا قاعدة بيانات لمتجر تحتوي على جدول باسم Products
، وهذا الجدول يحتوي على الأعمدة التالية: ProductID
، ProductName
، Price
، وQuantity
. لاستخراج أسماء المنتجات وأسعارها، يمكننا استخدام الاستعلام التالي:
SELECT ProductName, Price FROM Products;
هذا الاستعلام سيعيد قائمة بأسماء المنتجات وأسعارها المخزنة في جدول Products
.
استخدام INSERT
لإدخال بيانات جديدة
لإضافة سجلات جديدة إلى الجدول، نستخدم عبارة INSERT INTO
. إليك الصيغة الأساسية لاستخدامها:
INSERT INTO table_name (column1, column2, column3)
VALUES (value1, value2, value3);
على سبيل المثال، لإضافة منتج جديد إلى جدول Products
، نستخدم الاستعلام التالي:
INSERT INTO Products (ProductName, Price, Quantity)
VALUES ('Laptop', 1500, 30);
هذا الاستعلام يضيف منتجًا جديدًا باسم ‘Laptop’ بسعر 1500 وبكمية 30 إلى الجدول.
تحديث البيانات باستخدام UPDATE
لتحديث بيانات موجودة في الجدول، نستخدم عبارة UPDATE
. إليك الصيغة الأساسية:
UPDATE table_name
SET column1 = value1, column2 = value2
WHERE condition;
على سبيل المثال، لتحديث سعر منتج معين في جدول Products
، نستخدم الاستعلام التالي:
UPDATE Products
SET Price = 1400
WHERE ProductName = 'Laptop';
هذا الاستعلام يقوم بتحديث سعر المنتج ‘Laptop’ ليصبح 1400.
حذف البيانات باستخدام DELETE
لحذف بيانات من الجدول، نستخدم عبارة DELETE
. إليك الصيغة الأساسية:
DELETE FROM table_name WHERE condition;
على سبيل المثال، لحذف منتج معين من جدول Products
، نستخدم الاستعلام التالي:
DELETE FROM Products WHERE ProductName = 'Laptop';
هذا الاستعلام يحذف المنتج ‘Laptop’ من الجدول.
استخدام AND
وOR
لدمج الشروط
يمكنك دمج شروط متعددة باستخدام AND
وOR
. على سبيل المثال، لاستخراج جميع المنتجات التي سعرها أكبر من 100 وكمية المخزون أكبر من 50، يمكننا استخدام الاستعلام التالي:
SELECT ProductName, Price, Quantity FROM Products WHERE Price > 100 AND Quantity > 50;
لإرجاع المنتجات التي إما سعرها أكبر من 100 أو كمية المخزون أكبر من 50، نستخدم OR
:
SELECT ProductName, Price, Quantity FROM Products WHERE Price > 100 OR Quantity > 50;
ترتيب النتائج باستخدام ORDER BY
لترتيب النتائج حسب عمود معين، نستخدم عبارة ORDER BY
. على سبيل المثال، لترتيب المنتجات حسب السعر بترتيب تصاعدي، نستخدم الاستعلام التالي:
SELECT ProductName, Price FROM Products ORDER BY Price ASC;
لترتيب النتائج بترتيب تنازلي، نستخدم DESC
بدلًا من ASC
:
SELECT ProductName, Price FROM Products ORDER BY Price DESC;
استخدام الدوال التجميعية: COUNT
، SUM
، AVG
تُستخدم الدوال التجميعية لإجراء عمليات حسابية على مجموعة من القيم وإرجاع قيمة واحدة. بعض الدوال التجميعية الشائعة تشمل:
COUNT
: تحسب عدد الصفوف في مجموعة.SUM
: تحسب مجموع القيم في عمود محدد.AVG
: تحسب متوسط القيم في عمود محدد.
على سبيل المثال، لحساب عدد المنتجات في الجدول، نستخدم COUNT
:
SELECT COUNT(*) FROM Products;
لحساب مجموع الأسعار لكل المنتجات، نستخدم SUM
:
SELECT SUM(Price) FROM Products;
لحساب متوسط السعر، نستخدم AVG
:
SELECT AVG(Price) FROM Products;
تجميع البيانات باستخدام GROUP BY
تُستخدم عبارة GROUP BY
لتجميع البيانات بناءً على عمود أو أكثر. يُستخدم GROUP BY
غالبًا مع الدوال التجميعية لإجراء عمليات حسابية على مجموعات البيانات.
على سبيل المثال، لحساب عدد المنتجات في كل فئة (Category)، يمكننا استخدام الاستعلام التالي:
SELECT Category, COUNT(*) FROM Products GROUP BY Category;
هذا الاستعلام سيعيد عدد المنتجات لكل فئة موجودة في جدول Products
.
تصفية المجموعات باستخدام HAVING
تُستخدم عبارة HAVING
لتصفية المجموعات بعد تجميعها باستخدام GROUP BY
. يتم استخدام HAVING
مع الدوال التجميعية لتصفية النتائج.
على سبيل المثال، إذا أردنا استخراج الفئات التي تحتوي على أكثر من 10 منتجات، يمكننا استخدام الاستعلام التالي:
SELECT Category, COUNT(*) FROM Products GROUP BY Category HAVING COUNT(*) > 10;
هذا الاستعلام سيعيد الفئات التي تحتوي على أكثر من 10 منتجات فقط.
استخدام JOIN
لدمج الجداول
تُستخدم عبارة JOIN
لدمج صفوف من جداول متعددة بناءً على علاقة بين الأعمدة. هناك عدة أنواع من JOIN
، بما في ذلك INNER JOIN
، LEFT JOIN
، RIGHT JOIN
، وFULL OUTER JOIN
.
INNER JOIN
يُستخدم INNER JOIN
لإرجاع الصفوف التي تحتوي على قيم متطابقة في كلا الجدولين. على سبيل المثال، إذا كان لدينا جدولين Orders
وCustomers
، ونريد استخراج جميع الطلبات مع أسماء العملاء المرتبطة بها، يمكننا استخدام الاستعلام التالي:
SELECT Orders.OrderID, Customers.CustomerName
FROM Orders
INNER JOIN Customers ON Orders.CustomerID = Customers.CustomerID;
LEFT JOIN
يُستخدم LEFT JOIN
لإرجاع جميع الصفوف من الجدول الأيسر (الجدول الأول)، بالإضافة إلى الصفوف المتطابقة من الجدول الأيمن. إذا لم يكن هناك تطابق، فإن الصفوف من الجدول الأيسر تُعاد مع قيم فارغة للجدول الأيمن.
SELECT Orders.OrderID, Customers.CustomerName
FROM Orders
LEFT JOIN Customers ON Orders.CustomerID = Customers.CustomerID;
خاتمة
في هذا الدرس الشامل، استعرضنا كيفية كتابة استعلامات SQL بسيطة ومتقدمة، وتعلمنا كيفية استخدام SELECT
، INSERT
، UPDATE
، DELETE
، WHERE
، ORDER BY
، GROUP BY
، HAVING
، وJOIN
لدمج الجداول. تُعد هذه المفاهيم أساسية لتطوير مهاراتك في SQL وإدارة قواعد البيانات بفعالية. تأكد من ممارسة كتابة استعلامات مختلفة لتحسين فهمك واستخدامك لهذه اللغة القوية.
استمر في متابعة دروسنا القادمة لمزيد من المواضيع المتقدمة والمفيدة في SQL، وكيفية تحسين استعلاماتك للحصول على أداء أفضل.
اترك تعليقاً