كيفية إدراج البيانات في SQL


يا هلا! اليوم بنتكلم عن أساسيات إدخال البيانات في قواعد البيانات باستخدام SQL. الموضوع بسيط ومباشر، وهيفيدك في أي قاعدة بيانات تتعامل معاها.

الأساسيات: INSERT INTO VALUES

هذا هو الأمر الأب لكل عمليات الإدراج. يسمح لك بإضافة صف واحد أو أكثر إلى جدول معين.

إدراج البيانات في كل الأعمدة

إذا كنت تريد إدخال قيم لكل الأعمدة في الجدول، يمكنك استخدام الصيغة التالية. المهم هنا هو أن ترتيب القيم يجب أن يتطابق تماماً مع ترتيب الأعمدة في الجدول.

INSERT INTO table_name
VALUES (value1, value2, value3, ...);

مثال:

INSERT INTO Customers
VALUES ('علي', 'الرياض', 'ali@example.com', '0501234567');

ملاحظة سريعة: تأكد دائمًا من أن عدد القيم يتطابق مع عدد الأعمدة، وأن أنواع البيانات متوافقة. يعني لو عمود VARCHAR حط نص، ولو INT حط رقم.

إدراج البيانات في أعمدة محددة

في كثير من الأحيان، ما تحتاجش تدخل بيانات في كل الأعمدة. ممكن يكون عندك أعمدة ذات قيم افتراضية (DEFAULT)، أو أعمدة تقبل قيم فارغة (NULL)، أو أعمدة تتولد تلقائياً (مثل IDENTITY أو AUTO_INCREMENT). هنا تحدد الأعمدة اللي ناوي تدخل فيها قيم:

INSERT INTO table_name (column1, column2, column3, ...)
VALUES (value1, value2, value3, ...);

مثال: لو عندنا جدول Products وعمود Description ممكن يكون فارغ:

INSERT INTO Products (ProductName, Price, StockQuantity)
VALUES ('لابتوب ديل', 3500.00, 50);

نصيحة: هذه الطريقة أفضل دائمًا حتى لو كنت ستدخل بيانات في كل الأعمدة، لأنها تجعل الكود أوضح وأقل عرضة للأخطاء إذا تغير ترتيب الأعمدة في الجدول لاحقًا.

إدراج عدة صفوف دفعة واحدة

بعض قواعد البيانات (مثل MySQL و PostgreSQL و SQL Server الحديثة) تسمح لك بإدراج عدة صفوف في أمر INSERT واحد. هذا يسرع العملية ويقلل من عدد الاستعلامات المرسلة لقاعدة البيانات.

INSERT INTO table_name (column1, column2)
VALUES
    (value1_row1, value2_row1),
    (value1_row2, value2_row2),
    (value1_row3, value2_row3);

مثال:

INSERT INTO Employees (FirstName, LastName, Department)
VALUES
    ('سارة', 'محمد', 'المبيعات'),
    ('أحمد', 'ناصر', 'التسويق'),
    ('ليلى', 'خالد', 'الموارد البشرية');

إدراج البيانات من جدول آخر (INSERT INTO SELECT)

أحيانًا تحتاج تنقل بيانات من جدول لجدول ثاني، أو تنسخ جزء من جدول. هنا بيجي دور INSERT INTO SELECT.

INSERT INTO target_table (column1, column2, ...)
SELECT column_source1, column_source2, ...
FROM source_table
WHERE condition;

مثال: نقل كل العملاء من مدينة "الرياض" إلى جدول RiyadhCustomers:

INSERT INTO RiyadhCustomers (CustomerID, CustomerName, Email)
SELECT CustomerID, CustomerName, Email
FROM Customers
WHERE City = 'الرياض';

تذكر: يجب أن يتطابق عدد الأعمدة وأنواعها بين جملة INSERT وجملة SELECT.

التعامل مع القيم NULL و DEFAULT

  • القيم NULL: إذا كان العمود يقبل قيم NULL ولم تحدد له قيمة في جملة INSERT (باستخدام الطريقة الثانية لتحديد الأعمدة)، فسيتم إدخال NULL تلقائيًا. أو يمكنك تحديد NULL صراحةً كقيمة.
  • القيم DEFAULT: إذا كان العمود له قيمة افتراضية DEFAULT ولم تحدد له قيمة في جملة INSERT، فسيتم استخدام القيمة الافتراضية. يمكنك أيضًا استخدام الكلمة المفتاحية DEFAULT كقيمة لتطبيق القيمة الافتراضية صراحةً.

مثال:

-- إدخال NULL تلقائياً لـ Email
INSERT INTO Customers (CustomerName, City)
VALUES ('فاطمة', 'جدة');

-- إدخال NULL صراحةً لـ Phone
INSERT INTO Customers (CustomerName, City, Phone)
VALUES ('خالد', 'الدمام', NULL);

-- استخدام القيمة الافتراضية لعمود Status (لو كان معرف له DEFAULT)
INSERT INTO Orders (CustomerID, OrderDate, Status)
VALUES (101, GETDATE(), DEFAULT);

وبكذا نكون غطينا أهم الطرق لإدراج البيانات في SQL. الموضوع بسيط ومهم جدًا لأي مطور أو مسؤول قواعد بيانات. تمرن عليها وبتصير زي شرب الموية!