Управл_данными / 13-update
.pdfУправление данными
SQL
Добавление, обновление и удаление данных
Зудилин А.Э. 2013
Добавление данных. Оператор INSERT
SELECT является наиболее часто используемым оператором языка SQL. Но помимо него в SQL часто применяются еще три оператора, которыми вам необходимо уметь пользоваться.
Первый из них — оператор INSERT.
Как следует из названия, оператор INSERT используется для вставки (добавления) строк в таблицу базы данных.
Добавление можно осуществить несколькими способами:
1)добавить одну полную строку;
2)добавить часть одной строки;
3)добавить результаты запроса.
2
Добавление полных строк Вариант 1
Нужно указать имя таблицы и значения, которые должны быть введены в новую строку.
Столбцы должны заполняться в том порядке, в котором они появились в определении таблицы.
Если для какого-то столбца не имеется соответствующего значения, следует использовать значение NULL.
INSERT INTO Имя_Таблицы
VALUES( Список_значений )
INSERT INTO Студент VALUES (8, 1, 'Михайлов', 'Михаил', 'Михайлович')
3
Недостатки варианта 1
Этот синтаксис довольно прост, но он не вполне безопасен, поэтому его применения следует всячески избегать.
Результаты применения вышеприведенного оператора SQL весьма
чувствительны к порядку, в котором столбцы определены в таблице.
Даже если в данный момент порядок соблюдается, нет гарантий, что столбцы будут расположены в том же самом порядке, когда таблица будет реконструироваться в следующий раз.
4
Добавление полных строк Вариант 2
Безопасный (и, к сожалению, более громоздкий) способ записи оператора INSERT таков:
INSERT INTO Имя_Таблицы
( Список_полей ) VALUES
( Список_значений )
INSERT INTO Студент
( id, Группа, Фамилия, Имя, Отчество )
VALUES
(8, 1, 'Михайлов', 'Михаил', 'Михайлович')
Преимущество этого способа таково:
даже если расположение столбцов в таблице изменяется, оператор INSERT все равно будет работать корректно.
5
Добавление части строки
Второй способ использования оператора INSERT состоит в явном указании имен столбцов таблицы.
Используя такой синтаксис, вы также получаете возможность пропустить некоторые столбцы.
Это означает, что вы вводите значения для одних столбцов и не предлагаете для других.
Если вы пропускаете столбец таблицы, которая не
допускает появления в своих строках значений
NULL (и не имеет значения, определенного для использования по умолчанию), СУБД выдаст сообщение
об ошибке, и эта строка не будет добавлена.
6
Добавление выбранных данных
Существует и другая форма оператора INSERT, она может быть использована для добавления в таблицу результата применения оператора SELECT.
Известна эта форма как оператор
INSERT SELECT .
Данный оператор выполняет то же самое, что делают операторы INSERT и SELECT.
7
Пример
Предположим, вы хотите ввести в таблицу Client список клиентов из другой таблицы.
Вместо того чтобы считывать по одной строке и затем добавлять ее посредством оператора INSERT, вы можете сделать следующее:
INSERT INTO Client(cli_id, cli_contact, cli_email, cli_name, cli_address)
SELECT cli_id, cli_contact, cli_email, cli_name, cli_address
FROM Client2;
Оператор SELECT, используемый в INSERT SELECT, может включать предложение WHERE для фильтрации данных, которые должны быть добавлены.
8
Копирование данных из одной таблицы в другую
Оператор SELECT INTO - это другая форма добавления данных, при использовании которой оператор INSERT вообще не применяется.
Чтобы скопировать содержимое какой-то таблицы в другую, можно использовать оператор SELECT INTO.
В отличие от оператора INSERT SELECT, посредством которого данные добавляются в уже существующую таблицу, SELECT INTO копирует данные в новую таблицу.
Одно из отличий между операторами SELECT INTO и INSERT SELECT состоит в том, что первый оператор экспортирует данные, а второй — импортирует.
9
Оператор SELECT INTO
SELECT *
INTO CustCopy
FROM Client
Этот оператор SELECT создает новую таблицу с именем CustCopy и копирует в нее все содержимое таблицы Client.
Поскольку был использован оператор SELECT *, каждый столбец таблицы Client будет создан в таблице CustCopy (и соответственно заполнен).
Чтобы скопировать только часть доступных столбцов, следует явно указать имена столбцов, а не использовать метасимвол * (звездочка).
10