- •Введение
- •Глава 1 информационные системы
- •1.1 Информация как ресурс
- •1.2 Файловые системы
- •1.3 Информационные системы, использующие базы данных
- •1.3.1 Иерархические и сетевые модели данных
- •1.3.2 Реляционные системы управления базами данных
- •1.4 Компоненты информационных систем
- •1.4.1 Технические средства
- •1.4.2 Программное обеспечение
- •1.4.3 Данные
- •1.4.4 Пользователи
- •1.4.5 Организационное обеспечение
- •1.4.6 Отношения между компонентами системы
- •1.5 Основы проектирования информационных систем
- •1.5.1 Жизненный цикл программного обеспечения
- •1.5.2 Модели жизненного цикла по
- •1.5.3 Подходы к проектированию ис
- •1.6 Задания и вопросы для повторения
- •2.2 Подходы к проектированию баз данных
- •2.3 Создание базы данных
- •2.4 Основы концептуального проектирования баз данных
- •Объекты и отношения
- •2.3.2. Атрибуты
- •2.3.3 Ключи
- •2.3.4 Наследование
- •2.3.5 Составные объекты
- •2.3.6 Моделирование концептуальных и физических объектов
- •2.4 Реляционная модель данных
- •2.4.1 Поддержка целостности данных
- •Процесс нормализации таблиц
- •2.4.3 Пример построения нормализованной базы данных
- •2.4.4 Преобразование концептуальной модели в реляционную
- •2.5 Элементы er-моделирования
- •2.5.1 Основные понятия модели «сущность-связь»
- •2.5.2 Основные графические обозначения элементов модели
- •2.6 Заключительный этап проектирования
- •2.7 Сравнение концептуального и реляционного моделирования
- •2.8 Вопросы и задания для повторения
- •2.9 Упражнения и задачи
- •2.10 Проекты и профессиональные вопросы
- •Глава 3 реляционная алгебра и реляционное исчисление
- •3.1 Реляционная алгебра
- •3.1.1 Обзор реляционной алгебры
- •3.1.2 Теоретико-множественные операторы
- •3.1.3 Специальные реляционные операторы
- •3.1.4 Зависимые реляционные операторы
- •3.1.5 Примитивные реляционные операторы
- •3.2 Реляционное исчисление
- •3.2.1 Целевой список и определяющее выражение
- •3.2.2 Квантор существования
- •3.2.3 Квантор всеобщности
- •3.3 Заключение
- •3.4 Вопросы на повторение
- •3.5 Упражнения и задачи
- •Глава 4 управление реляционной базой данных с помощью sql
- •4.1 Элементы Transact-sql
- •Комментарии
- •4.1.2 Алфавит
- •4.1.3 Идентификаторы
- •Выражения
- •4.1.5 Ключевые слова
- •Операторы
- •4.1.7 Логические операторы
- •Типы данных
- •- Функции Transact-sql
- •4.2 Выборка данных из таблиц
- •4.2.1 Структура команды select
- •Результаты выборки
- •Отбор столбцов
- •Select Фамилия, Город from Гостиница.Dbo.Клиент
- •4.2.4 Определение заголовков столбцов
- •Выражения в выборках
- •Отбор записей
- •Порядок вывода данных
- •Котов Кузьма Кузьмич
- •Группировка данных
- •Отбор данных для групп
- •4.2.10 Директива compute
- •Выборка данных из нескольких таблиц
- •Объединение с помощью предложения where
- •Внутреннее объединение
- •4.2.14 Объединение и опция join
- •Оператор union
- •Подзапросы и структурированные запросы
- •Создание таблицы на основе выборки
- •Предложение for browse
- •4.3 Модификация данных
- •Добавление данных
- •Изменение данных
- •Удаление строк
- •Управляющие конструкции
- •Создание таблиц базы данных
- •4.6 Транзакции и блокировки
- •4.6.1 Понятие транзакций и блокировок
- •Управление транзакциями
- •Явные транзакции
- •Автоматические транзакции
- •Неявные транзакции
- •Управление блокировками
- •4.7 Хранимые процедуры
- •4.7.1 Типы хранимых процедур
- •Создание хранимых процедур
- •4.8 Триггеры
- •Создание триггера
- •Ограничения при создании триггеров
- •Использование триггеров
- •Вопросы на повторение
- •4.10 Упражнения и задачи
- •4.11 Проекты и профессиональные вопросы
- •Заключение
- •Приложение а sql скрпит, для создания таблиц согласно модели бд "Университет"
- •Литература
Порядок вывода данных
Для вывода данных, отсортированных по какому-либо столбцу, используется предложение ORDER BY. Результат выборки можно отсортировать одновременно по 16 столбцам. В Transact-SQL в предложение ORDER BY можно включать столбцы или выражения, отсутствующие в списке выборки. Сортировать можно по именам столбцов, по заголовкам столбцов, по выражению или по номеру, указывающему позицию столбца в списке выборки. Значение NULL при сортировке выводится раньше всех других. Столбцы типа Text и Image нельзя использовать в предложении ORDER BY.
Следующий запрос выводит всех клиентов гостиницы в алфавитном порядке:
SELECT Фамилия, Имя, Отчество
FROM Клиент
ORDER BY Фамилия, Имя, Отчество
Результат запроса:
Фамилия Имя Отчество
-------------------- -------------------- --------------------
Алексеев Алексей Алексеевич
Артемьев Артем Павлович
Владимиров Владислав Владимирович
Иванов Иван Иванович
Котов Кузьма Кузьмич
Попович Алексей Егорович
Сазонов Поликарп Сидорович
Сидоров Сидор Сидорович
Соков Эмануил Андреевич
Хазанов Аристарх Абдулаевич
(10 row(s) affected)
Аналогичный результат можно получить с помощью предложения ORDER BY 1, 2, 3, в котором используются номера колонок. Для сортировки в обратном порядке можно использовать опцию DESC. Например,
SELECT Фамилия, Имя, Отчество
FROM Клиент
ORDER BY 1 DESC
Группировка данных
При выполнении запросов часто требуется подсчитывать для некоторой группы какие-либо значения. Поэтому группировка данных обычно сопровождается использованием агрегатных функций (функций агрегирования). Для этой цели используется предложение GROUP BY. Эта опция имеет следующий синтаксис:
GROUP BY [ALL] <Условие группировки 1>
[,<Условие группировки 2>]
…
[,<Условие группировки N>]
[WITH {CUBE | ROLLUP}]
Это предложение разделяет таблицу на наборы по значениям функций агрегирования. Эти значения называют векторами агрегирования. В некоторых диалектах SQL каждый элемент в списке GROUP BY должен обязательно присутствовать в предложении SELECT. В Transact-SQL такого строгого ограничения нет. Но следует помнить, что в Transact-SQL группировать можно только по именам столбцов. В других диалектах языка SQL в списке выражений группировки можно указывать номера столбцов (например, Visual FoxPro). Группировку можно выполнять по произвольному количеству столбцов. Директива GROUP BY позволяет сортировать значения столбцов в порядке возрастания (это стандартный способ сортировки). В отличие от директивы ORDER BY , директива GROUP BY выдает в результате список уникальных значений столбцов, (то есть эти значения не повторяются). Сходство между этими директивами заключается в том, что обе они по умолчанию упорядочивают значения столбцов по возрастанию. В следующем примере определяется список городов, в которых проживают клиенты гостиницы.
SELECT Город FROM Клиент GROUP BY Город
Результат выборки:
Город
--------------------
Алексеевка
Владимир
Иваново
Казань
Ковров
Москва
Петушки
Ставрово
Тверь
(9 row(s) affected)
Опции CUBE и ROLLUP. Опция CUBE используется для получения при группировке данных дополнительных строк в результате. Столбцы, включенные в опцию GROUP BY, образуют перекрестную таблицу, что позволяет получить дополнительные группы. Если для этих столбцов используются функции агрегирования (обычно суммирование), то можно получить дополнительные рассчитываемые значения. Число дополнительных групп определяется числом столбцов, включенных в опцию GROUP BY. В следующем примере выполняется подсчет количества приездов каждого клиента в гостиницу.
SELECT [Число приездов] = COUNT(*), Код_клиента
FROM Проживает
GROUP BY Код_клиента
WITH CUBE
Результат выборки:
Число приездов Код_клиента
-------------- -----------
3 1
1 2
2 3
1 4
1 5
1 6
1 7
2 8
1 10
13 NULL
(10 row(s) affected)
Здесь последняя строка является итоговой суммой первого столбца.
Опция CUBE перебирает все варианты сочетаний столбцов. Например, при перечислении трех столбцов в опции GROUP BY получим 32-1=8 групп. Опция ROLLUP используется для однонаправленного перебора всех столбцов, используемых для агрегирования данных, без образования полного сочетания. Эти опции часто используются при подготовке данных для отчетов, графиков или диаграмм.
При использовании опции GROUP BY совместно с опциями WITH CUBE или WITH ROLLUP можно вместо максимально допустимых 16 групп определить только 10. С опциями CUBE и ROLLUP нельзя использовать предложение GROUP BY ALL.
