
- •Работа с базами данных в субд 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.1.4 Группировка записей group by
Для группировки записей по полям или выражениям применяется раздел GROUP BY оператора SELECT, что позволяет применять для каждой группы функции агрегирования.
Синтаксис данной части следующий:
[GROUP BY ВыражениеГруппировки, [...n]]
Например, чтобы определить количество групп, у которых читает преподаватель, необходимо сгруппировать записи с одинаковым именем преподавателя «Преподаватель» и подсчитать количество записей в каждой группе:
SELECT Преподаватель, count(Группа) AS [Количество групп]
FROM TimeTable
GROUP BY Преподаватель
При использовании GROUP BY для каждой определенной группы значений выводится только одна запись в итоговом наборе данных.
При группировке записей допускается также использование раздела WHERE, в этом случае группируются записи, удовлетворяющие этому условию.
2.1.5 Условие на группируемые поля having
Раздел WHERE позволяет определить, какие записи должны подвергнуться группировке, а раздел HAVING – какие группы должны быть выведены в итоговый набор данных. Ключевое слово HAVING можно использовать только в разделе GROUP BY.
Так с помощью этого раздела можно в итоговый набор данных поместить только тех преподавателей, у которых более 2 групп прослушивают курс лекций:
SELECT Преподаватель, count(Группа) AS [Количество групп]
FROM TimeTable
GROUP BY Преподаватель
HAVING sum(Группа) >= 2
Обработка элементов оператора SELECT выполняется в следующей последовательности:
FROM – определяются имена используемых таблиц;
WHERE – выполняется фильтрация строк объекта в соответствии с заданными условиями;
GROUP BY – образуются группы строк, имеющих одно и то же значение в указанном столбце;
HAVING – фильтруются группы строк объекта в соответствии с указанным условием;
SELECT – устанавливается, какие столбцы должны присутствовать в выходных данных;
ORDER BY – определяется упорядоченность результатов выполнения операторов.
Порядок предложений и фраз в операторе SELECT не может быть изменен. Только два предложения SELECT и FROM являются обязательными, все остальные могут быть опущены. SELECT – закрытая операция: результат запроса к таблице представляет собой другую таблицу.
Для увеличения производительности, то есть для быстрого выполнения запросов, следует помнить некоторые правила составления строк запросов:
Избегать NOT - команды отрицания выполняются в несколько этапов, что увеличивает нагрузку на сервер.
Избегать LIKE - этот оператор сравнения применяет более мягкие шаблоны сравнения, чем оператор =, что увеличивает необходимое число этапов фильтрации.
Применять точные шаблоны поиска - применение подстановочных символов увеличивает время выполнения запроса, так как для проверки всех вариантов подстановки требуется дополнительные ресурсы сервера.
Избегать ORDER - команда сортировки требует упорядочивания строк таблицы вывода, что задерживает получение результата.
2.1.6 Использование функций преобразования различных типов данных
В реализациях языка SQL может быть выполнено неявное преобразование типов. Так, например, в SQL Server и Sybase ASE.Transact-SQL при сравнении или комбинировании значений типов smallint и int, данные типа smallint неявно преобразуются к типу int. Подробно о явном и неявном преобразовании типов в SQL Server можно прочитать в BOL.
В случае, если система не может выполнить неявное преобразование одного типа данных к другому, или необходимо выполнить подобное преобразование для каких-то целей следует использовать специальные функции. Чаще всего в сообщении об ошибке преобразования (если была попытка выполнить неявное преобразование и она не удалась), указывается функция CONVERT. Однако эта функция не стандартизована, поэтому в целях переносимости рекомендуется использовать стандартное выражение CAST.
Синтаксис выражения CAST очень простой
CAST(<выражение> AS <тип данных>)
Следует иметь в виду, во-первых, что не любые преобразования типов возможны (стандарт содержит таблицу допустимых преобразований типов данных). Во-вторых, результат функции CAST для значения выражения, равного NULL, тоже будет NULL. В-третьих, функцию CAST, при использовании ее для преобразования результатов агрегатной функции, нужно применить и к аргументу агрегатной функции.
Аналогичные преобразования типа можно выполнить с помощью функции SQL Server CONVERT:
CONVERT (<тип_данных[(<длина>)]>, <выражение> [, <стиль>])
Основное отличие функции CONVERT от функции CAST состоит в том, что первая позволяет форматировать данные (например, темпоральные данные типа datetime) при преобразовании их к символьному типу и указывать формат при обратном преобразовании. Стиль соответствуют различным типам форматов.
SELECT CONVERT(char(25), CONVERT(datetime,'20030722'));
Здесь мы преобразуем строковое представление даты к типу datetime, после чего выполняем обратное преобразование, чтобы продемонстрировать результат форматирования. Поскольку значение аргумента стиль не задано используется значение по умолчанию (0 или 100). В результате получим:
Jul 22 2003 12:00AM
Ниже приведены некоторые другие значения аргумента стиль и результат, полученный на приведенном выше примере. Заметим, что увеличение значения стиль на 100 приводит к четырехзначному отображению года.
1 |
07/22/03 |
3 |
22/07/03 |
11 |
03/07/22 |
121 |
2003-07-22 00:00:00.000 |
Перечень всех возможных значений аргумента стиль можно посмотреть в BOL.