أدخل في بناء جملة أوراكل المحدد. أساسيات T-SQL

بيت / محركات الأقراص الصلبة

باستخدام SQL، يمكنك نسخ المعلومات من جدول إلى آخر.

تقوم عبارة INSERT INTO SELECT بنسخ البيانات من جدول واحد وإدراجها في جدول موجود.

SQL INSERT INTO SELECT بيان،

عبارة INSERT INTO SELECT تحدد البيانات من جدول واحد وتدرجها في جدول موجود. لا يتم تغيير أي صفوف موجودة في الجدول الهدف.

إدراج SQL في التحديد، بناء الجملة

يمكننا نسخ جميع الأعمدة من جدول إلى جدول آخر موجود:

أدخل في الجدول2
اختر * من الجدول 1؛

أو يمكننا نسخ الأعمدة التي نريدها فقط إلى جدول آخر موجود:

أدخل في الجدول2
(اسم_العمود (الأعمدة))
يختار اسم_العمود (أسماء_الأعمدة)
من الجدول 1؛

النسخة التجريبية من قاعدة البيانات

في هذا البرنامج التعليمي سوف نستخدم قاعدة بيانات Northwind المعروفة.

فيما يلي تحديد من جدول "العملاء":

معرف المستخدماسم العميلالشخص الذي يمكن الاتصال بهعنوانمدينةرمز بريديدولة
1 ألفريدس فوتيركيست ماريا أندرس شارع أوبير. 57 برلين 12209 ألمانيا
2 أنا تروخيو Emparedados y helados آنا تروجيلو أفدا. دي لا الدستور 2222 المكسيك د.ف. 05021 المكسيك
3 أنطونيو مورينو تاكيريا أنطونيو مورينو ماتاديروس 2312 المكسيك د.ف. 05023 المكسيك

والاختيار من جدول "الموردين":

إدراج SQL في التحديد والأمثلة

نسخ بضعة أعمدة فقط من "الموردين" إلى "العملاء":

نسخ الموردين الألمان فقط إلى "العملاء".

فريق يضيف صفوفًا إلى الجدولأو عرض الجدول الرئيسي.

SQL INSERT بناء جملة الأمر

إدراج بناء جملة الأمر


الكلمات الأساسية والمعلمات الأساسية للأمر INSERT
  • مخطط- معرف الإذن، وعادة ما يطابق اسم بعض المستخدمين
  • عرض الجدول- اسم الجدول الذي يجب إدراج الصفوف فيه؛ إذا تم تحديد طريقة عرض، فسيتم إدراج الصفوف في الجدول الرئيسي لطريقة العرض
  • استعلام فرعي_1- استعلام فرعي يعالجه الخادم بنفس طريقة العرض
  • عمود- جدول أو عمود عرض يتم فيه إدخال القيمة من العبارة لكل صف مدرج قيمأو استعلام فرعي؛ إذا تم حذف أحد أعمدة الجدول من هذه القائمة، فإن قيمة العمود للصف المدرج هي قيمة العمود الافتراضية المحددة عند إنشاء الجدول. إذا تم حذف قائمة الأعمدة بالكامل، فإن الجملة قيمأو يجب أن يحدد الاستعلام القيم لجميع الأعمدة في الجدول
  • قيم- يحدد سلسلة من القيم التي سيتم إدراجها في الجدول أو العرض؛ ويجب تعريف المعنى في الجملة قيملكل عمود في قائمة الأعمدة
  • استعلام فرعي_2- استعلام فرعي يقوم بإرجاع الصفوف المدرجة في الجدول؛ يجب أن تحتوي قائمة التحديد لهذا الاستعلام الفرعي على نفس عدد الأعمدة الموجودة في قائمة أعمدة البيان

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

أدخل في المثال 1

أدخل فيقسم قيم(50، "المنتجات"، "سان فرانسيسكو")؛

أدخل فيالعملاء (المدينة، الاسم، الاسم) قيم('لندن'، 'هوفمان'، 2001)؛

أدخل في المثال 2
يقوم الأمر التالي بنسخ بيانات موظفي الشركة الذين تتجاوز عمولاتهم 25% من الدخل إلى جدول المكافآت:

أدخل في Bonus SELECT ename, job, sal, comm FROM emp WHERE com > 0.25 * sal;

أدخل في المثال 3
إذا كنت بحاجة إلى إدراج باطل-القيمة، يجب تحديدها كقيمة عادية كما يلي:

أدخل فيقيم مندوبي المبيعات (1001،'Peel'،NULL،12)؛

أدخل في المثال 4
يمكن استخدام الأمر لاسترداد القيم من جدول ووضعها في جدول آخر باستخدام الاستعلام. للقيام بذلك، يكفي استبدال الجملة قيمللطلب المقابل:

أدخل في Londonstaff SELECT * من مندوبي المبيعات حيث المدينة = 'لندن'؛

إدراج ماي إس كيو إل

لإدراج صفوف جديدة في قاعدة البيانات بيانات ماي إس كيو إلمستخدم أمر إدراج، أمثلة الأوامر وترد أدناه:
أدخل في المثال 1.
إدراج صف جديد في الجدول table_name.

أدخل في

أدخل في المثال 2.
إدراج صف جديد في الجدول table_name يشير إلى إدراج البيانات في الأعمدة التي نحتاجها.

أدخل في table_name VALUES('1','165','0','name');

في قاعدة البيانات ماي إس كيو إلمن الممكن إدراج عدة أسطر جديدة باستخدام أمر واحد.
أدخل في المثال 3.
إدراج صفوف متعددة في الجدول table_name.

أدخل في table_name (tbl_id, chislo, chislotwo, name) VALUES ('1','159','34','name1'), ('2','14','61','name2'), ('3 ′،'356'،'8'،'name3')؛

تقوم عبارة INSERT بإدراج سجلات جديدة في جدول. في هذه الحالة، يمكن أن تكون قيم الأعمدة ثوابت حرفية، أو تكون نتيجة تنفيذ استعلام فرعي. في الحالة الأولى، يتم استخدام عبارة INSERT منفصلة لإدراج كل صف؛ في الحالة الثانية، سيتم إدراج العديد من الصفوف التي يتم إرجاعها بواسطة الاستعلام الفرعي.

بناء جملة المشغل كما يلي:

    أدخل في [(،...)]

    (قيم(،…))

  1. | (القيم الافتراضية)

كما ترون من بناء الجملة المقدم، فإن قائمة الأعمدة اختيارية (الأقواس المربعة في وصف بناء الجملة تشير إلى ذلك). إذا كانت مفقودة، فيجب أن تكون قائمة القيم المدرجة كاملة، أي توفير قيم لجميع أعمدة الجدول. في هذه الحالة، يجب أن يتوافق ترتيب القيم مع الترتيب المحدد بواسطة عبارة CREATE TABLE للجدول الذي تم إدراج الصفوف فيه. بالإضافة إلى ذلك، يجب أن تكون هذه القيم من نفس نوع البيانات مثل الأعمدة التي تم إدخالها فيها. على سبيل المثال، فكر في إدراج صف في جدول المنتج الذي تم إنشاؤه بواسطة عبارة CREATE TABLE التالية:

    إنشاء منتج الجدول

    صانع شار (1) ليس فارغًا،

    نموذج varchar(4) غير فارغ،

    اكتب varchar(7) ليس فارغًا

لنفترض أنك تريد إضافة طراز الكمبيوتر 1157 من الشركة المصنعة B إلى هذا الجدول، ويمكن القيام بذلك من خلال العبارة التالية:

    أدخل في المنتج

    القيم ("B"، 1157، "PC" ) ؛

إذا قمت بتحديد قائمة من الأعمدة، فيمكنك تغيير ترتيبها "الطبيعي":

    أدخل في المنتج (النوع، الموديل، الشركة المصنعة)

    القيم ("PC"، 1157، "B" ) ؛

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

    إنشاء جدول Product_D

    صانع شار (1) NULL،

    نموذج فارشار (4) فارغ،

    اكتب varchar (7) ليس فارغًا افتراضيًا "PC"

لاحظ أن قيم جميع الأعمدة هنا لها قيم افتراضية (أول عمودين فارغان والعمود الأخير من النوع PC). الآن يمكننا أن نكتب:

    أدخل في Product_D (النموذج، الشركة المصنعة)

    القيم (1157، "ب")؛

في هذه الحالة، سيتم استبدال القيمة المفقودة عند إدراج صف بالقيمة الافتراضية - الكمبيوتر الشخصي. لاحظ أنه إذا لم يتم إعطاء عمود قيمة افتراضية في عبارة CREATE TABLE وتم تحديد قيد NOT NULL، مما يمنع استخدام NULL في هذا العمودالجداول، القيمة الافتراضية هي NULL .

السؤال الذي يطرح نفسه: هل من الممكن عدم تحديد قائمة الأعمدة، ومع ذلك، استخدام القيم الافتراضية؟ الجواب هو نعم. للقيام بذلك، بدلاً من تحديد القيمة بشكل صريح، استخدم الكلمة المحجوزة DEFAULT :

    أدخل في Product_D

    القيم ("B"، 1158، الافتراضي)؛

نظرًا لأن جميع الأعمدة لها قيم افتراضية، لإدراج صف بقيم افتراضية، يمكنك الكتابة:

    أدخل في Product_D

    القيم (الافتراضي، الافتراضي، الافتراضي)؛

ومع ذلك، في هذه الحالة، هناك بناء خاص للقيم الافتراضية (انظر بناء جملة عامل التشغيل)، والذي يمكن من خلاله إعادة كتابة عامل التشغيل أعلاه في النموذج

    أدخل في القيم الافتراضية للمنتج_D؛

لاحظ أنه عند إدراج صف في الجدول، يتم فرض جميع القيود هذا الجدول. يمكن أن تكون هذه قيود المفتاح الأساسي أو قيود الفهرس الفريدة، أو قيود التحقق، أو قيود التكامل المرجعي. إذا تم انتهاك أي قيد، فسيتم رفض إدراج الصف. دعونا الآن ننظر في حالة استخدام استعلام فرعي. لنفترض أننا بحاجة إلى إدراج جميع الصفوف من جدول المنتج المتعلقة بالنماذج في جدول Product_D أجهزة الكمبيوتر الشخصية(النوع = "الكمبيوتر الشخصي"). نظرًا لأن القيم التي نحتاجها موجودة بالفعل في بعض الجداول، فإن إنشاء الصفوف المدرجة يدويًا يعد، أولاً، غير فعال، وثانيًا، قد يؤدي إلى حدوث أخطاء في الإدخال. يؤدي استخدام الاستعلام الفرعي إلى حل هذه المشكلات:

استخدام الحرف "*" في استعلام فرعي هو في هذه الحالةمبرر، لأن ترتيب الأعمدة هو نفسه لكلا الجدولين. إذا لم يكن الأمر كذلك، فسيتعين تطبيق قائمة الأعمدة إما في عبارة INSERT أو الاستعلام الفرعي أو كليهما، مما سيطابق ترتيب الأعمدة:

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

في هذه الحالة، سيتم استبدال عمود النوع في جدول Product_D بالقيمة الافتراضية PC لجميع الصفوف المدرجة.

لاحظ أنه عند استخدام استعلام فرعي يحتوي على مسند، سيتم إدراج فقط تلك الصفوف التي تكون قيمة المسند لها TRUE (ليست غير معروفة!). بمعنى آخر، إذا كان عمود النوع في جدول المنتج NULLable، وكانت هذه القيمة موجودة في عدد من الصفوف، فلن يتم إدراج تلك الصفوف في جدول Product_D.

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

    أدخل في Product_D

    اختر صانع "B" AS، موديل 1158 AS، نوع "PC" AS

    الاتحاد الكل

    اختر "ج" 2190 "كمبيوتر محمول"

    الاتحاد الكل

    حدد "د"، 3219، "طابعة"؛

يعد استخدام UNION ALL أفضل من UNION حتى لو تم ضمان عدم وجود صفوف مكررة، لأنه في هذه الحالة لن يتم إجراء أي فحص لإزالة التكرارات.

تجدر الإشارة إلى أن إدراج صفوف متعددة باستخدام مُنشئ الصف قد تم تنفيذه بالفعل نظام إدارة قواعد البيانات العلائقية (DBMS)، الذي طورته شركة مايكروسوفت.لغة الاستعلام الهيكلية) هي لغة كمبيوتر عالمية تستخدم لإنشاء البيانات وتعديلها ومعالجتها في قواعد البيانات العلائقية.خادم SQL 2008. وبالنظر إلى هذا الاحتمال، يمكن إعادة كتابة الاستعلام الأخير على النحو التالي:

    أدخل في قيم Product_D

    ("ب"، 1158، "كمبيوتر شخصي")،

    ("C"، 2190، "كمبيوتر محمول")،

وتعلمنا كيفية إنشاء قاعدة بيانات وجداول في قواعد البيانات هذه، ولكن تبين أن الجداول "فارغة". وفي هذه المقالة أريد أن أعلمك كيفية إدخال البيانات في هذه الجداول وستساعدنا عبارة SQL المسماة "INSERT" في ذلك. لنبدأ:

إدراج- مشغل SQL الذي يسمح لك بإضافة صفوف إلى جدول، وملئها بالقيم. يمكن إدراج القيم عن طريق التعداد باستخدام القيم اللفظية وإدراجها بين قوسين مفصولة بفواصل.

تحتوي عبارة SQL INSERT التي تحدد الأعمدة على بناء الجملة التالي:

أدخل في ([، ... ]) القيم (،...)؛

كما يمكن كتابة القيم دون تحديد أعمدة:

أدخل في القيم (،...)؛

ويمكن أيضًا تسجيل القيم باستخدام بيان SQL SELECT (سندرس عبارة SELECT بعد قليل):

INSERT INTO SELECT اسم العمود،... من اسم الجدول

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

مثال عمل المشغل

هناك جدول "الكواكب". باستخدام عبارة SQL INSERT، تحتاج إلى إضافة سجل، وتعيين القيم التالية لحقول الجدول - ID: 4؛ اسم الكوكب: كوكب الزهرة؛ نصف القطر: 6051؛ موسم الشمس: 243؛ سنة الافتتاح: 1610؛ وجود الخواتم: لا؛ الافتتاحية: جاليليو جاليلي؛

أدخل في الكواكب (ID، PlanetName، Radius، SunSeason، OpeningYear، GettingRings، Opener) القيم (4، "Venus"، 6051، 243، 160، "No"، "Galileo Galilei")؛

بعد تنفيذ الأمر، سيبدو جدول الكواكب بهذا الشكل (كما ترون، تمت إضافة صف جديد وهو بسيط جدًا):



ربما لاحظت أنني عرضت هذا المثال بناءً على بناء الجملة الأول. حيث تحتاج إلى كتابة اسم كل عمود، ولكن يمكن كتابة نفس المثال بشكل مختلف:

أدخل في قيم الكواكب (4، "الزهرة"، 6051، 243، 160، "لا"، "جاليليو جاليلي")؛

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

هنا يأتي درسي الصغير حول عبارة INSERT في SQL. آمل أن يكون كل شيء واضحًا لك، إذا كان لديك أي أسئلة، فاكتب وسأجيب عليها بالتأكيد.

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

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

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

  • - إضافة سطر كامل
  • - إضافة جزء من السطر
  • - إضافة نتائج الاستعلام.

لذلك، لإضافة صف جديد إلى جدول، نحتاج إلى تحديد اسم الجدول، وسرد أسماء الأعمدة وتحديد القيمة لكل عمود باستخدام البنية أدخل في اسم_الجدول (الحقل 1، الحقل 2 ...) قيم (القيمة 1، القيمة 2...). دعونا نلقي نظرة على مثال.

أدخل في قيم البائعين (المعرف، العنوان، المدينة، اسم_البائع، البلد).("6"، "الشارع الأول"، "لوس أنجلوس"، "هاري مونرو"، "الولايات المتحدة الأمريكية")

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

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

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

أدخل في قيم البائعين (المعرف، المدينة، اسم_البائع).("6"، "لوس أنجلوس"، "هاري مونرو")

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

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

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

أدخل في البائعين (الهوية، العنوان، المدينة، اسم_البائع، البلد) حددالهوية، العنوان، المدينة، اسم البائع، البلد من Sellers_EU

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

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

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

اختر * INTO Sellers_new من البائعين

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

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

© 2024 ermake.ru - حول إصلاح أجهزة الكمبيوتر - بوابة المعلومات