TOP

SQL-الدرس 13. إضافة البيانات (INSERT INTO)

تناولنا في الأقسام السابقة عمل استرجاع البيانات من الجداول التي تم إنشاؤها مسبقًا. حان الوقت الآن لمعرفة كيف يمكننا إنشاء/حذف الجداول وإضافة سجلات جديدة وحذف السجلات القديمة.

لهذه الأغراض، هناك عوامل تشغيل في SQL مثل:

  • CREATE - إنشاء جدول؛
  • ALTER - يغير بنية الجدول؛
  • DROP - حذف جدول أو حقل؛
  • INSERT - يضيف البيانات إلى الجدول.
  • لنبدأ في التعرف على هذه المجموعة من العوامل باستخدام عامل التشغيل INSERT.


    1. إضافة خطوط كاملة

    كما يوحي الاسم، يتم استخدام عامل التشغيل INSERT INTO لإدراج (إضافة) صفوف إلى جدول قاعدة البيانات.

    يمكن أن تتم الإضافة بعدة طرق:

  • إضافة سطر كامل؛
  • إضافة جزء من سطر جديد؛
  • إضافة نتائج الاستعلام.
  • لذلك، لإضافة صف جديد إلى الجدول، نحتاج إلى تحديد اسم الجدول، وسرد أسماء الأعمدة، وتحديد القيم لكل عمود باستخدام INSERT INTO table_name(field1, field2 ...) VALUES (value1, القيمة 2 ...) البناء. دعونا نفكر في مثال.

    INSERT INTO Sellers (ID, Address, City, Seller_name, Country) 
    VALUES ('6', '1st Street', 'Los Angeles', 'Harry Monroe', 'USA')
    

    يمكنك أيضًا تغيير ترتيب أسماء الأعمدة، ولكن في نفس الوقت تحتاج إلى تغيير ترتيب القيم في المعلمة VALUES.

    2. إضافة جزء من السطور

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

    INSERT INTO Sellers (ID, City, Seller_name) 
    VALUES ('6', 'Los Angeles', 'Harry Monroe')
    

    في هذا المثال، لم نحدد قيمًا للعمودين Address وCountry. يمكنك استبعاد بعض الأعمدة من عبارة aaa إذا كانت تسمح لك بتعريف الجدول. في هذه الحالة، يجب استيفاء أحد الشروط التالية: يتم تعريف هذا العمود على أنه يسمح بقيمة فارغة (غياب أي قيمة) أو يتم تحديد قيمة افتراضية في تعريف الجدول. وهذا يعني أنه إذا لم يتم تحديد أي قيمة، فسيتم استخدام القيمة الافتراضية. إذا قمت بحذف عمود من جدول لا يسمح بظهور قيم NULL في صفوفه ولا يحتوي على قيمة محددة للاستخدام الافتراضي، فسيصدر نظام إدارة قواعد البيانات رسالة خطأ ولن تتم إضافة الصف.

    3. إضافة البيانات المختارة

    في الأمثلة السابقة، قمنا بإدراج البيانات في الجدول عن طريق كتابتها يدويًا في الاستعلام. ومع ذلك، فإن عامل التشغيل INSERT INTO يسمح لنا بأتمتة هذه العملية إذا أردنا إدراج بيانات من جدول آخر. لهذا، يوجد مثل هذا البناء في SQL مثل INSERT INTO ... SELECT ... . يتيح لك هذا التصميم تحديد البيانات من جدول واحد وإدراجها في جدول آخر في نفس الوقت. لنفترض أن لدينا جدول Sellers_EU آخر يحتوي على قائمة بائعي منتجاتنا في أوروبا ونحتاج إلى إضافتهم إلى الجدول العام Sellers. بنية هذه الجداول هي نفسها (نفس عدد الأعمدة ونفس الأسماء)، ولكن البيانات مختلفة. للقيام بذلك يمكننا كتابة الاستعلام التالي:

    INSERT INTO Sellers (ID, Address, City, Seller_name, Country) 
                 SELECT ID, Address, City, Seller_name, Country 
                 FROM Sellers_EU
    

    ومن الضروري الانتباه حتى لا تتكرر قيم المفاتيح الداخلية (حقل المعرف) وإلا سيحدث خطأ. يمكن أن تتضمن عبارة SELECT أيضًا جملة WHERE لتصفية البيانات. تجدر الإشارة أيضًا إلى أن نظام إدارة قواعد البيانات (DBMS) لا يهتم بأسماء الأعمدة الموجودة في عامل التشغيل SELECT، بل يهتم فقط بترتيب مواقعها. لذلك، سيتم في أي حال تعبئة البيانات الموجودة في العمود المحدد الأول الذي تم تحديده من خلال SELECT في العمود الأول من جدول Sellers المحدد بعد عامل التشغيل INSERT INTO، بغض النظر عن اسم الحقل.

    4. نسخ البيانات من جدول إلى آخر

    في كثير من الأحيان، عند العمل مع قواعد البيانات، تكون هناك حاجة لإنشاء نسخ من أي جداول، بغرض النسخ الاحتياطي أو التعديل. لعمل نسخة كاملة من الجدول في SQL، يتم توفير عامل تشغيل منفصل SELECT INTO. على سبيل المثال، نحتاج إلى إنشاء نسخة من الجدول Sellers، وسنحتاج إلى كتابة الاستعلام على النحو التالي:

    SELECT * INTO Sellers_new 
    FROM Sellers
    

    على عكس البناء السابق INSERT INTO ... SELECT ... عند إضافة البيانات إلى جدول موجود، فإن البناء SELECT ... INTO ... FROM ... ينسخ البيانات إلى جدول جديد. ويمكن القول أيضًا أن البناء الأول يستورد البيانات، والثاني يصدرها.

    عند استخدام البناء SELECT ... INTO ... FROM ... يجب مراعاة ما يلي:

  • يمكنك استخدام أي عبارات في عبارة SELECT، مثل GROUP BY وHAVING؛
  • يمكنك استخدام الاتحاد لإضافة بيانات من عدة جداول؛
  • يمكن إضافة البيانات إلى جدول واحد فقط، بغض النظر عن عدد الجداول المأخوذة منها.