Основы T-SQL. DML Добавление данных. Команда Insert


Для добавления данных применяется команда INSERT, которая имеет следующий формальный синтаксис:

1INSERT [ INTO ] имя_таблицы [(список_столбцов)] VALUES (значение1, значение2, ... значениеN)

Вначале идет выражение INSERT INTO, затем в скобках можно указать список столбцов через запятую, в которые надо добавлять данные, и в конце после слова VALUES скобках перечисляют добавляемые для столбцов значения.

Например, пусть ранее была создана следующая база данных:

1
2
3
4
5
6
7
8
9
10
11
CREATE DATABASE productsdb;
GO
USE productsdb;
CREATE TABLE Products
(
Id INT IDENTITY PRIMARY KEY ,
ProductName NVARCHAR(30) NOT NULL ,
Manufacturer NVARCHAR(20) NOT NULL ,
ProductCount INT DEFAULT 0,
Price MONEY NOT NULL
)

Добавим в нее одну строку с помощью команды INSERT:

1INSERT Products VALUES ( 'iPhone 7' , 'Apple' , 5, 52000)

После удачного выполнения в SQL Server Management Studio в поле сообщений должно появиться сообщение "1 row(s) affected" 

   
  

Стоит учитывать, что значения для столбцов в скобках после ключевого слова VALUES передаются по порядку их объявления. Например, в выражении CREATE TABLE выше можно увидеть, что первым столбцом идет Id. Но так как для него задан атрибут IDENTITY, то значение этого столбца автоматически генерируется, и его можно не указывать. Второй столбец представляет ProductName, поэтому первое значение - строка "iPhone 7" будет передано именно этому столбцу. Второе значение - строка "Apple" будет передана третьему столбцу Manufacturer и так далее. То есть значения передаются столбцам следующим образом:

  • ProductName: 'iPhone 7'

  • Manufacturer: 'Apple'

  • ProductCount: 5

  • Price: 52000

Также при вводе значений можно указать непосредственные столбцы, в которые будут добавляться значения:

1
2
INSERT INTO Products (ProductName, Price, Manufacturer)
VALUES ( 'iPhone 6S' , 41000, 'Apple' )

Здесь значение указывается только для трех столбцов. Причем теперь значения передаются в порядке следования столбцов:

  • ProductName: 'iPhone 6S'

  • Manufacturer: 'Apple'

  • Price: 41000

Для неуказанных столбцов (в данном случае ProductCount) будет добавляться значение по умолчанию, если задан атрибут DEFAULT, или значение NULL. При этом неуказанные столбцы должны допускать значение NULL или иметь атрибут DEFAULT.

Также мы можем добавить сразу несколько строк:

1
2
3
4
5
INSERT INTO Products
VALUES
( 'iPhone 6' , 'Apple' , 3, 36000),
( 'Galaxy S8' , 'Samsung' , 2, 46000),
( 'Galaxy S8 Plus' , 'Samsung' , 1, 56000)

В данном случае в таблицу будут добавлены три строки.

Также при добавлении мы можем указать, чтобы для столбца использовалось значение по умолчанию с помощью ключевого слова DEFAULT или значение NULL:

1
2
INSERT INTO Products (ProductName, Manufacturer, ProductCount, Price)
VALUES ( 'Mi6' , 'Xiaomi' , DEFAULT , 28000)

В данном случае для столбца ProductCount будет использовано значение по умолчанию (если оно установлено, если его нет - то NULL).

Если все столбцы имеют атрибут DEFAULT, определяющий значение по умолчанию, или допускают значение NULL, то можно для всех столбцов вставить значения по умолчанию:

1
2
INSERT INTO Products
DEFAULT VALUES

Но если брать таблицу Products, то подобная команда завершится с ошибкой, так как несколько полей не имеют атрибута DEFAULT и при этом не допускают значение NULL.

Похожие новости

Комментариев 0

Информация
Посетители, находящиеся в группе Гости, не могут оставлять комментарии к данной публикации.