ecosmak.ru

در دستور اوراکل انتخاب کنید. پرس و جوی SQL INSERT INTO - پایگاه داده را با اطلاعات پر کنید

تیم ردیف هایی را به جدول اضافه می کندیا نمای جدول اصلی

دستور دستور Sql INSERT

درج دستور دستور


کلیدواژه ها و پارامترهای اصلی دستور INSERT
  • طرحواره- شناسه مجوز، معمولاً با نام برخی از کاربران مطابقت دارد
  • نمای جدول- نام جدولی که سطرها باید در آن درج شوند. اگر نما مشخص شده باشد، سطرها در جدول اصلی نما درج می شوند
  • subquery_1- یک پرس و جو فرعی که سرور به روشی مشابه یک view پردازش می کند
  • ستون- یک جدول یا ستون نمای که در آن مقدار عبارت برای هر ردیف درج شده وارد می شود ارزش هاییا فرعی؛ اگر یکی از ستون‌های جدول از این لیست حذف شود، مقدار ستون برای سطر درج شده، مقدار ستون پیش‌فرض است که هنگام ایجاد جدول تعریف شده است. اگر یک لیست ستون به طور کامل حذف شود، بند ارزش هاییا پرس و جو باید مقادیری را برای تمام ستون های جدول تعیین کند
  • ارزش های- رشته ای از مقادیر را تعریف می کند که در جدول یا view درج می شود. معنی باید در جمله تعریف شود ارزش هایبرای هر ستون در لیست ستون ها
  • subquery_2- یک پرسش فرعی که ردیف های درج شده در جدول را برمی گرداند. لیست انتخاب این سوال فرعی باید همان تعداد ستون را داشته باشد که لیست ستون بیانیه

بیانیه با عبارت ارزش هاییک ردیف به جدول اضافه می کند. این خط حاوی مقادیر تعریف شده توسط عبارت است ارزش های.
بیانیه با استعلام فرعیبه جای یک عبارت ارزش هایتمام سطرهای برگردانده شده توسط subquery را به جدول اضافه می کند. سرور پردازش می کند استعلام فرعیو هر سطر برگشتی را در جدول درج می کند. اگر پرس و جوی فرعی هیچ ردیفی را انتخاب نکند، سرور هیچ ردیفی را در جدول وارد نمی کند.
استعلام فرعیمی تواند به هر جدول یا نما، از جمله جدول ادعای هدف دسترسی داشته باشد . سرور بر اساس موقعیت داخلی ستون‌ها در جدول و ترتیب مقادیر عبارت، مقادیری را به فیلدهای ردیف‌های جدید اختصاص می‌دهد. ارزش هاییا در لیست انتخاب پرس و جو. اگر ستون‌هایی از فهرست ستون‌ها وجود نداشته باشد، سرور مقادیر پیش‌فرض تعریف شده در زمان ایجاد جدول را به آن‌ها اختصاص می‌دهد. اگر هر یک از این ستون‌ها دارای محدودیت NOT NULL باشد، سرور خطایی نشان می‌دهد که محدودیت نقض شده است و عبارت INSERT را لغو می‌کند.
هنگامی که یک دستور INSERT صادر می شود، هر راه اندازی INSERT تعریف شده روی جدول فعال می شود.

در مثال 1 درج کنید

درج کنیدبخش ارزش های(50، "محصولات"، "سان فرانسیسکو")؛

درج کنیدمشتریان (شهر، cname، cnum) ارزش های('لندن'، 'هافمن'، 2001)؛

در مثال 2 وارد کنید
دستور زیر داده های کارکنان شرکتی را که کمیسیون آنها بیش از 25 درصد درآمد است را در جدول پاداش کپی می کند:

درج کنیدجایزه SELECT ename, job, sal, comm FROM emp WHERE comm > 0.25 * sal;

در مثال 3 درج کنید
اگر نیاز به درج دارید خالی-value، باید آن را به صورت یک مقدار عادی به صورت زیر مشخص کنید:

درج کنیدارزش فروشندگان (1001,'Peel',NULL,12);

در مثال 4 وارد کنید
از این دستور می توان برای بازیابی مقادیر از یک جدول و قرار دادن آنها در جدول دیگر با استفاده از پرس و جو استفاده کرد. برای این کار کافی است جمله را جایگزین کنید ارزش هایبه درخواست مربوطه:

درج کنید Londonstaff SELECT * FROM Salespeople WHERE city = 'London';

MySQL INSERT

برای درج ردیف‌های جدید در پایگاه داده MySQL، استفاده کنید دستور INSERT، مثال های دستوری در زیر آورده شده است:
در مثال 1 درج کنید.
درج یک ردیف جدید در جدول table_name.

درج کنید

در مثال 2 وارد کنید.
درج یک ردیف جدید در جدول table_name که نشان دهنده درج داده ها در ستون های مورد نیاز ما است.

درج کنید table_name VALUES('1','165','0','name');

در پایگاه داده MySQLدرج چندین خط جدید با استفاده از یک دستور امکان پذیر است.
در مثال 3 درج کنید.
درج چند ردیف در جدول table_name.

درج کنیدجدول_نام (tbl_id، chislo، chislotwo، نام) VALUES ('1','159','34','name1')، ('2','14','61','name2')، ('3 ','356','8','name3');

این عبارت یک یا چند رکورد را به یک جدول اضافه می کند (یک پرس و جو ضمیمه را انجام می دهد).

نحو

درخواست اضافه کردن چندین رکورد:

درج کنید نهایی_شیء [(میدان 1[, میدان 2[, ...]])]
انتخاب کنید [ منبع.]میدان 1[, میدان 2[, ...]
از جانب table_expression

درخواست اضافه کردن یک رکورد:

درج کنید نهایی_شیء [(میدان 1[, میدان 2[, ...]])]
ارزش های ( میدان 1[, میدان 2[, ...])

دستور INSERT INTO از عناصر زیر تشکیل شده است:

قسمت

شرح

نهایی_شیء

نام جدول یا درخواستی که رکوردها در آن اضافه می شوند.

میدان 1, میدان 2

بعد از مشاجره نهایی_شیء- نام فیلدهایی که داده ها به آنها اضافه شده است. بعد از بحث منبع- نام فیلدهایی که داده ها از آنها استخراج می شود.

پایگاه_داده خارجی

مسیر به پایگاه داده خارجی برای توضیح مسیر، به مقاله مربوط به بند IN مراجعه کنید.

منبع

نام جدول یا درخواستی که رکوردها از آن کپی می شوند.

table_expression

یک یا چند نام جدول که می خواهید رکوردها را از آنها بازیابی کنید. این آرگومان می‌تواند نام یک جدول مجزا، عبارت نتیجه‌ای باشد که با استفاده از پیوستن داخلی، LEFT JOIN، یا RIGHT JOIN ساخته شده است، یا یک پرس و جو ذخیره شده است.

ارزش 1, ارزش 2

مقادیری که به فیلدهای خاص رکورد جدید اضافه می شوند. هر مقدار در فیلد مربوط به موقعیت آن در لیست درج می شود: ارزش 1اضافه شده به میدان 1ورودی جدید، ارزش 2- V میدان 2و غیره. شما باید مقادیر را با کاما جدا کنید و فیلدهای متنی را در علامت نقل قول (" ") قرار دهید.

یادداشت

دستور INSERT INTO می تواند یک رکورد واحد را با استفاده از نحو بالا به جدول اضافه کند. در این حالت برای هر فیلد در رکورد نام و مقادیر مشخص می کنید. شما باید تمام فیلدهایی را در رکورد که مقادیر به آنها اختصاص داده شده و مقادیر مربوطه را مشخص کنید. اگر مقدار فیلد را مشخص نکنید، مقدار پیش فرض یا NULL به آن اختصاص داده می شود. رکوردها به انتهای جدول اضافه می شوند.

دستور INSERT INTO همچنین می تواند برای افزودن مجموعه ای از رکوردها از جدول یا پرس و جوی دیگر با استفاده از عبارت SELECT... FROM همانطور که در بالا نشان داده شده است استفاده شود (به نحو پرس و جو برای افزودن چندین رکورد مراجعه کنید). در این حالت، بند SELECT فیلدهایی را برای افزودن به موارد مشخص شده مشخص می کند نهایی_شیء.

منبعیا نهایی_شیءمی تواند یک جدول یا یک پرس و جو باشد. هنگامی که یک پرس و جو داده می شود، موتور پایگاه داده مایکروسافت اکسس، رکوردهایی را به تمام جداولی که برمی گرداند اضافه می کند.

استفاده از عبارت INSERT INTO اختیاری است. اگر مشخص شده باشد، باید قبل از عبارت SELECT باشد.

اگر جدول هدف حاوی یک کلید اصلی است، اطمینان حاصل کنید که مقادیری که به یک یا چند فیلد کلید اصلی اضافه می‌کنید منحصر به فرد و متمایز از آن هستند. خالی; در غیر این صورت مطالب اضافه نخواهد شد.

اگر رکوردها به جدولی با فیلد شمارنده اضافه می شوند و می خواهید آنها را مجددا شماره گذاری کنید، فیلد شمارنده را در پرس و جو وارد نکنید. اگر می خواهید مقادیر اصلی فیلد را حفظ کنید، فیلد Counter را در پرس و جو قرار دهید.

با استفاده از عبارت IN می توانید رکوردها را به جدولی در پایگاه داده دیگری اضافه کنید.

برای ایجاد جدول، از دستور SELECT... INTO برای ایجاد پرس و جو برای ایجاد جدول استفاده کنید.

قبل از اجرای یک پرس و جو افزودن، از یک جستجوی انتخابی با معیارهای انتخاب یکسان استفاده کنید تا از نتایج برای تعیین اینکه کدام رکوردها اضافه می شوند استفاده کنید.

یک پرس و جو ضمیمه رکوردها را از یک یا چند جدول به جدول دیگر کپی می کند. در این حالت جداول حاوی رکوردهای اضافه شده بدون تغییر باقی می مانند.

به جای اضافه کردن رکوردها از جدول دیگری، می توانید مقدار هر فیلد را در یک رکورد جدید جداگانه با استفاده از عبارت VALUES تنظیم کنید. اگر یک لیست فیلد حذف شود، بند VALUES باید مقادیر مربوط به هر فیلد جدول را شامل شود. در غیر این صورت، عملیات INSERT ناموفق خواهد بود. از عبارت INSERT INTO همراه با عبارت VALUES برای هر رکورد اضافی که می خواهید ایجاد کنید استفاده کنید.

سلام به همه! این مقاله در مورد اینکه چگونه می توانید صحبت خواهد کرد داده ها را به جدول اضافه کنیددر Microsoft SQL Server، اگر حداقل کمی با زبان T-SQL آشنا هستید، احتمالا متوجه شده اید که اکنون در مورد عبارت INSERT و همچنین نحوه استفاده از آن برای افزودن داده به جدول صحبت خواهیم کرد.

بیایید طبق معمول با کمی تئوری شروع کنیم.

عبارت INSERT در T-SQL

درج کنیدیک دستورالعمل T-SQL است که برای اضافه کردن داده ها به یک جدول طراحی شده است. ایجاد رکوردهای جدید از این دستورالعمل می توان هم برای افزودن یک ردیف به جدول و هم برای درج داده ها به صورت انبوه استفاده کرد. دستور INSERT برای درج داده نیاز به مجوز دارد ( درج کنید) به جدول هدف.

روش های مختلفی برای استفاده از عبارت INSERT روی داده ای که باید درج شود وجود دارد:

  • فهرست کردن مقادیر خاص برای درج؛
  • تعیین یک مجموعه داده به عنوان یک کوئری SELECT.
  • تعیین یک مجموعه داده در قالب فراخوانی رویه که داده های جدولی را برمی گرداند.

نحو ساده شده

درج [جدول] ( لیست ستون های ...) ارزش های ( فهرست ارزش ها ...) یا SELECT درخواست نمونهیا اجرا کنید روش

  • INSERT INTO دستوری برای افزودن داده به جدول است.
  • Table نام جدول هدفی است که می خواهید رکوردهای جدیدی را در آن وارد کنید.
  • لیست ستون لیستی از نام ستون های جدول است که داده ها در آن درج می شوند، که با کاما از هم جدا می شوند.
  • VALUES یک سازنده ارزش جدول است که با آن مقادیری را که در جدول وارد می کنیم مشخص می کنیم.
  • لیست مقادیر، مقادیری است که با کاما از هم جدا می شوند. آنها به ترتیبی که ستون ها در لیست ستون ها ظاهر می شوند فهرست می شوند.
  • SELECT یک پرس و جو برای انتخاب داده ها برای درج در جدول است. مجموعه نتایجی که پرس و جو برمی گرداند باید با لیست ستون ها مطابقت داشته باشد.
  • EXECUTE یک فراخوانی رویه برای به دست آوردن داده برای درج در جدول است. مجموعه نتیجه ای که رویه ذخیره شده برمی گرداند باید با لیست ستون ها مطابقت داشته باشد.

این تقریباً همان چیزی است که نحو ساده شده عبارت INSERT INTO به نظر می رسد؛ در بیشتر موارد، به این ترتیب رکوردهای جدید را به جداول اضافه می کنید.

لیست ستون هایی که داده ها را در آنها درج خواهید کرد نیازی به نوشتن ندارد، در این صورت ترتیب آنها بر اساس ترتیب واقعی ستون ها در جدول تعیین می شود. هنگامی که مقادیری را برای درج یا نوشتن یک پرس و جو برای انتخاب تعیین می کنید، باید این ترتیب را به خاطر بسپارید. من شخصاً توصیه می‌کنم همچنان فهرستی از ستون‌هایی را که قصد دارید داده‌ها را به آنها اضافه کنید، نشان دهید.

همچنین باید به یاد داشته باشید که لیست ستون ها و لیست مقادیر به ترتیب باید شامل ستون های به اصطلاح مورد نیاز باشد؛ این ها ستون هایی هستند که نمی توانند حاوی مقدار NULL باشند. اگر آنها را مشخص نکنید و ستون دارای مقدار پیش فرض نباشد، خطایی رخ می دهد.

همچنین می خواهم توجه داشته باشم که نوع داده مقادیری که درج می کنید باید با نوع داده ستونی که این مقدار در آن درج می شود مطابقت داشته باشد یا حداقل از تبدیل ضمنی پشتیبانی کند. اما من به شما توصیه می کنم که نوع داده را کنترل کنید ( قالب) مقادیر، هم در لیست مقادیر و هم در کوئری SELECT.

تئوری بس است، بیایید به سراغ عمل برویم.

اطلاعات اولیه

برای افزودن داده به جدول، به خود جدول نیاز داریم، پس بیایید آن را ایجاد کنیم و سعی کنیم رکوردهایی به آن اضافه کنیم.

توجه داشته باشید! همه نمونه ها در Microsoft SQL Server 2016 Express اجرا خواهند شد.

CREATE TABLE TestTable( IDENTITY(1,1) NOT NULL, (100) NOT NULL, NOT NULL)

جدول تست ما حاوی لیستی از محصولات با قیمت خواهد بود.

همچنین در مثال‌ها از رویه‌ای استفاده می‌کنیم که یک مقدار جدول را برای افزودن داده به جدول برمی‌گرداند، بنابراین بیایید آن را نیز ایجاد کنیم.

ایجاد رویه TestProcedure در ابتدا نام محصول را انتخاب کنید، قیمت از انتهای TestTable

به عنوان مثال، داده ها را از جدول TestTable تازه ایجاد شده برمی گرداند.

توجه داشته باشید!

همانطور که متوجه شدید، خواندن این مطالب به معنای داشتن دانش زبان T-SQL است، بنابراین اگر چیزی برای شما واضح نیست، توصیه می کنم با مطالب زیر آشنا شوید:

مثال 1 - افزودن یک رکورد جدید به جدول با استفاده از سازنده مقدار جدول

ابتدا بیایید یک رکورد اضافه کنیم و فوراً به نتیجه نگاه کنیم. بیایید یک درخواست برای نمونه بنویسیم.

INSERT INTO TestTable(ProductName, Price) VALUES ("Computer", 100) GO SELECT * FROM TestTable

می بینید که بعد از نام جدول، نام ستون هایی را که داده ها را به آنها اضافه خواهیم کرد، با کاما از هم جدا کردیم، سپس کلمه کلیدی را مشخص کردیم. ارزش هایو در داخل پرانتز نیز به همین ترتیب، با کاما از هم جدا شده اند، مقادیری را که می خواهیم درج کنیم، نوشتیم.

بعد از دستور INSERT یک دستور SELECT نوشتم و آنها را با یک دستور GO جدا کردم.

حالا بیایید تصور کنیم که باید چند خط اضافه کنیم. برای این درخواست زیر را می نویسیم.

درج در TestTable(ProductName, Price) VALUES ("رایانه"، 100)، ("Keyboard"، 20)، ("Monitor"، 50) GO SELECT * FROM TestTable


مثال 2 - افزودن ردیف های جدید به جدول با استفاده از پرس و جو SELECT

اغلب اوقات نیاز به اضافه کردن داده های زیادی به یک جدول وجود دارد، به عنوان مثال، بر اساس یک پرس و جو انتخاب شده، به عنوان مثال. انتخاب کنید. برای انجام این کار، به جای VALUES، فقط باید درخواست را مشخص کنیم.

INSERT INTO TestTable(ProductName, Price) SELECT ProductName, Price FROM TestTable WHERE ID >


در این مثال، ما یک کوئری SELECT نوشتیم که داده‌ها را از جدول TestTable برمی‌گرداند، اما نه همه آن‌ها، بلکه فقط آنهایی که شناسه بزرگ‌تر از 2 دارند. و نتیجه در همان جدول TestTable درج شد.

به عنوان مثالی از اینکه چگونه می‌توانید رکوردها را بدون تعیین فهرستی از ستون‌ها به یک جدول اضافه کنید، بیایید یک پرس‌وجوی درج داده دیگری بنویسیم که دقیقاً همان کاری را که عبارت بالا انجام می‌دهد انجام می‌دهد، فقط ستون‌هایی را که قرار است درج شود فهرست نمی‌کند.

درج در TestTable SELECT نام محصول، قیمت از TestTable WHERE ID > 2 GO SELECT * FROM TestTable


در این مورد، ما مطمئن هستیم که در جدول TestTable ستون اول ProductName و دومی Price است، بنابراین می توانیم آن را به این صورت بنویسیم. اما باز هم در عمل بهتر است لیستی از ستون ها را مشخص کنید.

اگر متوجه شدید، در تمام مثال‌ها ستون Id را مشخص نکردم، اما آن را داریم، هیچ خطایی رخ نداده است، از آنجایی که این ستون دارای خاصیت IDENTITY است، به طور خودکار شناسه‌ها را تولید می‌کند، بنابراین وارد کردن داده‌ها در چنین ستونی به سادگی انجام نمی‌شود.

مثال 3 - افزودن رکوردهای جدید به جدول با استفاده از رویه ذخیره شده

حالا بیایید داده ها را در جدولی که رویه ذخیره شده به ما باز می گرداند وارد کنیم. معنی در اینجا یکسان است، به جای VALUES و به جای درخواست، فراخوانی رویه را نشان می دهیم. اما همانطور که می‌دانید، ترتیب و تعداد ستون‌های برگردانده شده توسط رویه باید کاملاً با فهرست ستون‌هایی که قرار است درج شوند مطابقت داشته باشد. حتی اگر لیست ستون مشخص نشده باشد).

INSERT INTO TestTable(ProductName, Price) EXEC TestProcedure GO SELECT * FROM TestTable


امیدوارم این مطالب به شما در درک دستورالعمل ها کمک کرده باشد. درج کنید، و این تمام چیزی است که در حال حاضر دارم!

در بخش های قبلی، کار بازیابی داده ها از جداول از پیش ساخته شده را بررسی کردیم. اکنون زمان آن رسیده است که بفهمیم چگونه می توانیم جداول ایجاد/حذف کنیم، رکوردهای جدید اضافه کنیم و موارد قدیمی را حذف کنیم. برای این اهداف در SQLاپراتورهایی مانند: ايجاد كردن- ایجاد جدول، تغییر دهید- تغییر ساختار جدول، رها کردن- یک جدول یا فیلد را حذف می کند، درج کنید- داده ها را به جدول اضافه می کند. بیایید آشنایی با این گروه از اپراتورها را از اپراتور شروع کنیم درج کنید.

1. اضافه کردن کل خطوط

همانطور که از نام آن پیداست، اپراتور درج کنیدبرای درج (الحاق) ردیف ها به جدول پایگاه داده استفاده می شود. اضافه کردن را می توان به چند روش انجام داد:

  • - یک خط کامل اضافه کنید
  • - اضافه کردن بخشی از یک خط
  • - اضافه کردن نتایج پرس و جو

بنابراین، برای افزودن یک ردیف جدید به جدول، باید نام جدول را مشخص کنیم، نام ستون ها را لیست کنیم و مقدار هر ستون را با استفاده از ساختار مشخص کنیم. درج کنید جدول_نام (فیلد1، فیلد2 ...) ارزش های (value1, value2...). بیایید به یک مثال نگاه کنیم.

INSERT INTO Sellers (ID، آدرس، شهر، Seller_name، کشور) VALUES("6"، "خیابان اول"، "لس آنجلس"، "هری مونرو"، "ایالات متحده آمریکا")

شما همچنین می توانید ترتیب نام ستون ها را تغییر دهید، اما در همان زمان باید ترتیب مقادیر در پارامتر را تغییر دهید. ارزش های.

2. اضافه کردن بخشی از خطوط

در مثال قبلی هنگام استفاده از عملگر درج کنیدما به صراحت نام ستون های جدول را علامت گذاری کرده ایم. با استفاده از این نحو، می توانیم برخی از ستون ها را رد کنیم. این بدان معنی است که شما مقادیری را برای برخی از ستون ها وارد می کنید اما برای برخی دیگر آنها را ارائه نمی کنید. مثلا:

INSERT INTO Sellers (ID، شهر، Seller_name) VALUES("6"، "لس آنجلس"، "هری مونرو")

در این مثال، مقداری برای دو ستون مشخص نکردیم نشانیو کشور. می توانید برخی از ستون ها را از بیانیه حذف کنید درج کنید، اگر این اجازه تعریف جدول را بدهد. در این مورد، یکی از شرایط باید رعایت شود: این ستون به عنوان معتبر تعریف شده است خالی(عدم وجود هر مقدار) یا مقدار پیش فرض مشخص شده در تعریف جدول. به این معنی که اگر مقداری مشخص نشده باشد، از مقدار پیش فرض استفاده می شود. اگر ستونی از جدول را گم کرده اید که اجازه نمی دهد مقادیر در ردیف های آن ظاهر شوند خالیو مقدار پیش فرض تعریف نشده باشد، DBMS یک پیغام خطا ایجاد می کند و ردیف اضافه نمی شود.

3. اضافه کردن داده های انتخاب شده

در مثال قبلی، داده ها را با وارد کردن دستی جداول در پرس و جو، درج کردیم. با این حال، اپراتور درج کنیدبه ما این امکان را می دهد که اگر می خواهیم داده ها را از جدول دیگری وارد کنیم، این فرآیند را خودکار کنیم. برای این منظور در SQL چنین ساختاری وجود دارد درج در ... انتخاب .... این طراحی به شما این امکان را می دهد که به طور همزمان داده ها را از یک جدول انتخاب کرده و در جدول دیگر وارد کنید. بیایید فرض کنیم جدول دیگری داریم Sellers_EUبا لیستی از فروشندگان کالاهای ما در اروپا و باید آنها را به جدول کلی اضافه کنیم فروشندگان. ساختار این جداول یکسان است (تعداد ستون ها و نام های یکسان) اما داده ها متفاوت است. برای این کار می توانیم کوئری زیر را بنویسیم:

INSERT INTO Sellers (شناسه، آدرس، شهر، نام فروشنده، کشور) انتخاب کنیدشناسه، آدرس، شهر، نام فروشنده، کشور از فروشندگان_EU

باید توجه کنید تا مقادیر کلیدهای داخلی تکرار نشود (فیلد شناسه) در غیر این صورت خطایی رخ خواهد داد. اپراتور انتخاب کنیدهمچنین ممکن است شامل پیشنهاداتی باشد جایی کهبرای فیلتر کردن داده ها همچنین لازم به ذکر است که DBMS به نام ستون های موجود در بیانیه توجهی نمی کند. انتخاب کنید، فقط ترتیب چیدمان آنها برای او مهم است. بنابراین، داده ها در اولین ستون مشخص شده که به دلیل انتخاب شده است انتخاب کنید، در هر صورت در ستون اول جدول پر می شود فروشندگان، بعد از اپراتور مشخص شده است درج کنید، صرف نظر از نام فیلد.

4. کپی داده ها از یک جدول به جدول دیگر

اغلب هنگام کار با پایگاه های داده، نیاز به ایجاد کپی از هر جدولی به منظور تهیه نسخه پشتیبان یا اصلاح وجود دارد. برای ایجاد یک کپی کامل از یک جدول، SQL یک عبارت جداگانه ارائه می دهد INTO را انتخاب کنید. به عنوان مثال، باید یک کپی از جدول ایجاد کنیم فروشندگان، باید درخواست را به صورت زیر بنویسید:

SELECT * INTO Sellers_new FROM Sellers

برخلاف طرح قبلی درج در ... انتخاب ...هنگامی که داده ها به جدول موجود اضافه می شود، طرح داده ها را در جدول جدید کپی می کند. شما همچنین می توانید بگویید که ساخت اول داده های واردات و دوم صادرات. هنگام استفاده از طرح انتخاب ... به ... از ...موارد زیر باید در نظر گرفته شود:

  • - می توانید از هر جمله ای در عملگر استفاده کنید انتخاب کنید، مانند دسته بندی بر اساسو داشتن
  • - می توانید از یک join برای اضافه کردن داده ها از چندین جدول استفاده کنید
  • - داده ها را فقط می توان به یک جدول اضافه کرد، مهم نیست از چند جدول گرفته شده باشد.

علاوه بر عبارت SELECT که قبلاً مورد بحث قرار گرفت، زبان دستکاری داده ها (DML) شامل سه عبارت دیگر است: INSERT، UPDATE، و DELETE. مانند دستور SELECT، این سه دستور بر روی جداول یا نماها عمل می کنند. این مقاله عبارت INSERT را پوشش می دهد و دو عبارت دیگر در مقاله بعدی پوشش داده می شود.

عبارت INSERTسطرها (یا قسمت هایی از ردیف ها) را در جدول قرار می دهد. دو شکل متفاوت از این دستورالعمل وجود دارد:

درج tab_name [(col_list)] مقادیر پیش‌فرض | VALUES (( پیش فرض | NULL | عبارت ) [ ,...n]) INSERT INTO tab_name | view_name [(col_list)] (select_statement | execute_statement) قراردادهای نحوی

فرم اول دستورالعمل به شما امکان می دهد یک ردیف (یا بخشی از آن) را در جدول قرار دهید. و شکل دوم دستور INSERT به شما امکان می دهد مجموعه نتیجه یک دستور SELECT یا یک رویه ذخیره شده اجرا شده توسط یک دستور EXECUTE را در جدول درج کنید. رویه ذخیره شده باید داده ها را برای درج در جدول برگرداند. هنگامی که با یک دستور INSERT استفاده می شود، یک دستور SELECT می تواند مقادیری را از یک جدول متفاوت یا همان جدولی که داده ها در آن درج می شوند انتخاب کند، تا زمانی که انواع داده های ستون های مربوطه با هم سازگار باشند.

برای هر دو فرم، نوع داده هر مقدار درج شده باید با نوع داده ستون جدول مربوطه سازگار باشد. تمام رشته ها و داده های موقت باید در گیومه محصور شوند. لازم نیست مقادیر عددی در گیومه قرار بگیرند.

درج یک ردیف

برای هر دو شکل عبارت INSERT، مشخص کردن فهرست ستون به صراحت اختیاری است. لیست نکردن ستون ها مانند مشخص کردن تمام ستون ها در جدول است.

پارامتر DEFAULT VALUESمقادیر پیش فرض را برای همه ستون ها درج می کند. ستون هایی با نوع داده TIMESTAMP یا ویژگی IDENTITY به طور پیش فرض با مقادیری که به طور خودکار توسط سیستم تولید می شوند درج می شوند. برای ستون‌های دیگر انواع داده‌ها، مقدار پیش‌فرض غیر تهی متناظر در صورت موجود بودن یا NULL درج می‌شود. اگر ستونی مقادیر null را مجاز نکند و یک مقدار پیش فرض تعریف نشده باشد، عبارت INSERT از کار می افتد و یک پیام نمایش داده می شود.

مثال زیر ردیف‌هایی را در جدول Employee در پایگاه داده SampleDb وارد می‌کند و استفاده از عبارت INSERT را برای درج مقدار کمی داده در پایگاه داده نشان می‌دهد:

از SampleDb استفاده کنید. INSERT INTO Employee VALUES (34990، "Andrey"، "Batonov"، "d1"); INSERT INTO Employee VALUES (38640، "Alexey"، "Vasin"، "d3");

دو روش مختلف برای درج مقادیر در یک ردیف جدید وجود دارد. عبارت INSERT در مثال زیر به صراحت از کلمه کلیدی NULL استفاده می کند و یک مقدار NULL را در ستون مربوطه وارد می کند:

از SampleDb استفاده کنید. INSERT INTO Employee VALUES (34991، "Andrey"، "Batonov"، NULL);

برای درج مقادیر در برخی (و نه همه) ستون‌های جدول، معمولاً باید آن ستون‌ها را به صراحت مشخص کنید. ستون های نامشخص باید مقادیر NULL را مجاز کنند یا یک مقدار پیش فرض تعریف شده باشند.

از SampleDb استفاده کنید. INSERT INTO Employee(Id, FirstName, LastName) VALUES (34992, "Andrey", "Batonov");

دو مثال قبلی معادل هستند. در جدول Employee، تنها ستونی که مقادیر NULL را مجاز می‌کند، ستون DepartmentNumber است و سایر ستون‌ها با عبارت NOT NULL در عبارت CREATE TABLE غیرفعال شدند.

ترتیب ارزش ها در پیشنهاد VALUESعبارات INSERT ممکن است با ترتیب مشخص شده در عبارت CREATE TABLE متفاوت باشد. در این حالت، ترتیب آنها باید با ترتیبی که ستون های مربوطه در لیست ستون ها فهرست شده اند مطابقت داشته باشد. در زیر نمونه ای از درج داده ها با ترتیبی متفاوت از نمونه اصلی آورده شده است:

از SampleDb استفاده کنید. INSERT INTO Employee(DepartamentNumber, LastName, Id, FirstName) VALUES ("d1"، "Batonov"، 34993، "Andrey");

درج چند ردیف

شکل دوم دستور INSERT یک یا چند ردیف انتخاب شده توسط یک پرسش فرعی را در جدول درج می کند. مثال زیر نحوه درج ردیف ها را با استفاده از فرم دوم عبارت INSERT نشان می دهد. در این مورد، یک پرس و جو برای انتخاب شماره و نام بخش های مستقر در مسکو اجرا می شود و مجموعه نتایج حاصل در جدول جدیدی که قبلاً ایجاد شده است بارگذاری می شود.

جدول جدید MoscowDepartment ایجاد شده در مثال بالا دارای همان ستون‌هایی است که جدول Department موجود است، به جز ستون مکان از دست رفته. پرسش فرعی در عبارت INSERT همه سطرهایی را در جدول Department که مقدار ستون Location برای آنها "Moscow" است، انتخاب می کند، که سپس در جدول جدید ایجاد شده در ابتدای پرس و جو درج می شود.

مثال زیر روش دیگری را برای درج ردیف ها در جدول با استفاده از شکل دوم عبارت INSERT نشان می دهد. در این مورد، یک پرس و جو برای انتخاب شماره پرسنل، شماره پروژه و تاریخ شروع پروژه برای همه کارکنان با موقعیت "مدیر" که روی پروژه p2 کار می کنند اجرا می شود و سپس مجموعه نتیجه حاصل را در جدول جدیدی که در ابتدای آن ایجاد شده است بارگذاری می کند. پرس و جو:

از SampleDb استفاده کنید. CREATE TABLE ManagerTeam (EmpId INT NOT NULL، ProjectNumber CHAR (4) NOT NULL، EnterDate DATE)؛ INSERT INTO ManagerTeam (EmpId، ProjectNumber، EnterDate) SELECT EmpId، ProjectNumber، EnterDate FROM Works_on WHERE Job = "Manager";

قبل از درج ردیف ها با استفاده از عبارت INSERT، جداول MoscowDepartment و ManagerTeam (در مثال های بالا) خالی بودند. اگر جدول قبلاً وجود داشت و دارای ردیف هایی با داده بود، ردیف های جدیدی به آن اضافه می شد.

بارگذاری...