Команда вставки - insert

Команда языка DML - INSERT используется для ввода новых строк в таблицу.

Синтаксис команды:

INSERT INTO {<имя таблицы>[(<имя столбца> [псевдоним] [, …n]] |[<подзапрос>]}

VALUES (<значение>[,…n]);

При реализации команды INSERT необходимо отслеживать, чтобы

· Последовательность данных в предложение VALUES, соответствовала порядку столбцов в таблице.

· Заполнялись все столбцы с признаком NOT NULL.

Пример 12

Задача.

Ввести в таблицу SGroup значения названия групп ИСТ-03 и АИС-03.

Решение.

INSERT INTO SGroup (NameGroup)

VALUES('ИСT-03');

INSERT INTO SGroup (NameGroup)

VALUES('АИС-03');

При успешном выполнении каждой команды вы получите сообщение: 1 row(s) affected

Примечание.

Обратим внимание на то, что поле IDGroup заполняется автоматически, поскольку имеет свойство IDENTITY. Попытка выполнить, например, такую команду

INSERT INTO SGroup (IDGroup, NameGroup)

VALUES(3,'ИСT-02');

Приведет к сообщению об ошибке.

Server: Msg 544, Level 16, State 1, Line 1

Cannot insert explicit value for identity column in table 'SGroup' when IDENTITY_INSERT is set to OFF.

Однако если вы все-таки хотите ввести код группы вручную, вам необходимо отключить действие IDENTITY с помощью команды SET IDENTITY_INSERT.

Синтаксис команды:

SET IDENTITY_INSERT <имя таблицы> { ON | OFF }

Опция ON отключает процесс автоматического присвоения identity-значений, OFF - включает.

Пример 13

Задача.

Ввести в таблицу SGroup значения названия групп ИСТ-02, присвоив столбцу IDGroup значение 3.

Решение.

SET IDENTITY_INSERT SGroup ON [3]

INSERT INTO SGroup (IDGroup, NameGroup)

VALUES(3,'ИСT-02');

Несмотря на то, что в команде INSERT список столбцов является необязательным, его рекомендуется указывать явно. Последнее позволяет избежать недиагностируемых ошибок при заполнении столбцов. Если вы все-таки хотите отказаться от перечисления столбцов, то вам придется отслеживать, чтобы порядок столбцов в таблице соответствовал порядку столбцов в команде INSERT.

Пример 14

Задача.

Ввести данные о студенте Иванове в таблицу Student (см. Приложение 2. Пример заполнения таблиц).

Решение.

INSERT INTO Student

VALUES('050001','1111111111','Иванов И.И.',3,'8701','192355','01.06.2002', 'УВД г.Ухты');

Примечание.

Выполнение операции ввода так, как это описано в предыдущем примере (см. Пример 14), может привести к некорректному заполнению базы данных или сообщению об ошибке.

Например, попытка ввода этой же строки с помощью приведенной ниже команды

INSERT INTO Student

VALUES('050001','Иванов И.И.',3,'8701','192355','01.06.2002','ГОВД г.Ухты','1111111111')

даст сообщение об ошибке:

Syntax error converting datetime from character string

Ошибка вызвана несоответствием типов данных, причиной же ее послужило нарушение порядка столбцов в списке VALUES. (Надо отметить, что появление сообщения об ошибке является наилучшим исходом. Дела обстояли бы хуже, если бы не возникло конфликта, вызванного несоответствием типа данных или размера данных. В этом случае результатом стала бы некорректно заполненная таблица.) Избежать ошибки можно, перечислив все столбцы после имени таблицы в том же порядке, в котором они следуют в предложении VALUES.

INSERT INTO Student (NRecordBook,SName,IDGroup,SPasport,NPasport,DataPasport, NameDeptPasport,INN)

VALUES('050002', 'Петров П.П',3,'8702','191256','11.20.2002', 'УВД г.Сосногорск', '1111111112')

Этот вариант более надежный, кроме того, он позволяет вводить не все данные. Например, если столбец имеет признак NULL, то его значения могут не вводиться - в следующем примере не вводится значение атрибута INN, имеющего признак NULL.

INSERT INTO Student (NRecordBook,SName,IDGroup,SPasport,NPasport,DataPasport, NameDeptPasport)

VALUES('050003','Сидоров С.С.', 2,'8703','192457','11.26.2002', 'УВД г.Ухты')

Данные в таблицу можно внести и из других таблиц, используя запрос SELECT. Реакцией системы, как и в предыдущем случае, при успешном выполнении команды будет фраза N row affected (создано N строк), где в качестве N указывается количество созданных строк.

Задание 3

Создать таблицу Student1, аналогичную таблице Student и заполнить ее данными из таблицы (см. Приложение 2. Пример заполнения таблиц).

Пример 15

Задача.

Ввести в таблицу Student записи из таблицы Student1.

Решение.

INSERT INTO Student

SELECT *

FROM Student1;

Задание 4

Заполнить таблицу Subject в соответствии с таблицей (см.)


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: