Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
БД_1 / Лекции / Лекция 5 СУБД_Общ_св.doc
Скачиваний:
38
Добавлен:
11.06.2015
Размер:
699.39 Кб
Скачать

Оператор exists может быть полезен для вовлечения внешних ключей (foreign keys). В следующем примере идет проверка, имеет ли значение атрибута 'fred the 45' какое-либо задание. Первый вариант:

SELECT distinct 'x' FROM job WHERE name = 'fred the 45'

Во втором варианте используем оператор EXISTS и получаем уменьшение времени обработки почти в два раза.

SELECT 'x' FROM dual WHERE exists (SELECT 'x' FROM job where name = 'fred the 45')

Причина ускорения обработки состоит в том, что ядро СУБД остановится после того, как найдено хотя бы одно совпадение name = 'fred the 45'. Поэтому СУБД не будет просматривать всю таблицу целиком.

Эффективность операторов EXISTS и IN зависит от количества данных в каждой из таблиц, задействованных в запросе. В запросе с использованием IN управляющей таблицей является подзапрос, указанный в IN(), основной запрос повторяется для каждой строки возвращаемой подзапросом в IN(). В запросе с использованием EXISTS наоборот, управляющим является основной запрос, и подзапрос, указанный в EXISTS() повторяется для каждой строки, выбираемой в основном запросе. Таким образом, если подзапрос возвращает малое количество строк, а основной запрос возвращает большое количество строк, причем для каждой из строк полученных в подзапросе, то следует использовать оператор IN.

Рекомендации по стилю написания SQL операторов. SQL операторы следует писать таким образом, чтобы облегчить процесс их чтения, понимания и исправления. Логически обособленная последовательность операторов должна находиться в отдельном файле. Операторы следует выравнивать так, чтобы текст программы выглядел аккуратно. Каждое из запрашиваемых в SELECT полей должно быть на отдельной строке. Каждая из таблиц, перечисленных в ключевом слове FROM должна быть на отдельной строке.

Ключевые слова следует писать ПРОПИСНЫМИ БУКВАМИ. Перечисленные ниже ключевые слова следует писать с новой строки с одной и той же позиции:

SELECT INTO FROM WHERE AND/OR GROUP BY HAVING CONNECT BY FOR UPDATE OF ORDER BY

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

В SQL обычно существует несколько вариантов выполнения одного и того же запроса. Поэтому следует исследовать различные варианты написания запросов с целью выбора наилучшего.

Выводы

Рассмотрены возможные варианты эксплуатации БД при различной архитектуре вычислительной системы. Представлено описание основных моделей данных (иерархическая, сетевая, реляционная, объектно-ориентированная, многомерная). Дано описание основных команд языка манипулирования данными для реляционной модели – SQL.

Список литературы

  1. Когаловский М.Р.Технология баз данных на персональных ЭВМ. - М.: Финансы и статистика, 1992. - 224с.

  2. Кренке Д. Теория и практика построения БД. — Изд. 9-е Спб.: Питер, 2004. — 864 с.

  3. Олле Т. Предложения КОДАСИЛ по управлению БД. - М.: Мир, 1981. – 286 с.

  4. Системы управления базами данных и знаний: Справ. изд./А.Н.Наумов, А.М.Вендров, В.К.Иванов и др., Под ред. А.Н.Наумова - М.: финансы и статистика, 1991 - 352 с.

Перечень вопросов для самопроверки

  1. Какие СУБД Вы знаете?

  2. Какие команды SQLВы знаете?

  3. Нарисуйте место БД в различных архитектурах вычислительных систем.

  4. Какие модели данных Вы знаете?

  5. Назовите основные способы описания данных.