ВВОД, УДАЛЕНИЕ, ИЗМЕНЕНИЕ ЗНАЧЕНИЙ ПОЛЕЙ В SQL

В операции манипулирования данными входят три операции: операция удаления записей — ей соответствует оператор DELETE, операция добавления или ввода новых записей — ей соответствует оператор INSERT и операция изменения (обновления записей) — ей соответствует оператор UPDATE. Рассмотрим каждый из операторов подробнее.

Все операторы манипулирования данными позволяют изменить данные только в одной таблице.

Оператор ввода данных INSERT имеет следующий синтаксис:

INSERT INTO имя_таблицы [(<список столбцов>) ]

VALUES (<список значений>)

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

Какие столбцы должны быть заданы при вводе данных? Это определяется тем, как описаны эти столбцы при описании соответствующей таблицы. Здесь мы пока отметим, что если столбец или атрибут имеет признак обязательный (NOT NULL ) при описании таблицы, то оператор INSERT должен обязательно содержать данные для ввода в каждую строку данного столбца. Поэтому если в таблице все столбцы обязательные, то каждая вводимая строка должна содержать полный перечень вводимых значений, а указание имен столбцов в этом случае необязательно. В противном случае, если имеется хотя бы один необязательный столбец и вы не вводите в него значений, задание списка имен столбцов — обязательно. В набор значений могут быть включены специальные функции и выражения. Ограничением здесь является то, что значения этих функций должны быть определены на момент ввода данных.

insert into водители values(19,’Крот’,’Петр’,’Иванович’,10

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

insert into водители select личный_номер, фамилия, имя, отчество, стаж where должность='водитель'

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

Синтаксис оператора DELETE следующий:

DELETE FROM имя_таблицы [WHERE условия_отбора]

Если условия отбора не задаются, то из таблицы удаляются все строки, однако это не означает, что удаляется вся таблица. Исходная таблица остается, но она остается пустой, незаполненной.

Например, если нам надо удалить результаты прошедшей сессии, то мы можем удалить все строки из отношения R1командой

DELETE FROM R1

Условия отбора в части WHERE имеют тот же вид, что и условия фильтрации в операторе SELECT.Эти условия определяют, какие строки из исходного отношения будут удалены. Например, если мы хотим уволить водителя Крот то мы должны написать следующую команду:

DELETE FROM ВОДИТЕЛИ

WHERE Фамилия = 'Крот'

В данном случае возможно выполнение этой команды, так как данный водитель не был еще в поездках.

В части WHERE может находиться встроенный запрос. Например, необходимо уволить водителей, которые не были ни в одной поездке:

DELETE FROM ВОДИТЕЛИ

WHERE Личный_номер NOT IN (SELECT Личный_номер_вод FROM ПОЕЗДКИ)

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

Все операции манипулирования данными связаны с понятием целостности базы данных

и поэтому не всегда выполнимы, даже если синтаксически они написаны правильно.

 

Так например, если нам необходимо удалить транспорт, имеющий неудовлетворительное состояние, то для успешного выполнения этой операции его вначале необходимо удалить из таблицы ПОЕЗДКИ.

 

delete from Поездки where Номер_авто in (select Номер_авто from Транспорт where Состояние = 'ремонт')

delete from Транспорт where Состояние = 'ремонт'

 

Операция обновления данных UPDATE требуется тогда, когда происходят изменения во внешнем мире и их надо адекватно отразить в базе данных, так как надо всегда помнить, что база данных отражает некоторую предметную область. Операция обновления имеет следующий формат:

UPDATE имя_таблицы

SET имя_столбца = новое_значение [WHERE условие_отбора]

Часть WHERE является необязательной, так же как и в операторе DELETE. Она играет здесь ту же роль, что и в операторе DELETE, — позволяет отобрать строки, к которым будет применена операция модификации. Если условие отбора не задается, то операция модификации будет применена ко всем строкам таблицы.

UPDATE Транспорт

SET Состояние = 'ремонт' Where Номер= '9098 СК-7'

UPDATE Транспорт

SET Пробег= ( SELECT SUM(Километраж) From Поездки Where Транспорт.Номер= Поездки. Номер_авто

В начало