Операторы манипулирования данными SQL
Лекция 23. Операторы манипулирования данными
Для манипулирования данными, хранящимися в БД, используется группа операторов SQL - DML (Data Manipulation Language). С помощью операторов DML пользователь может загружать в таблицы новые данные, модифицировать и удалять существующие данные. В языке SQL определены три основных оператора DML:
§ INSERT – вставка;
§ UPDATE - обновление;
§ DELETE - удаление.
Оператор INSERT
Процесс ввода в таблицу базы данных новой информации обычно называется загрузкой данных. Для загрузки данных используется оператор INSERT. Для добавления к таблице новой записи используется следующая синтаксическая форма оператора INSERT:
INSERT INTO имя_таблицы
Рекомендуемые материалы
VALUES (значение_1, значение_2, … значение_М)
Список VALUES должен содержать количество значений, равное количеству полей таблицы. Причем тип данных каждого из значений, указываемых в списке VALUES, должен совпадать с типом данных поля, соответствующего этому значению. Значения, относящиеся к символьным типам и датам, должны быть заключены в апострофы. В списке значений может также использоваться значение NULL.
Пусть требуется добавить значения в таблицу «Экземпляры», в этом случае запрос на добавление будет выглядеть следующим образом:
INSERT INTO Экземпляры
VALUES (231, ‘5-272-00278-4’, 0, true, NULL, NULL)
При добавлении данных в таблицу можно заполнять не все поля, а лишь необходимые. В этом случае используется следующая синтаксическая форма оператора INSERT:
INSERT INTO имя_таблицы (имя_поля_1, имя_поля_2… имя_поля_М)
VALUES (значение_1, значение_2… Значениe_N)
Пусть требуется добавить значения в таблицу «Экземпляры», в этом случае запрос на добавление будет выглядеть следующим образом (в таблице «Экземпляры» пустые значения могли бы выставляться по умолчанию):
INSERT INTO Экземпляры (Инв_номер, ISBN, Наличие )
VALUES (231, ‘5-272-00278-4’, true)
Список полей в операторе INSERT может иметь произвольный порядок, не зависящий от порядка задания полей при создании таблицы. Однако список значений должен соответствовать порядку, в котором указаны поля, связанные с этими значениями.
Оператор UPDATE
Для изменения данных, уже занесенных в таблицу, используется оператор UPDATE. Данный оператор не добавляет новых записей в таблицу, а заменяет существующие данные новыми. Оператор UPDATE может быть применен как к одному полю таблицы (наиболее часто используемый случай), так и к нескольким полям. Количество изменяемых записей зависит от потребностей пользователя - с помощью UPDATE можно изменить как одну, так и несколько записей (вплоть до изменения значения всех записей, содержащихся в таблице).
Для изменения данных только в одном из полей таблицы используется наиболее простая форма оператора UPDATE, имеющая следующий вид:
UPDATE имя_таблицы
SET имя_поля = значение
[WHERE условие]
После ключевого слова UPDATE указывается имя таблицы, в которой модифицируются данные, после ключевого слова SET выполняется присвоение полю с заданным именем нового значения. Условие, задаваемое с помощью необязательного предложения WHERE, определяет количество записей, которые будут модифицированы. Пусть требуется изменить домашний телефон читателя с читательским билетом № 325, в этом случае мы получим следующий запрос:
UPDATE Читатели
SET Тел_дом = '6-15-48'
WHERE Номер_ЧБ = 325
Данный оператор изменит значение номера телефона только для записи, соответствующей читателю, зарегистрированному в базе данных под номером 325. Если бы мы не задали ограничительного условия в приведенном выше операторе, то значение номера телефона было бы изменено для всех записей в таблице!
С помощью оператора UPDATE можно одновременно изменять значения в нескольких полях таблицы. Для этого следует указать после ключевого слова SET не одно, а несколько полей:
UPDATE имя_таблицы
SET имя_поля_1 = значение_1.
имя_поля_2 = значение_2.
иня_поля_М = значение_Н [WHERE условие]
Использование оператора в данной форме ничем не отличается от рассмотренного ранее. Здесь точно так же нужно быть очень осторожным при формировании условия.
Удаление данных из таблицы
Удаление данных из таблицы выполняется с помощью оператора DELETE. Данный оператор полностью удаляет всю запись, а не данные из отдельных полей. Синтаксис оператора DELETE имеет следующий вид:
DELETE FROM имя_таблицы [WHERE условие]
Удаляемые записи определяются в соответствии с условием, заданным с помощью необязательного предложения WHERE. При отсутствии предложения WHERE в операторе DELETE данные будут удалены из всей таблицы.
Пусть требуется просто удалить запись читателя с читательским билетом № 325 из БД, в этом случае запрос будет выглядеть следующим образом:
DELETE FROM Читатели
WHERE Номер_ЧБ = 325
Контрольные вопросы
1. Что представляют собой операторы манипулирования данными?
2. Что общего между модифицирующими запросами MS Access и SQL?
3. Как указываются условия в модифицирующих запросах?
4. Какой синтаксис имеет оператор INSERT?
Ещё посмотрите лекцию "Интерпретирующие языки: Perl, Tcl, Python" по этой теме.
5. Какой синтаксис имеет оператор UPDATE?
6. Какой синтаксис имеет оператор DELETE?
Задания для самостоятельной работы
Задание 1. Выполните заполнение таблиц с использованием оператора INSERT.
Задание 2. Создайте запрос на обновление информации в таблицах «Читатели», «Экземпляры», «Книги»
Задание 3. Создайте запрос на списание книг, не пользующихся спросом. Можно списать только те книги, ни один экземпляр которых не находятся на руках у читателей (запрос на удаление).




















