Вмъкване в избран синтаксис на оракул. Основи на T-SQL. DML. Вмъкване на няколко реда

В допълнение към оператора SELECT, обсъден по-рано, езикът за манипулиране на данни (DML) съдържа три други оператора: INSERT, UPDATE и DELETE. Подобно на оператора SELECT, тези три оператора работят върху таблици или изгледи. Тази статия обсъжда оператора INSERT, а другите два оператора се обсъждат в следващата статия.

оператор INSERTвмъква редове (или части от редове) в таблица. Има две различни форми на тази инструкция:

ВМЪКНЕТЕ име на_таб_[(кола_списък)] СТОЙНОСТИ ПО ПОДРАЗБИРАНЕ | СТОЙНОСТИ (( ПО ПОДРАЗБИРАНЕ | NULL | израз ) [ ,...n]) INSERT INTO tab_name | име_на_изглед [(кола_списък)] (избор_инструкция | изпълни_инструкция) Синтаксични конвенции

Първата форма на инструкцията ви позволява да вмъкнете един ред (или част от него) в таблицата. А втората форма на израза INSERT ви позволява да вмъкнете в таблица резултатния набор от оператор SELECT или съхранена процедура, изпълнена от оператор EXECUTE. Съхранената процедура трябва да върне данни, които да бъдат вмъкнати в таблицата. Когато се използва с оператор INSERT, операторът SELECT може да избира стойности от различна или същата таблица, в която се вмъкват данните, стига типовете данни на съответните колони да са съвместими.

И за двата формуляра типът данни на всяка вмъкната стойност трябва да е съвместим с типа данни на съответната колона на таблицата. Всички низови и временни данни трябва да бъдат оградени в кавички; Числовите стойности не е необходимо да бъдат поставени в кавички.

Вмъкване на един ред

И за двете форми на израза INSERT изричното указване на списъка с колони не е задължително. Непосочването на колони е същото като посочването на всички колони в таблицата.

Параметър СТОЙНОСТИ ПО ПОДРАЗБИРАНЕвмъква стойности по подразбиране за всички колони. Колоните с тип данни TIMESTAMP или свойството IDENTITY се вмъкват по подразбиране със стойности, които се генерират автоматично от системата. За колони с други типове данни се вмъква съответната ненулева стойност по подразбиране, ако е налична, или NULL в противен случай. Ако дадена колона не позволява нулеви стойности и няма дефинирана стойност по подразбиране, операторът INSERT е неуспешен и се показва съобщение.

Примерът по-долу вмъква редове в таблицата Employee в базата данни SampleDb, демонстрирайки използването на оператор INSERT за вмъкване на малко количество данни в базата данни:

ИЗПОЛЗВАЙТЕ SampleDb; INSERT INTO Employee VALUES (34990, "Андрей", "Батонов", "d1"); INSERT INTO Employee VALUES (38640, "Алексей", "Васин", "d3");

Има два различни начинивмъкване на стойности в нов ред. Операторът INSERT в примера по-долу изрично използва ключовата дума NULL и вмъква NULL стойност в съответната колона:

ИЗПОЛЗВАЙТЕ SampleDb; INSERT INTO Employee VALUES (34991, "Андрей", "Батонов", NULL);

За да вмъкнете стойности в някои (но не всички) колони на таблица, обикновено трябва изрично да посочите тези колони. Неопределените колони трябва или да позволяват NULL стойности или да имат дефинирана стойност по подразбиране.

ИЗПОЛЗВАЙТЕ SampleDb; INSERT INTO Employee(Id, FirstName, LastName) VALUES (34992, "Андрей", "Батонов");

Предишните два примера са еквивалентни. В таблицата Employee единствената колона, която позволява NULL стойности, е колоната DepartmentNumber, а всички други колони са деактивирани от клаузата NOT NULL в оператора CREATE TABLE.

Ред на стойностите в оферта VALUESОператорите INSERT може да се различават от реда, указан в оператора CREATE TABLE. В този случай техният ред трябва да съвпада с реда, в който съответните колони са изброени в списъка с колони. По-долу е даден пример за вмъкване на данни в ред, различен от оригинала:

ИЗПОЛЗВАЙТЕ SampleDb; INSERT INTO Employee(DepartamentNumber, LastName, Id, FirstName) VALUES ("d1", "Батонов", 34993, "Андрей");

Вмъкване на няколко реда

Втората форма на оператора INSERT вмъква един или повече редове, избрани от подзаявка в таблицата. Примерът по-долу показва как да вмъкнете редове в таблица, като използвате втората форма на израза INSERT. В този случай се изпълнява заявка за избор на номерата и имената на отделите, разположени в Москва, и полученият набор от резултати се зарежда в нова таблица, създадена по-рано.

Новата таблица MoscowDepartment, създадена в примера по-горе, има същите колони като съществуващата таблица Department, с изключение на липсващата колона Location. Подзаявката в израза INSERT избира всички редове в таблицата Department, за които стойността на колоната Location е „Москва“, които след това се вмъкват в новата таблица, създадена в началото на заявката.

Примерът по-долу показва друг начин за вмъкване на редове в таблица с помощта на втората форма на израза 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Има оператори като: СЪЗДАВАЙТЕ- създава таблица, АЛТЕР- променя структурата на таблицата, ИЗПУСКАЙТЕ- изтрива таблица или поле, ВМЪКНЕТЕ- добавя данни към таблицата. Нека започнем да се запознаваме с тази група оператори от оператора ВМЪКНЕТЕ.

1. Добавяне на цели редове

Както подсказва името, операторът ВМЪКНЕТЕизползва се за вмъкване (добавяне) на редове към таблица на база данни. Добавянето може да стане по няколко начина:

  • - добавете един пълен ред
  • - добавяне на част от линия
  • - добавяне на резултати от заявка.

И така, за да добавим нов ред към таблица, трябва да посочим името на таблицата, да изброим имената на колоните и да посочим стойността за всяка колона с помощта на конструкцията INSERT INTO име_на_таблица (поле1, поле2 ...) СТОЙНОСТИ (стойност1, стойност2...). Нека разгледаме един пример.

ВМЪКНЕТЕ В СТОЙНОСТИ на продавачи (ИД, адрес, град, име на продавача, държава).("6", "1-ва улица", "Лос Анджелис", "Хари Монро", "САЩ")

Можете също да промените реда на имената на колоните, но в същото време трябва да промените реда на стойностите в параметъра СТОЙНОСТИ.

2. Добавяне на част от линиите

В предишния пример, когато използвате оператора ВМЪКНЕТЕизрично сме маркирали имената на колоните в таблицата. Използвайки този синтаксис, можем да пропуснем някои колони. Това означава, че въвеждате стойности за някои колони, но не ги предоставяте за други. Например:

ВМЪКНЕТЕ В СТОЙНОСТИ на продавачи (ID, град, име на продавача).("6", "Лос Анджелис", "Хари Монро")

В този пример не сме посочили стойност за две колони АдресИ Държава. Можете да изключите някои колони от извлечението INSERT INTO, ако това позволява дефиницията на таблицата. В този случай трябва да бъде изпълнено едно от условията: тази колона се определя като валидна НУЛА(липса на каквато и да е стойност) или зададената стойност по подразбиране в дефиницията на таблицата. Това означава, че ако не е зададена стойност, ще се използва стойността по подразбиране. Ако ви липсва колона от таблица, която не позволява стойности да се показват в нейните редове НУЛАи няма дефинирана стойност по подразбиране, СУБД ще генерира съобщение за грешка и редът няма да бъде добавен.

3. Добавяне на избрани данни

В предишния пример вмъкнахме данни в таблици, като ги въведохме ръчно в заявката. Операторът обаче INSERT INTOни позволява да автоматизираме този процес, ако искаме да вмъкнем данни от друга таблица. За тази цел в SQL има такава конструкция като ВМЪКНЕТЕ В ... ИЗБЕРЕТЕ .... Този дизайн ви позволява едновременно да избирате данни от една таблица и да ги вмъквате в друга. Да приемем, че имаме друга маса Продавачи_ЕСсъс списък на продавачите на нашите стоки в Европа и трябва да ги добавим към общата таблица Продавачи. Структурата на тези таблици е еднаква (еднакъв брой колони и еднакви имена), но данните са различни. За да направим това, можем да напишем следната заявка:

INSERT INTO Продавачи (ИД, адрес, град, име на продавача, държава) ИЗБЕРЕТЕИдентификационен номер, адрес, град, име на продавача, държава FROM Sellers_EU

Трябва да обърнете внимание, така че стойностите на вътрешните ключове да не се повтарят (поле документ за самоличност), в противен случай ще възникне грешка. Оператор ИЗБЕРЕТЕможе да включва и предложения КЪДЕТОза филтриране на данни. Трябва също да се отбележи, че СУБД не обръща внимание на имената на колоните, съдържащи се в израза ИЗБЕРЕТЕ, за нея е важен само редът, в който са подредени. Следователно данните в първата посочена колона, която е избрана поради ИЗБЕРЕТЕ, при всички случаи ще се попълни първата колона на таблицата Продавачи, посочени след оператора INSERT INTO, независимо от името на полето.

4. Копиране на данни от една таблица в друга

Често при работа с бази данни има нужда от създаване на копия на всякакви таблици с цел архивиране или модификация. Да направя пълно копиетаблици в SQL има отделен оператор ИЗБЕРЕТЕ В. Например, трябва да създадем копие на таблицата Продавачи, ще трябва да напишете заявката, както следва:

ИЗБЕРЕТЕ * INTO Sellers_new FROM Sellers

За разлика от предишния дизайн ВМЪКНЕТЕ В ... ИЗБЕРЕТЕ ...Когато се добавят данни към съществуваща таблица, дизайнът копира данните в новата таблица. Можете също така да кажете, че първата конструкция импортира данни, а втората експортира. При използване на дизайна ИЗБЕРЕТЕ ... В ... ОТ ...Трябва да се има предвид следното:

  • - можете да използвате всякакви изречения в оператора ИЗБЕРЕТЕ, като ГРУПИРАЙ ПОИ ИМАЩ
  • - можете да използвате съединение, за да добавите данни от множество таблици
  • - данните могат да се добавят само към една таблица, независимо от колко таблици са взети.

Екип добавя редове към таблицатаили изглед на основната таблица.

Синтаксис на командата Sql INSERT

Вмъкване на синтаксис на командата


Основни ключови думи и параметри на командата INSERT
  • схема- идентификатор на разрешение, обикновено съвпадащ с името на някой потребител
  • табличен изглед- името на таблицата, в която трябва да се вмъкнат редовете; ако е посочен изглед, редовете се вмъкват в главната таблица на изгледа
  • подзаявка_1- подзаявка, която сървърът обработва по същия начин като изглед
  • колона- таблица или колона за изглед, в която се въвежда стойността от фразата за всеки вмъкнат ред СТОЙНОСТИили подзаявка; ако една от колоните на таблицата е пропусната от този списък, стойността на колоната за вмъкнатия ред е стойността на колоната по подразбиране, дефинирана при създаването на таблицата. Ако списък с колони е напълно пропуснат, клаузата СТОЙНОСТИили заявката трябва да определи стойности за всички колони в таблицата
  • СТОЙНОСТИ- дефинира низ от стойности, които ще бъдат вмъкнати в таблицата или изгледа; значението трябва да бъде определено в изречението СТОЙНОСТИза всяка колона в списъка с колони
  • подзаявка_2- подзаявка, която връща редове, вмъкнати в таблицата; списъкът за избор на тази подзаявка трябва да има същия брой колони като списъка с колони за оператори

Изявление с фразата СТОЙНОСТИдобавя един ред към таблицата. Този ред съдържа стойностите, дефинирани от фразата СТОЙНОСТИ.
Изявление с подзаявкавместо фраза СТОЙНОСТИдобавя всички редове, върнати от подзаявката към таблицата. Сървърът обработва подзаявкаи вмъква всеки върнат ред в таблицата. Ако подзаявката не избира никакви редове, сървърът не вмъква никакви редове в таблицата.
Подзаявкаможе да има достъп до всяка таблица или изглед, включително целевата таблица за твърдения . Сървърът присвоява стойности на полета в нови редове въз основа на вътрешната позиция на колоните в таблицата и реда на стойностите на фразата СТОЙНОСТИили в списъка за избор на заявка. Ако в списъка с колони липсват колони, сървърът им присвоява стойностите по подразбиране, дефинирани при създаването на таблицата. Ако някоя от тези колони има ограничение NOT NULL, тогава сървърът връща грешка, показваща, че ограничението е нарушено и прекъсва оператора INSERT.
Когато се издаде оператор INSERT, всеки тригер INSERT, дефиниран в таблицата, е разрешен.

INSERT INTO Пример 1

INSERT INTOдълбочина СТОЙНОСТИ(50, "ПРОДУКТИ", "САН ФРАНЦИСКО");

INSERT INTOКлиенти (град, cname, cnum) СТОЙНОСТИ("Лондон", "Хофман", 2001);

ВМЪКНЕТЕ В Пример 2
Следната команда копира данните на служителите на компанията, чиито комисионни надвишават 25% от дохода в таблицата с бонуси:

INSERT INTOбонус SELECT ename, job, sal, comm FROM emp WHERE comm > 0,25 * sal;

ВМЪКНЕТЕ В Пример 3
Ако трябва да вмъкнете НУЛА-стойност, трябва да я посочите като нормална стойност, както следва:

INSERT INTOСТОЙНОСТИ на търговци (1001,'Peel',NULL,12);

ВМЪКНЕТЕ В Пример 4
Командата може да се използва за извличане на стойности от една таблица и поставянето им в друга с помощта на заявка. За да направите това, достатъчно е да замените изречението СТОЙНОСТИкъм съответната заявка:

INSERT INTO Londonstaff ИЗБЕРЕТЕ * ОТ Продавачи WHERE град = 'Лондон';

MySQL INSERT

За да вмъкнете нови редове в MySQL база данни, използвайте INSERT команда, примери за команди са дадени по-долу:
INSERT INTO Пример 1.
Поставете нова линиякъм таблицата table_name.

INSERT INTO

ВМЪКНЕТЕ В Пример 2.
Вмъкване на нов ред в таблицата table_name, указващ вмъкването на данни в колоните, от които се нуждаем.

INSERT INTO table_name VALUES('1','165','0','име');

В базата данни MySQLВъзможно е да вмъкнете няколко нови реда с помощта на една команда.
ВМЪКНЕТЕ В Пример 3.
Вмъкване на множество редове в таблицата table_name.

INSERT INTO table_name (tbl_id, chislo, chislotwo, name) СТОЙНОСТИ ('1','159','34','name1'), ('2','14','61','name2'), ('3 ′,'356','8','име3');

sql заявката INSERT INTO има смисъл, когато е създадена таблица на база данни. Тоест таблицата съществува, има име, създадени редове и колони. таблицата се създава от оператора: , таблицата се модифицира от оператора .

sql заявка INSERT INTO - синтаксис на заявка

sql заявката INSERT INTO има следния синтаксис:

INSERT INTO table_name (в скоби, ако е необходимо, вмъкнете списък с колони, където искате да вмъкнете данни) VALUES вмъкнати данни1, вмъкнати данни2, вмъкнати данни3.

Можете да вмъкнете опция IGNORE между INSERT и INTRO. Не е задължително. Необходим за защита на първичните ключове при редактиране на таблица. В противен случай, ако се получи дублиране на първични ключове по време на редактиране, тогава при вмъкване на опцията IGNORE, първият ред с първичния ключ ще остане в таблицата, която се редактира.Другите първични ключове ще бъдат изтрити. По подразбиране пропускаме тази опция.

Има незадължителни опции LOW_PRIORITY и DELAYED. Те определят приоритетите за добавяне на информация към базата данни. Първият указва изчакване базата данни да бъде освободена, вторият означава буфериране на информация.

Редът в заявката: INSERT с фразата VALUES ще ви позволи да добавите един ред към таблицата на базата данни. Клаузата VALUES съдържа стойностите на тези данни.

Подзаявките могат да бъдат зададени вместо фразата VALUES. INSERT с подзаявка добавя към таблицата редовете, върнати от подзаявката. Сървърът на базата данни обработва подзаявката и вмъква всички върнати редове в таблицата. Сървърът не вмъква редове, освен ако подзаявката не ги избере.

  • subquery_1 - подзаявка, която сървърът обработва по същия начин като изгледа
  • subquery_2 е подзаявка, която връща редове, вмъкнати в таблицата. Списъкът на тази подзаявка трябва да има същия брой колони като списъка с колони INSERT.

Подзаявките практически не се използват в MySQL база данни.

Примери за sql заявка INSERT INTO в MySQL база данни

Вмъкваме нови редове в базата данни MySQL с помощта на командата INSERT INTRO.

Първи пример.

Вмъкнете нови редове в таблицата table_name.

INSERT INTO table_name VALUES ('2','145','1','name');

Това означава, че искаме да вмъкнем стойностите 2,145,1,name в колоните на таблицата table_name. Тъй като колоните не са посочени, стойностите се попълват във всички колони на таблицата.

Пример втори.

Вмъкнете информация в необходимите (посочени) колони на таблицата table_name.

INSERT INTO table_name (client_customer, client_subclient, client_mail) VALUES ('name1','subname1',' [имейл защитен]′), ('име2','подиме2',' [имейл защитен]′), ('име3','подиме3',(' [имейл защитен]′);

Игор Серов специално за сайта "".

Операторът INSERT вмъква нови записи в таблица. В този случай стойностите на колоните могат да бъдат литерални константи или да бъдат резултат от изпълнение на подзаявка. В първия случай се използва отделен оператор INSERT за вмъкване на всеки ред; във втория случай ще бъдат вмъкнати толкова редове, колкото са върнати от подзаявката.

Синтаксисът на оператора е както следва:

    ВМЪКНЕТЕ В [ (,...) ]

    (СТОЙНОСТИ(,…))

  1. | (СТОЙНОСТИ ПО ПОДРАЗБИРАНЕ)

Както можете да видите от представения синтаксис, списъкът с колони не е задължителен (това се казва квадратни скобив описанието на синтаксиса). Ако липсва, списъкът с вмъкнати стойности трябва да е пълен, тоест да предостави стойности за всички колони на таблицата. В този случай редът на стойностите трябва да съответства на реда, определен от оператора CREATE TABLE за таблицата, в която се вмъкват редовете. Освен това тези стойности трябва да са от същия тип данни като колоните, в които са въведени. Като пример, помислете за вмъкване на ред в таблицата с продукти, създадена от следния оператор CREATE TABLE:

    CREATE TABLE продукт

    maker char (1) NOT NULL,

    модел varchar(4) NOT NULL,

    тип varchar(7) NOT NULL

Да предположим, че искате да добавите към тази таблица PC модел 1157 от производител B. Това може да стане със следния оператор:

    ВМЕСТЕ В ПРОДУКТА

    СТОЙНОСТИ ("B", 1157, "PC");

Ако зададете списък с колони, можете да промените техния „естествен“ ред:

    INSERT INTO Продукт (тип, модел, производител)

    СТОЙНОСТИ ("PC", 1157, "B");

Изглежда, че това е напълно ненужна функция, която само прави дизайна по-тромав. Печели обаче, ако колоните имат стойности по подразбиране. Разгледайте следната структура на таблицата:

    СЪЗДАВАНЕ НА ТАБЛИЦА product_D

    maker char (1) NULL,

    модел varchar(4) NULL,

    тип varchar (7 ) NOT NULL DEFAULT "PC"

Имайте предвид, че тук стойностите на всички колони имат стойности по подразбиране (първите две са NULL, а последната колона е тип - PC). Сега можем да напишем:

    INSERT INTO Product_D (модел, производител)

    VALUES(1157, "B");

В този случай липсващата стойност при вмъкване на ред ще бъде заменена със стойността по подразбиране - PC. Обърнете внимание, че ако на дадена колона не е дадена стойност по подразбиране в оператор CREATE TABLE и е посочено ограничение NOT NULL, за да се забрани използването на NULL в тази колона на таблицата, тогава се приема стойността по подразбиране NULL.

Възниква въпросът: възможно ли е да не посочите списък с колони и въпреки това да използвате стойностите по подразбиране? Отговорът е да. За да направите това, вместо изрично да посочите стойността, използвайте запазената дума DEFAULT:

    INSERT INTO Product_D

    СТОЙНОСТИ ("B", 1158, ПО ПОДРАЗБИРАНЕ);

Тъй като всички колони имат стойности по подразбиране, за да вмъкнете ред със стойности по подразбиране, можете да напишете:

    INSERT INTO Product_D

    СТОЙНОСТИ (ПО ПОДРАЗБИРАНЕ, ПО ПОДРАЗБИРАНЕ, ПО ПОДРАЗБИРАНЕ);

За този случай обаче има специална конструкция DEFAULT VALUES (вижте синтаксиса на оператора), с която горният оператор може да бъде пренаписан във формата

    INSERT INTO Product_D ПО ПОДРАЗБИРАНЕ СТОЙНОСТИ;

Имайте предвид, че когато вмъквате ред в таблица, всички ограничения, наложени на тази таблица, се проверяват. Това могат да бъдат ограничения за първичен ключ или уникален индекс, ограничения за ПРОВЕРКА или ограничения за референтна цялост. Ако някое ограничение е нарушено, вмъкването на ред ще бъде отхвърлено. Нека сега разгледаме случая на използване на подзаявка. Да предположим, че трябва да вмъкнем в таблицата Product_D всички редове от таблицата Product, свързани с моделите на персонални компютри (type = 'PC'). Тъй като стойностите, от които се нуждаем, вече са в някаква таблица, ръчното генериране на вмъкнати редове е, първо, неефективно и, второ, може да позволи грешки при въвеждане. Използването на подзаявка решава тези проблеми:

Използването на символа „*“ в подзаявката е оправдано в този случай, тъй като редът на колоните е еднакъв и за двете таблици. Ако случаят не беше такъв, ще трябва да се приложи списък с колони в оператора INSERT, подзаявката или и двете, което ще съответства на реда на колоните:

Тук, както и преди, можете да посочите не всички колони, ако искате да използвате съществуващите стойности по подразбиране, например:

В този случай колоната тип на таблицата Product_D ще бъде заменена със стойността по подразбиране PC за всички вмъкнати редове.

Обърнете внимание, че когато използвате подзаявка, съдържаща предикат, ще бъдат вмъкнати само онези редове, за които стойността на предиката е TRUE (не UNKNOWN!). С други думи, ако колоната тип в таблицата Product беше NULLable и тази стойност присъстваше в определен брой редове, тогава тези редове нямаше да бъдат вмъкнати в таблицата Product_D.

Изкуствената техника на използване на подзаявка, която формира ред с клаузата UNION ALL, ви позволява да преодолеете ограничението за вмъкване на един ред в оператора INSERT, когато използвате конструктора на ред в клаузата VALUES. Така че, ако трябва да вмъкнем няколко реда с помощта на един оператор INSERT, можем да напишем:

    INSERT INTO Product_D

    SELECT "B" AS maker, 1158 AS модел, "PC" AS тип

    СЪЮЗ ВСИЧКИ

    ИЗБЕРЕТЕ "C", 2190, "Лаптоп"

    СЪЮЗ ВСИЧКИ

    ИЗБЕРЕТЕ "D", 3219, "Принтер";

Използването на UNION ALL е за предпочитане пред UNION, дори ако е гарантирано отсъствието на дублиращи се редове, тъй като в този случай няма да се извърши проверка за елиминиране на дубликатите.

Трябва да се отбележи, че вмъкването на множество кортежи с помощта на конструктора на редове вече е реализирано в Система за управление на релационни бази данни (DBMS), разработена от Microsoft Corporation.Structured Query Language) е универсален компютърен език, използван за създаване, модифициране и манипулиране на данни в релационни бази данни. SQL сървър 2008. Като се има предвид тази възможност, последната заявка може да бъде пренаписана като:

    INSERT INTO Product_D VALUES

    ("B", 1158, "PC"),

    ("C", 2190, "Лаптоп"),


Връх