
- •Работа с базами данных в субд ms sql Server 2008r
- •1 Описание работы и задания 7
- •1 Описание работы и задания 25
- •1 Описание работы и задания 39
- •1 Описание работы и задания 62
- •1 Описание работы и задания 73
- •Введение в Microsoft Visual FoxPro Лабораторная работа 1.1 Создание баз данных в субд ms Visual FoxPro
- •1 Описание работы и задания
- •Определить условия на значения и сообщения об ошибках некоторых полей.
- •2 Выполнение работы
- •2.1 Обращение к среде sql Server Management Studio
- •2.2 Знакомство с языком Transact-sql
- •2.2.1 Возможности t-sql и особенности его использования
- •2.2.2 Создание базы данных
- •2.2.3 Создание таблиц
- •2.2.4 Манипулирование данными с помощью команд t-sql
- •2.3 Работа с обозревателем объектов
- •2.3.1 Создание базы данных
- •2.3.2 Создание таблиц
- •2.3.3 Занесение данных в созданную таблицу
- •2.3.4 Создание объектов с помощью диаграмм данных и поддержка целостности данных
- •Лабораторная работа 2.2 Создание запросов в субд ms sql Server 2008r
- •1 Описание работы и задания
- •2 Выполнение работы
- •2.1 Оператор select
- •2.1.1 Простая выборка данных
- •2.1.2 Аналитическая выборка данных
- •2.1.3 Условие отбора where
- •2.1.4 Группировка записей group by
- •2.1.5 Условие на группируемые поля having
- •2.1.6 Использование функций преобразования различных типов данных
- •2.2 Подзапросы
- •2.3 Выборка данных из нескольких таблиц
- •2.3.1 Внутреннее соединение
- •2.3.2 Внешнее соединение
- •2.3.3 Перекрестные соединения
- •2.2.4 Объединение нескольких наборов результатов
- •Лабораторная работа 2.3 Хранимые процедуры и триггеры
- •1 Описание работы и задания
- •2 Выполнение работы
- •2.1 Хранимые процедуры
- •2.1.1 Переменные. Задание значений переменных
- •2.1.2 Использование переменных в запросах sql
- •2.1.3 Создание хранимых процедур
- •2.1.3.1 Создание хранимой процедуры без параметров
- •2.1.3.2 Создание и изменение хранимой процедуры с входными и выходными параметрами
- •2.1.3 Удаление хранимых процедур
- •2.2 Триггеры
- •2.3 Списки встроенных функции для работы с данными типа дата и строковыми данными
- •Лабораторная работа 2.4 Курсоры
- •1 Описание работы и задания
- •2 Выполнение работы
- •2.1 Понятие курсора
- •2.2 Реализация курсоров в среде ms sql Server
- •2.3 Управление курсором в среде ms sql Server
- •2.3.1 Объявление курсора
- •2.3.2 Открытие курсора
- •2.3.3 Выборка данных из курсора
- •2.3.4 Изменение и удаление данных
- •2.3.5 Закрытие курсора
- •2.3.6 Освобождение курсора
- •2.2. Безопасность баз данных и привилегии
- •2.3. Основные методы защиты данных в ms sql Server 2008 r2
- •Список использованных источников
- •Список предметных областей
- •Типы данных sql 2008r
2.2 Подзапросы
Подзапрос – это оператор SELECT, включенный в другие запросы. Подзапросы применяются для разбивки сложного запроса на серию логических этапов. Их применение эффективно, если запрос использует записи, возвращенные другим запросом.
В качестве примера возьмем две таблицы:
Ученые
Код ученого |
Фамилия |
Имя |
Паспорт |
Кураторство |
Дата рождения |
SC001 |
Ландау |
Лев |
2504 111111 |
1121 |
09.01.1908 |
SC002 |
Хокинг |
Стив |
2601 222222 |
1123 |
08.01.1942 |
SC003 |
Кулон |
Шарль-Огюстен |
2009 333333 |
1121 |
14.06.1736 |
SC004 |
Резерфорд |
Эрнест |
3802 444444 |
1322 |
30.08.1871 |
SC005 |
Рентген |
Вильгельм-Конрад |
2101 555555 |
1121 |
27.03.1845 |
SC006 |
Фарадей |
Майкл |
2804 666666 |
1322 |
22.09.1791 |
SC007 |
Шрёдингер |
Эрвин |
2502 777777 |
1121 |
12.08.1887 |
Расписание
Код занятий |
Предмет |
Преподаватель |
Группа |
Время |
SC001 |
Теоретическая механика |
SC001 |
1121 |
25.01.2013 08:30 |
SC002 |
Астрономия |
SC002 |
1123 |
16.12.2001 10:00 |
SC003 |
Электростатика |
SC003 |
1121 |
01.12.2011 17:00 |
SC004 |
Небесная механика |
SC002 |
1322 |
08.10.2013 12:00 |
SC005 |
Электростатика |
SC005 |
1122 |
13.12.2013 15:00 |
SC006 |
Теоретическая механика |
SC001 |
1322 |
01.12.2011 10:20 |
SC007 |
Электростатика |
SC005 |
1121 |
01.12.2011 17:00 |
Существует два вида подзапросов.
Вложенные подзапросы – возвращают единственное значение либо список значений. Вложенный запрос выполняется один раз, а затем результирующее значение используется во внешнем запросе.
имена заказчиков, разместивших заказы в последний учетный день, можно воспользоваться следующим запросом:
Например, чтобы определить имена и фамилии ученых, данные о котором находятся в подзапросе, запишем следующий запрос:
SELECT Имя+ ' ' + Фамилия AS 'Имя преподавателя', Паспорт
FROM Ученые
WHERE [Код ученого] in
(SELECT Преподаватель
FROM Расписание
WHERE Группа=1221)
Выполнение этого запроса осуществляется в два этапа: на первом – осуществляется выполнение подзапроса, как самостоятельного запроса, который возвращает значение, используемое на втором этапе при выполнении внешнего запроса.
Такой запрос может быть оформлен и в виде соединения таблиц. Такие запросы обрабатываются значительно быстрее, поэтому если выполнение запроса не требуется выполнять в несколько этапов, использование подзапросов не обязательно.
Связанные подзапросы – используются данные внешнего запроса, причем связанный запрос выполняется один раз для каждой записи внешнего запроса.
Например, для определения списка всех преподавателей, которые курировали группу 1121 (за всю историю существования факультета), необходимо выполнить следующий запрос:
SELECT Фамилия, Имя
FROM Ученые U
WHERE [Код ученого] IN (SELECT Преподаватель
FROM Расписание T
WHERE U.[Код ученого] = T.Преподаватель)
В связанных подзапросах, чтобы различать имена таблиц необходимо применять их псевдонимы. В примере для таблицы SalesOrderHeader определен псевдоним U, а для SalesOrderDetail – T.
Однако использование связанных подзапросов неэффективно, лучше преобразовывать их в соединения таблиц, что позволяет оптимизатору запросов выбирать наилучший способ обработки данных.