Тази статия съдържа основния SQL INSERT
изрази, които начинаещите могат да използват за вмъкване на данни в своите таблици на база данни.
Основен синтаксис
Основният синтаксис за вмъкване на данни в SQL е така:
INSERT INTO TableName (Column1, Column2, Column3, ...)
VALUES (Value1, Value2, Value3, ...);
Къде:
TableName
е името на таблицата, в която искате да вмъкнете данниColumn1
, etc са имената на колоните, в които искате да вмъкнете данниValue1
, etc са стойностите, които вмъквате в тези колони. Редът на тези стойности трябва да съвпада с реда, в който сте посочили колоните (т.е.Value1
влиза вColumn1
и др.).
Можете да пропуснете имената на колоните, ако вмъквате стойности във всички колони. В този случай можете да използвате следния синтаксис:
INSERT INTO TableName
VALUES (Value1, Value2, Value3, ...);
Обърнете внимание, че някои СУБД използват по-сложен синтаксис от този (т.е. предлагат повече опции), но това обикновено е основният синтаксис, необходим за вмъкване на данни в таблица.
Вмъкване във всички колони
Ето един основен пример, който вмъква данни във всички колони в таблицата:
INSERT INTO PetTypes
VALUES( 1, 'Bird' );
В този случай има две колони в PetTypes
таблица и вмъкваме стойности в двете колони, следователно не е необходимо да указваме имената на колоните.
Горното изявление е същото като да направите това:
INSERT INTO PetTypes( PetTypeId, PetType )
VALUES( 1, 'Bird' );
Можем да проверим данните си, като изпълним SELECT
изявление.
SELECT * FROM PetTypes;
Резултат:
+-------------+-----------+ | PetTypeId | PetType | |-------------+-----------| | 1 | Bird | +-------------+-----------+
Вмъкване в някои колони
Ето един основен пример, който вмъква данни само в някои от колоните в таблицата:
INSERT INTO Users( UserId, FirstName, LastName )
VALUES( 1, 'Lansell', 'Letterman' );
Тази таблица всъщност има четири колони, но ние вмъкваме данни само в три от тези колони. Можем да видим това, когато изпълним SELECT
изявление срещу таблицата след вмъкване на данните.
SELECT * FROM Users;
Резултат:
+----------+-------------+------------+-----------------------------+ | UserId | FirstName | LastName | DateInserted | |----------+-------------+------------+-----------------------------| | 1 | Lansell | Letterman | 2020-11-21 05:18:50.0029455 | +----------+-------------+------------+-----------------------------+
Как да вмъкнете стойности в грешен ред
Методът на списъка с колони ви позволява да вмъквате данни, които не са в същия ред:
INSERT INTO Users( LastName, FirstName, UserId )
VALUES( 'Pitt', 'Bart', 2 );
В този пример пренаредих реда на колоните и съответните им стойности. За щастие, списъкът с колони предоставя на СУБД насоки за това къде трябва да се вмъкне всяка стойност.
Така че сега, ако изберем нашите данни, ще видим, че те са били вмъкнати в правилните колони.
SELECT * FROM Users;
Резултат:
+----------+-------------+------------+-----------------------------+ | UserId | FirstName | LastName | DateInserted | |----------+-------------+------------+-----------------------------| | 1 | Lansell | Letterman | 2020-11-21 05:18:50.0029455 | | 2 | Bart | Pitt | 2020-11-21 05:30:07.4456867 | +----------+-------------+------------+-----------------------------+
Вмъкване на резултата от заявка
Възможно е също да вмъкнете резултатния набор от заявка в таблица. Има няколко подхода, които можете да предприемете с това.
- Използвайте
INSERT INTO... SELECT
изявление. В този случай първо трябва да създадете таблицата, преди да вмъкнете в нея набор от резултати от заявка. - Използвайте CREATE TABLE ... AS SELECT оператор. Този метод автоматично създава нова таблица въз основа на набора от резултати от заявката, след което вмъква тези резултати в таблицата. Въпреки че този метод отговаря на стандарта SQL, той не се поддържа от всички СУБД.
- Използвайте
SELECT INTO
изявление. Това е подобно на предишния вариант. Той автоматично създава нова таблица въз основа на набора от резултати от заявката, след което вмъква тези резултати в таблицата. Ако предишният метод (CREATE TABLE ... AS SELECT
) не се поддържа от вашата СУБД, опитайте този метод.