يا هلا! اليوم بنتكلم عن أساسيات إدخال البيانات في قواعد البيانات باستخدام 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. الموضوع بسيط ومهم جدًا لأي مطور أو مسؤول قواعد بيانات. تمرن عليها وبتصير زي شرب الموية!