Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
22700_62_OSBD_Lektsii.doc
Скачиваний:
61
Добавлен:
11.02.2015
Размер:
1.11 Mб
Скачать

Лекция №5. Запросы к базе данных

В рамках данной лекции рассматриваются нижеследующие вопросы:

  • Примеры операций реляционной алгебры SELECT, JOIN, PROJECT

  • Оператор SELECT в SQL

  • Вложенные запросы

  • Запросы с групповой обработкой

  • План исполнения SELECT

Для реализации запросов к базе данных в языке SQL предназначен оператор SELECT. Сначала представляет интерес рассмотрение функциональности операций реляционной алгебрыSELECT,JOIN,PROJECT.

Пусть имеются 2 сущности: СтудентиДисциплинаисвязующая(ассоциативная) сущностьСтудентДисциплина, представляющая связи между экземплярами сущностей (или строк таблиц)

Студент

Дисциплина

Студ_ИД

Студ_Фио

Студ_рейтинг

СтудентДисциплина

Дсц_ИД

Наим

1

Иванов

40

Студ_ИД

Дсц_ИД

Оценка

10

ТАУ

2

Иванов

37

1

10

42

20

ОБЖ

3

Иванова

40

3

20

45

1

20

43

Операция SELECT - выборка кортежей по условию

Запрос к Студент:

а) выбрать кортежи по условию Студ_Фио = Иванов имеет результирующее отношение с 3-мя атрибутами, в котором 2 кортежа;

б) выбрать кортежи по условию Студ_ИД = 2 имеет результирующее отношение, в котором может быть только одинкортеж

в) выбрать кортежи по условию Студ_рейтинг > 45 имеет результирующее отношение, в котором 0 кортежей.

Операция PROJECT - проекция кортежей по перечню атрибутов

Запрос к Студент:

а) проекция по «Иванов» имеет результирующее отношение, в котором 1 кортеж, причем в результирующем отношении 1 атрибут;

б) проекция по «Иванова» имеет результирующее отношение, в котором 1 кортеж, причем в результирующем отношении 1 атрибут;

в) проекция по «Студ_ИД» имеет результирующее отношение, в котором 3 кортежа, причем в результирующем отношении 1 атрибут;

г) проекция по «Студ_рейтинг» имеет результирующее отношение, в котором 2 кортежа, причем в результирующем отношении 1 атрибут; Студ_ИД

г) проекция по «Студ_ИД, Студ_рейтинг» имеет результирующее отношение, в котором 3 кортежа, причем в результирующем отношении 2 атрибута.

ОперацияJOIN

Эквисоединение Студент JOIN СтудентДисциплинапо равенствуСтуд_ИД

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

Студ_ИД

Студ_Фио

Студ_рейтинг

Студ_ИД

Дсц_ИД

Оценка

1

Иванов

40

1

10

42

1

Иванов

40

1

20

43

3

Иванова

40

3

20

45

Левое внешнее соединение Студент JOIN СтудентДисциплинапо равенствуСтуд_ИД

Студент (левое отношение)

СтудентДисциплина

Студ_ИД

Студ_Фио

Студ_рейтинг

Студ_ИД

Дсц_ИД

Оценка

1

Иванов

40

1

10

42

1

Иванов

40

1

20

43

2

Иванов

37

NULL

NULL

3

Иванова

40

3

20

45

Левое внешнее соединение Студент JOIN СтудентДисциплинапо равенствуСтуд_ИД

Студент

СтудентДисциплина

Студ_ИД

Студ_Фио

Студ_рейтинг

Студ_ИД

Дсц_ИД

Оценка

1

Иванов

40

1

10

42

3

Иванова

40

3

20

45

1

Иванов

40

1

20

43

Операции реляционной алгебры предполагают процедурноеописание действий над данными. ЯзыкSQLосновывается нанепроцедурном реляционном исчислении, в конечном итоге осуществляющем проверку истинности логических функций. Для приведенных таблиц примером такой проверки может быть проверка: истинно ли логическое выражение «Студ_ИД==1 и Студ_Фио==Иванов и Студ_рейтинг==40».

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

Пример оператора SELECT, использующего эквисоединениеСтудент JOIN СтудентДисциплинапо равенствуСтуд_ИД

SELECTc.StudFio, c.StudRate, e.Mark, e.DiscID

FROM StudentDisc e JOIN Student c on e.StudID = c.StudID ;

Вложенным запросомназывается запрос, помещенный в оператор SELECT, INSERT, UPDATE или DELETE или в другойвложенныйзапрос. Подзапрос может быть использован везде, где разрешены выражения. Вложенный запрос еще называют внутренним запросом или внутренней выборкой. При этом оператор, содержащий вложенный запрос, называют внешним запросом или внешней выборкой.

Для приведенных выше таблиц вложенный запрос может быть, например, таким:

SELECTStudFio

FROMStudent

WHERE StudID IN

(SELECT StudID

FROM StudentDisc

WHERE DiscID = 1)

В языкеSQLимеется возможность работы с группой строк таблиц для выполнения статистических функцийAvg, Min, Max, Count, StDev, а также для работы смногомернымиданными. Группирование строк задается предложением GROUP BY, указывающим один или несколько столбцов или выражение.

Пояснение операций работы с группой строк.

а) получение средней оценки по всем студентам, по всем дисциплинам:

SELECT AVG(StudentDisc.Mark) as 'Средняя оценка',

FROMStudentDisc;

Результатом будет однозначение (42+43+45)/3.

б) получение высшей оценки по каждой дисциплине:

SELECT MAX(StudentDisc.Mark) as 'Лучшая оценка',

FROM StudentDisc

GROUP BY DiscID;

Результатом будут два значения 43 и 45.

Кроме группирования можно задавать упорядочение при выводе. Это осуществляется с помощью предложения ORDER BY.

Операция SELECT является непроцедурной; она не определяет точные шаги, которые сервер базы данных должен предпринять, для получения запрошенных данных. Это означает, что сервер базы данных должен проанализировать инструкцию для определения самого эффективного способа извлечения запрошенных данных. Это называется оптимизацией SELECT, соответствующий программный компонент называютоптимизатором запросов. Входные данные оптимизатора состоят из самого запроса, схемы базы данных (определений таблиц и индексов) и статистики базы данных. Выходные данные оптимизатора - план выполнения запроса, иногда называемый планом запроса или просто планом. Содержимое плана запроса описывается более подробно далее в этом разделе.

План выполнения запроса представляет собой определениеследующего.

  • Последовательности,в которой происходит обращение к исходным таблицам. Как правило, существует много последовательностей, в которых сервер базы данных может обращаться к базовым таблицам для построения результирующего набора. Например, если инструкция SELECT ссылается на три таблицы, сервер базы данных сначала может обратиться кTableA, использовать данные изTableAдля извлечения соответствующих строк изTableBи затем использовать данные изTableBдля извлечения данных изTableC. Другие последовательности, в которых сервер базы данных может обращаться к таблицам:TableC,TableB,TableAилиTableB,TableA,TableCилиTableB,TableC,TableAилиTableC,TableA,TableB;

  • Способа извлеченияданных из каждой таблицы. Например, необходимы только несколько строк с определенными ключевыми значениями, то можноиспользовать индекс. Если необходимы все строки в таблице, то можно выполнитьпросмотр таблицы. Если таблица является очень маленькой, то просмотр таблицы могут быть самым эффективным способом для п обращений к таблице.

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

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

Синтаксический анализатор просматривает предложение SELECT и разбивает его на логические единицы, такие какключевые слова,выражения,операторыи идентификаторы.

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

Оптимизатор запросов анализирует различные способы, с помощью которых можно обратиться к исходным таблицам. Затем он выбирает последовательность действий, которые возвращают результаты быстрее всего и используют меньше ресурсови обновляет дерево запроса, чтобы сохранить эту точную последовательность действий. Конечную, оптимизированную версию дерева запроса называютпланом выполнения (executionplan). Он может получать имя и сохраняться в системе для последующего использования.

Основная литература

Учебник / Учебное пособие

Раздел

Страницы

1. Карпова Т.С. Базы данных: модели, разработка, реализация. - СПб.: Питер, 2001.- 304 с.; ил.

Глава 12

248-275

2. Хомоненко А.Д, Цыганков В.М., Мальцев М.Г. Базы данных: Учебник для высших учебных заведений / под ред. проф. Хомоненко А.Д., 6-ое изд. – М.:Бином-Пресс; СПб.:Корона-Век, 2007.-736с.

Гл.13

476-524

Дополнительная литература

Учебник / Учебное пособие

Раздел

Страницы

1. Дейт К. Дж. Введение в системы баз данных, 6-е издание: Пер. с англ. – К.;М.; СПб.: Издательский дом “Вильямс”,. 1999. – 848 с.: ил. (7-е и 8-е издание).

8.3 – 8.8

229-251

2. Коннолли Т., Бегг К., Страчан А. Базы данных: проектирование, реализация и сопровождение. Теория и практика, 2-е изд.: Пер. с англ. - М.: Издательский дом “Вильямс”,. 2001. – 1120 с.: ил.

13.1 – 13.4

420-470

Соседние файлы в предмете Операционные системы