- •Московский авиационный институт (Государственный технический университет)
- •Управление базами данных
- •4 Семестр
- •Лекция 1
- •Роль sql
- •Преимущества sql
- •Лекция 2
- •Лекция 3
- •Лекция 4
- •Структура предиката в предложении Where
- •Лекция 5
- •Лекция 6
- •Использование множества таблиц в одном запросе.
- •Лекция 7
- •Лекция 8
- •Представления (View)
- •Создание представлений (инструкция create view)
- •Лекция 9
- •Контроль над обновлением представлений (предложение with check option)
- •Лекция 10
- •Лекция 11
- •Триггеры
- •Лекция 12
- •Лекция 13
- •Лекция 14
- •Управление распределенными базами данных
- •Лекция 15
- •Лекция 16
- •Литература
Лекция 8
Команда удаления строк DELETE
Syntax
DELETE [FROM] [ owner.]table-name
... [FROM table-list]
... [WHERE search-condition]
Применение
Для удаления записей из БД.
Ограничения
Пользователь должен иметь доступ DELETE для указанной таблицы.
Оператор DELETE удаляет все записи удовлетворяющие условию WHERE из указанной таблицы. Если WHERE не указано, все записи в таблице будут удалены.
Удаляет строки целиком - не может быть использована для удаления значений отдельных полей.(Не нужно указывать имя поля).
Примеры
Удаляет поставщика из таблицы (по значению emp_id)
DELETE
FROM employee
WHERE emp_id = 105
Удаляет записи из таблицы fin_data в которых значение поля year меньше 1993
DELETE
FROM fin_data
WHERE year < 1993
Удаляет записи из таблицы contact, если такие записи уже есть в таблице customer.
DELETE
FROM contact
FROM contact, customer
WHERE contact.last_name = customer.lname
AND contact.first_name = customer.fname
Delete From Fam
Для удаления конкретных строк используется предикат(мб с подзапросом)
Delete From Fam WHERE fam_cod=103
Указание в предикате первичного ключа - гарантия удаления одной строки.
Рассмотрим дополнительные объекты которые могут храниться в базе данных.
Представления (View)
Определение представлений
Механизм представлений (view) является мощным средством языка SQL, позволяющим скрыть реальную структуру БД от некоторых пользователей за счет определения представления БД, которое реально является некоторым хранимым в БД запросом с именованными столбцами, а для пользователя ничем не отличается от базовой таблицы БД (с учетом технических ограничений). Любая реализация должна гарантировать, что состояние представляемой таблицы точно соответствует состоянию базовых таблиц, на которых определено представление. Обычно вычисление представляемой таблицы (материализация соответствующего запроса) производится каждый раз при использовании представления.
Представления используются по нескольким причинам:
они позволяют сделать так, что разные пользователи базы данных будут видеть ее по-разному;
с их помощью можно ограничить доступ к данным, разрешая пользователям видеть только некоторые из строк и столбцов таблицы;
они упрощают доступ к базе данных, показывая каждому пользователю структуру хранимых данных в наиболее подходящем для него виде.
После определения представления к нему можно обращаться с помощью инструкции SELECT как к обычной таблице.
Имя представления указывается в предложении FROM как имя обычной таблицы, а ссылка на столбцы представления в инструкции SELECT осуществляется точно так же, как на столбцы таблицы. К некоторым представлениям можно применять инструкции insert, delete и update для изменения данных. Таким образом, представление можно использовать в инструкциях SQL так, как будто оно является обычной таблицей.
Механизм работы СУБД с представлениями
Когда СУБД встречает в инструкции SQL ссылку на представление, она отыскивает его определение, сохраненное в базе данных. Затем СУБД преобразует пользовательский запрос, ссылающийся на представление, в эквивалентный запрос к исходным таблицам представления, и выполняет этот запрос. Таким образом, СУБД создает иллюзию существования представления в виде отдельной таблицы и в то же время сохраняет целостность исходных таблиц.
Если определение представления простое, то СУБД формирует каждую строку Представления "налету", извлекая данные из исходных таблиц. Если же определение сложное, СУБД приходится материализовывать представление. Это означает, что СУБД выполняет запрос, определяющий представление, и сохраняет его результаты во временной таблице. Из нее СУБД берет данные для формирования результатов пользовательского запроса, а когда временная таблица становится ненужной, удаляет ее Но независимо от того, как СУБД выполняет инструкцию, являющуюся определением представления, для пользователя результат будет одним и тем же Ссылаться на представление в инструкции SQL можно так же, как если бы оно было реальной таблицей базы данных.
Преимущества представлений
Использование представлений в базах данных различных типов может оказаться полезным в самых разнообразных ситуациях В базах данных на персональных компьютерах представления применяются для удобства и позволяют упрощать запросы к базе данных В промышленных базах данных представления играют главную роль в создании собственной структуры базы данных для каждого пользователя и обеспечении ее безопасности Основные преимущества представлений перечислены ниже:
Безопасность. Каждому пользователю можно разрешить доступ к небольшому числу представлений, содержащих только ту информацию, которую ему позволено знать. Таким образом можно осуществить ограничение доступа пользователей к хранимой информации;
Простота запросов. С помощью представления можно извлечь данные из нескольких таблиц и представить их как одну таблицу, превращая тем самым запрос ко многим таблицам в однотабличный запрос к представлению;
Простота структуры. С помощью представлений для каждого пользователя можно создать собственную "структуру" базы данных, определив ее как множество доступных пользователю виртуальных таблиц;
Защита от изменении. Представление может возвращать непротиворечивый и неизменный образ структуры базы данных, даже если исходные таблицы разделяются, реструктуризируются или переименовываются;
Целостность данных. Если доступ к данным или ввод данных осуществляется с помощью представления, СУБД может автоматически проверять, выполняются ли определенные условия целостности.
Недостатки представлений
Наряду с перечисленными выше преимуществами, представления обладают и двумя существенными недостатками.
• Производительность. Представление создает лишь видимость существования соответствующей таблицы, и СУБД приходится преобразовывать запрос к представлению в запрос к исходным таблицам. Если представление отображает многотабличный запрос, то простой запрос к представлению становится сложным объединением и на его выполнение может потребоваться много времени
• Ограничения на обновление. Когда пользователь пытается обновить строки представления, СУБД должна установить их соответствие строкам исходных таблиц, а также обновить последние. Это возможно только для простых представлений, сложные представления обновлять нельзя, они доступны только для выборки. Указанные недостатки означают, что не стоит без разбора применять представления вместо исходных таблиц. В каждом конкретном случае необходимо учитывать перечисленные преимущества и недостатки представлений.
