مبانی T-SQL. DML. Transact-SQL - نسخه آزمایشی پایگاه داده درج داده

علاوه بر عبارت 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 (در مثال های بالا) خالی بودند. اگر جدول قبلاً وجود داشت و دارای ردیف هایی با داده بود، ردیف های جدیدی به آن اضافه می شد.

سلام به همه! این مقاله در مورد اینکه چگونه می توانید صحبت خواهد کرد داده ها را به جدول اضافه کنیددر مایکروسافت 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 >


که در در این مثالما نوشتیم پرس و جو را انتخاب کنید، که داده ها را از جدول 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 برای اضافه کردن داده ها از چندین جدول استفاده کنید
  • - داده ها را فقط می توان به یک جدول اضافه کرد، مهم نیست از چند جدول گرفته شده باشد.

آخرین به روز رسانی: 1396/07/13

برای اضافه کردن داده ها، از دستور INSERT استفاده کنید که دستور رسمی زیر را دارد:

درج نام جدول [(فهرست_ستون)] VALUES (مقدار1، مقدار2، ... مقدارN)

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

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

ایجاد پایگاه داده productsdb; GO USE productsdb; محصولات جدول ایجاد کنید (ID INT IDENTITY PRIMARY KEY، نام محصول NVARCHAR(30) NOT NULL، سازنده NVARCHAR(20) NOT NULL، ProductCount در پیش فرض 0، قیمت پول NOT NULL)

بیایید با استفاده از دستور INSERT یک خط به آن اضافه کنیم:

مقادیر محصولات را درج کنید ("iPhone 7"، "Apple"، 5، 52000)

پس از اجرای موفقیت آمیز در SQL Server Management Studio، پیام "1 ردیف(های) تحت تاثیر قرار گرفت" باید در قسمت پیام ظاهر شود:

شایان ذکر است که مقادیر ستون های موجود در پرانتز بعد از کلمه کلیدی VALUES به ترتیبی که اعلام شده اند منتقل می شوند. به عنوان مثال، در عبارت CREATE TABLE بالا، می بینید که ستون اول Id است. اما از آنجایی که ویژگی IDENTITY برای آن مشخص شده است، مقدار این ستون به طور خودکار تولید می شود و می توان آن را حذف کرد. ستون دوم نشان دهنده ProductName است، بنابراین اولین مقدار، رشته "iPhone 7" به آن ستون ارسال می شود. مقدار دوم - رشته "Apple" به ستون سوم سازنده و غیره منتقل می شود. یعنی مقادیر به صورت زیر به ستون ها منتقل می شوند:

    نام محصول: "iPhone 7"

    سازنده: "Apple"

همچنین، هنگام وارد کردن مقادیر، می‌توانید ستون‌های فوری که مقادیر به آن‌ها اضافه می‌شوند را مشخص کنید:

درج در محصولات (نام محصول، قیمت، سازنده) VALUES ("iPhone 6S"، 41000، "Apple")

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

    نام محصول: "iPhone 6S"

    سازنده: "Apple"

برای ستون‌های نامشخص (در این مورد ProductCount)، اگر ویژگی DEFAULT مشخص شده باشد، یک مقدار پیش‌فرض اضافه می‌شود، یا یک مقدار NULL. با این حال، ستون های نامشخص باید nullable یا دارای ویژگی DEFAULT باشند.

همچنین می توانیم چندین خط را به طور همزمان اضافه کنیم:

درج در محصولات VALUES ("iPhone 6"، "Apple"، 3، 36000)، ("Galaxy S8"، "Samsung"، 2، 46000)، ("Galaxy S8 Plus"، "Samsung"، 1، 56000)

در این صورت سه ردیف به جدول اضافه می شود.

همچنین، هنگام اضافه کردن، می‌توانیم تعیین کنیم که ستون باید یک مقدار پیش‌فرض با استفاده از کلمه کلیدی DEFAULT یا یک مقدار NULL داشته باشد:

درج در محصولات (نام محصول، سازنده، تعداد محصول، قیمت) VALUES ("Mi6"، "Xiaomi"، پیش فرض، 28000)

در این حالت، از مقدار پیش‌فرض ستون ProductCount استفاده می‌شود (اگر تنظیم شده باشد، اگر تنظیم نشده باشد، NULL).

اگر همه ستون‌ها دارای یک ویژگی DEFAULT هستند که یک مقدار پیش‌فرض را مشخص می‌کند، یا nullable هستند، می‌توانید مقادیر پیش‌فرض را برای همه ستون‌ها درج کنید:

مقادیر پیش‌فرض را در محصولات درج کنید

اما اگر جدول Products را بگیریم، چنین دستوری با خطا مواجه می شود، زیرا چندین فیلد ویژگی DEFAULT را ندارند و در عین حال مقدار NULL را مجاز نمی دانند.

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

دستور INSERT INTO SELECT داده ها را از یک جدول کپی می کند و آن را در جدول موجود وارد می کند.

دستور SQL INSERT INTO SELECT،

دستور INSERT INTO SELECT داده ها را از یک جدول انتخاب می کند و آن را در جدول موجود وارد می کند. هیچ یک از ردیف های موجود در جدول هدف تغییر نمی کند.

SQL INSERT INTO SELECT، Syntax

ما می توانیم تمام ستون ها را از یک جدول به جدول دیگر کپی کنیم:

درج کنید جدول 2
انتخاب * از میز 1؛

یا می‌توانیم فقط ستون‌هایی را که می‌خواهیم در جدول موجود دیگری کپی کنیم:

درج کنید جدول 2
(نام(های) ستونی)
انتخاب کنید نام(های) ستون
از جانب میز 1؛

نسخه آزمایشی پایگاه داده

در این آموزش از پایگاه داده معروف Northwind استفاده خواهیم کرد.

در زیر منتخبی از جدول "مشتریان" آمده است:

شناسه کاربرنام مشتریفرد تماسنشانیشهرکد پستییک کشور
1 آلفرد فوترکیست ماریا آندرس اوبره خ. 57 برلین 12209 آلمان
2 Ana Trujillo Emparedados y helados آنا تروخیلو آودا. de la Constitucion 2222 مکزیک D.F. 05021 مکزیک
3 آنتونیو مورنو تاکوریا آنتونیو مورنو ماتادروس 2312 مکزیک D.F. 05023 مکزیک

و انتخاب از جدول "تامین کنندگان":

SQL INSERT INTO SELECT، مثالها

کپی کردن تنها چند ستون از "تامین کنندگان" به "مشتریان":

کپی کردن فقط تامین کنندگان آلمانی به "مشتریان".