Одна из основных функций, необходимых любой базе данных, — возможность добавлять, удалять и изменять данные. В языке программирования SQL для этого предназначен язык манипулирования данными (data manipulation language, DML). Команды INSERT, UPDATE И DELETE позволяют манипулировать данными на основе ввода информации или поиска ее в базе данных.
В версии Microsoft SQL Server 2005 было введено предложение OUTPUT, позволяющее возвращать информацию из каждой строки, обработанной инструкциями INSERT, UPDATE или DELETE. В версии SQL Server 2008 была введена инструкция MERGE для того, чтобы усовершенствовать выполнение инструкций INSERT, UPDATE и DELETE, обращенных к таблице, основанной на результатах запроса к соединенной таблице. Эти два средства повышают гибкость ваших инструкций DML.
Для обеспечения согласованности и надежности данных SQL Server предоставляет возможность выполнения инструкций в виде составной части транзакции. Транзакция — это группа команд, которая выполняется успешно или терпит неудачу как единое целое. Транзакция должна гарантировать, что если после завершения части транзакции система вышла из строя, вся транзакция будет возвращена к исходному состоянию.
Инструкция INSERT позволяет вставлять в таблицу новые строки. В зависимости от схемы таблицы вам может понадобиться предоставить данные для всех или части столбцов таблицы. На требования к данным в ваших инструкциях INSERT могут оказывать влияние ограничения default, свойства identity и значения NULL.
Пример 1.1. |
При добавлении данных во все столбцы таблицы SalesReason (Причина покупки клиентом товара) вам не нужно задавать в инструкции INSERT имена столбцов
Данные столбца SalesReasoniD не вводятся, т. к. это идентифицирующий столбец, и он заполняется автоматически с помощью механизма управления SQL Server
Пример 1.2. |
У столбца ModifiedDate (Дата последнего обновления строки) таблицы SalesReason есть связанное с ним ограничение DEFAULT, которое задается в виде функции getdate(). По этой причине следующая команда приведет к тем же результатам, что и предыдущая.
Пример 1.3. |
Если в столбце допускаются значения NULL, для вставки строки с данными, пропущенными в одном или нескольких столбцах, можно использовать ключевое слово NULL.
Пример 1.4. |
Если вы хотите задать конкретные столбцы, при написании инструкции INSERT можно сослаться на их имена, как показано в следующем примере.
Применение инструкции INSERT ... SELECT позволяет добавлять в существующую таблицу строки, основанные на данных, извлеченных из другой таблицы.
Пример 1.5. |
В следующей команде берутся строки из таблицы Employees (Сотрудники) и добавляются в таблицу Customers (Клиенты). Поскольку количество и тип данных столбцов в результирующем наборе должны соответствовать целевой таблице, для получения корректного числа столбцов применяется конкатенация (сцепление). Функцией SUBSTRING извлекаются первые пять букв фамилии сотрудника для формирования ID клиента, подобного идентификатору в таблице Customers.
И наконец, инструкция SELECT INTO позволяет создать новую таблицу, заполненную результатами заданной инструкции SELECT.
Пример 1.6. |
Следующая команда создает таблицу с именем EmpioyeeDepartment (Отдел сотрудника), включающую имя и фамилию каждого сотрудника, его должность и сведения об отделе.
Co временем возникает необходимость модифицировать имеющуюся в базе данных информацию. Команда UPDATE позволяет изменять значение одного или нескольких столбцов в одной или нескольких строках таблицы. Добавление значения в столбец, равный в данный момент значению NULL, и удаление значения из столбца выполняются инструкциями UPDATE, а не инструкциями INSERT ИЛИ DELETE.
Важно помнить о том, что инструкция INSERT добавляет в таблицу новую строку целиком, а инструкция DELETE удаляет из таблицы полную строку.
В простейшей форме инструкции UPDATE требуется только имя изменяемого объекта (таблицы или представления) и устанавливаемое значение.
Пример 1.7. |
Следующая команда обновляет каждую строку в таблице CurrencyRate (Валютный курс) и добавляет 0.005 к валютному курсу.
Если вам нужно изменить только конкретные строки, следует задать предложение WHERE для ограничения количества строк.
Пример 1.8. |
Следующая команда в таблице SalesReason (Причина покупки товара клиентом) для SalesReasoniD со значением 10 задает значение столбца Name, равное 'N/A'.
С помощью предложения FROM вы также можете обновить информацию в целевой таблице, основываясь на информации из таблицы, присоединенной к ней.,
Пример 1.9. |
Cследующая команда увеличивает на 5% цену за единицу для всех товаров красного цвета
Инструкция DELETE позволяет удалять из базы данных строки, которые больше не нужны. С ее помощью строки из таблицы удаляются целиком.
Если нужно удалить только значение в столбце заданной строки, следует применять инструкцию UPDATE.
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.