Вы находитесь на странице: 1из 6

Презентация №3.

Команды DML
Команда INSERT

Пример добавления данных в таблицу Products можно вставлять данные с


помощью инструкции INSERT. После вставки данных содержимое строки
изменяется с помощью инструкции UPDATE. Предложение WHERE предназначено
для ограничения числа строк, изменяемых в процессе выполнения инструкции
UPDATE до одной строки. Чтобы ввести следующие данные, потребуется четыре
инструкции.

ProductID ProductName Price ProductDescription

1 Clamp 12,48 Workbench clamp

50 Screwdriver 3,17 Flat head

75 Tire Bar Tool for changing tires.

3000 3mm Bracket 0,52

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

1. Выполните следующую инструкцию, чтобы добавить строку в


таблицу Products , которая была создана в предыдущей задаче. Далее
представлен базовый синтаксис.

-- Standard syntax
INSERT dbo.Products (ProductID, ProductName, Price, ProductDescription)
VALUES (1, 'Clamp', 12.48, 'Workbench clamp')
GO

1
2. В следующей инструкции показано, как можно изменить порядок, в котором
приведены параметры, изменив
расположение ProductID и ProductName одновременно как в списке полей (в
круглых скобках), так и в списке значений.

-- Changing the order of the columns


INSERT dbo.Products (ProductName, ProductID, Price, ProductDescription)
VALUES ('Screwdriver', 50, 3.17, 'Flat head')
GO

3. Следующая инструкция показывает, что имена столбцов перечислять не


обязательно, если значения перечислены в нужном порядке. Этот синтаксис
является стандартным, но не рекомендуется, поскольку другим будет трудно
понять ваш код. NULL указано в столбце Price , так как цена этого товара
пока неизвестна.

-- Skipping the column list, but keeping the values in order


INSERT dbo.Products
VALUES (75, 'Tire Bar', NULL, 'Tool for changing tires.')
GO

4. Имя схемы указывать не обязательно, пока доступ и изменение таблицы


осуществляются с помощью схемы по умолчанию. Поскольку в
столбце ProductDescription разрешены значения NULL и значение для
столбца не приведено, имя и значение столбца ProductDescription в
инструкции могут быть полностью опущены.

-- Dropping the optional dbo and dropping the ProductDescription column


INSERT Products (ProductID, ProductName, Price)
VALUES (3000, '3mm Bracket', .52)
GO

Оператор SQL UPDATE


Оператор SQL UPDATE используется для изменения значений в записях таблицы.

Обновление таблицы продуктов

1. Введите и выполните следующую инструкцию UPDATE , чтобы изменить


значение ProductName второго продукта со значения Screwdriver на
значение Flat Head Screwdriver .

UPDATE dbo.Products
SET ProductName = 'Flat Head Screwdriver'

2
WHERE ProductID = 50
GO

Оператор SQL UPDATE имеет следующий синтаксис:

UPDATE table_name SET expression [WHERE condition]

Напоминаю, что записи в квадратных скобках [] являются необязательными.

После ключевого слова SET должен идти список столбцов таблицы, которые следует изменить, и
новые значения в формате Имя_столбца = значение.

Дополнительное условие, описываемое в операторе SQL WHERE, помогает более гибко совершать
манипуляции данными.

Примеры оператора SQL UPDATE. Имеется следующая таблица Planets:

ID PlanetName Radius SunSeason OpeningYear HavingRings Opener

1 Mars 3396 687 1659 No Christiaan Huygens

2 Saturn 60268 10759.22 — Yes —

3 Neptune 24764 60190 1846 Yes John Couch Adams

4 Mercury 2439 115.88 1631 No Nicolaus Copernicus

5 Venus 6051 243 1610 No Galileo Galilei

Пример 1. С помощью оператора SQL UPDATE изменить название планеты Neptune на Pluton:

UPDATE Planets

SET PlanetName = 'Pluton'

WHERE ID = 3

В этом примере условие оператора SQL WHERE является обязательным, так как без него все поля
столбца PlanetName во всей таблице изменились бы на Pluton. В данном случае, нам приходит на
помощь столбец ID, ибо он является Первичным ключом, позволяющим однозначно
идентифицировать запись.

Выполним запрос оператором SQL SELECT, чтобы посмотреть изменения в записи:

SELECT *

FROM Planets

WHERE ID = 3
3
Результат:

ID PlanetName Radius SunSeason OpeningYear HavingRings Opener

3 Pluton 24764 60190 1846 Yes John Couch Adams

Пример 2. С помощью оператора SQL UPDATE у первых трех записей таблицы изменить значение
наличия колец (HavingRings) на «No» и обнулить поле ID

Код примера для MS SQL Server:

UPDATE TOP(3) Planets

SET HavingRings = 'No', ID = NULL

Оператор DELETE

Оператор DELETE удаляет строки из временных или постоянных базовых таблиц, представлений
или курсоров, причем в двух последних случаях действие оператора распространяется на те
базовые таблицы, из которых извлекались данные в эти представления или курсоры. Оператор
удаления имеет простой синтаксис:

DELETE FROM <имя таблицы > [WHERE <предикат>];

Если предложение WHERE отсутствует, удаляются все строки из таблицы или представления
(представление должно быть обновляемым). Более быстро эту операцию (удаление всех строк из
таблицы) в Transact-SQL можно также выполнить с помощью команды

TRUNCATE TABLE <имя таблицы>

Однако есть ряд отличий в реализации команды TRUNCATE TABLE по сравнению с


использованием оператора DELETE, которые следует иметь в виду:

1. Не журнализируется удаление отдельных строк таблицы. В журнал записывается только


освобождение страниц, которые были заняты данными таблицы.
2. Не отрабатывают триггеры, в частности, триггер на удаление.
3. Команда неприменима, если на данную таблицу имеется ссылка по внешнему ключу, и даже
если внешний ключ имеет опцию каскадного удаления.
4. Значение счетчика (IDENTITY) сбрасывается в начальное значение.

Пример. Требуется удалить из таблицы Laptop все ПК-блокноты с размером экрана менее 12
дюймов.

DELETE FROM Laptop


WHERE screen < 12;

4
Все блокноты можно удалить с помощью оператора

DELETE FROM Laptop

или

TRUNCATE TABLE Laptop

Transact-SQL расширяет синтаксис оператора DELETE, вводя дополнительное


предложение FROM

FROM <источник табличного типа>

При помощи источника табличного типа можно конкретизировать данные, удаляемые из таблицы
в первом предложении FROM.

При помощи этого предложения можно выполнять соединения таблиц, что логически заменяет
использование подзапросов в предложении WHERE для идентификации удаляемых строк.

Поясним сказанное на примере. Пусть требуется удалить те модели ПК из таблицы Product, для
которых нет соответствующих строк в таблице PC.

Используя стандартный синтаксис, эту задачу можно решить следующим запросом:

DELETE FROM Product


WHERE type='pc' AND model NOT IN (SELECT model FROM PC)

Заметим, что предикат type='pc' необходим здесь, чтобы не были удалены также модели
принтеров и ПК-блокнотов.

Эту же задачу можно решить с помощью дополнительного предложения FROM следующим


образом:

DELETE FROM Product


FROM Product pr LEFT JOIN PC ON pr.model=pc.model
WHERE type='pc' AND pc.model IS NULL

Здесь используется внешнее соединение, в результате чего столбец pc.model для моделей ПК,
отсутствующих в таблице PC, будет содержать NULL-значение, что и используется для
идентификации подлежащих удалению строк.

5
Приложение (Схема БД клиентов):

Выполнить задания используя команды DML:

1) Заполнить все таблицы по 5-6 записей используя команду insert


2) Удалить последнюю запись в таблице тип клиента (Ответить почему не удаляется)
3) Расскажите последовательность вставки данных
4) Расскажите последовательность удаления данных
5) Расскажите правила вставки данных для оператора(insert)
6) Удалите все данные в таблице контакты клиентов (truncate)
7) Удалите несколько данных в таблице контакты клиентов, где id_klienta > 4 (delete)
8) Поменять фамилию клиента в таблице клиентов с id_klienta = 1
9) Поменять место проживания клиента 1 на район 3
10) Поменять ФИО клиента id_klienta = 1 на другое

Вам также может понравиться