
- •Лекция 01: Вводные замечания Основные понятия, принципы и ограничения реляционных баз данных Основные определения
- •Принципы, реализуемые реляционными субд
- •Ограничения реляционных баз данных
- •Реляционная судб ms sql Server
- •Ms sql Server как система управления обработкой транзакций
- •Ms sql Server как система поддержки принятия решений
- •Службы ms sql Server Серверная часть системы
- •Клиентская часть системы
- •Лекция 02: Что делают и за что отвечают администраторы баз данных Microsoft sql Server
- •Инсталляция и конфигурирование
- •Инсталляция программного обеспечения
- •Конфигурирование аппаратуры и программного обеспечения
- •Безопасность
- •Аудит системы
- •Обычная работа
- •Резервное копирование и восстановление
- •Управление пользователями
- •Прочая обычная работа
- •Уровень качества обслуживания
- •Мониторинг и настройки производительности
- •Состав системы и планирование мощности
- •Обеспечение периодов работоспособности системы
- •Планирование периодов неработоспособности
- •Восстановление после аварий
- •Документирование
- •Документация о конфигурации
- •Системный журнал
- •Документация о структуре системы
- •Планы обычного технического обслуживания
- •Планы восстановления после аварий
- •Проектирование и разработка
- •Создание модели данных и анализ
- •Проектирование базы данных
- •Разработка хранимых процедур
- •Разработка приложений
- •Информационная помощь другим сотрудникам
- •Прочие обязанности администратора баз данных
- •Администрирование кластера
- •Работа в службе технических консультаций для пользователей
- •Оценка закупаемого оборудования и программного обеспечения
- •Слежение за мощностью системы
- •Типы данных
- •Значение null
- •Правила порождения идентификаторов
- •Системные таблицы
- •Временные таблицы
- •Пользовательские таблицы
- •Физическая архитектура баз данных
- •Страницы и группы страниц
- •Файлы и группы файлов
- •Лекция 04: Основы программирования в ms sql Server Реляционная алгебра
- •Операции реляционной алгебры
- •Реализация операций реляционной алгебры в языке sql
- •Описание синтаксиса языка Transact-sql Управляющие конструкции
- •Логические операторы
- •Лекция 05: Создание и использование умолчаний, ограничений и правил
- •Умолчания
- •Определение и модифицирование умолчаний с помощью t-sql
- •Оператор create table с атрибутом default
- •Оператор alter table с атрибутом default
- •Оператор create default и процедура sp_bindefault
- •Процедура sp_unbindefault
- •Ограничения
- •Создание и модифицирование ограничений с помощью t-sql Ограничение not null
- •Ограничение unique
- •Ограничение primary key
- •Ограничение foreign key
- •Ограничение check
- •Правила
- •Создание Rule-объекта с помощью t-sql
- •Лекция 06: Создание и использование индексов Что такое индекс?
- •Понятия индексирования
- •Индексные ключи
- •Простые индексы
- •Составные индексы
- •Уникальность индекса
- •Уникальный индекс
- •Неуникальные индексы
- •Типы индексов
- •Кластеризованные индексы
- •Некластеризованные индексы
- •Полнотекстовые индексы
- •Использование коэффициента заполнения для предупреждения расщеплений страниц
- •Создание индексов
- •Использование Management Studio
- •Категория «Общие»
- •Категория «Идентификация»
- •Категория «Конструктор таблиц»
- •Спецификация пространства данных
- •Характеристики заполнения
- •Использование t-sql
- •Лекция 07: Программируемые объекты в ms sql Server Пользовательские функции sql Server
- •Функции Scalar
- •Функции Inline
- •Функции Multistatement
- •Изменение функций
- •Удаление функций
- •Использование sql Server Management Studio
- •Хранимые процедуры
- •Примеры использования хранимых процедур
- •Лекция 08: Другие программируемые объекты ms sql Server Определение триггера в стандарте языка sql
- •Реализация триггеров в среде ms sql Server
- •Примеры использования триггеров
- •Курсоры
- •Запрос курсора
- •Обработка курсоров
- •Преимущества использования курсоров
- •Курсоры базовой таблицы
- •Статические курсоры
- •Последовательные курсоры
- •Последовательные курсоры «только для чтения»
- •Курсоры, управляемые набором ключей
- •Работа с объединениями
- •Правила выбора типа курсора
- •Получение блокировок
- •Неявное преобразование типа курсора
- •Лекция 09: Проектирование системы Microsoft sql Server
- •Системные требования
- •Системное приложение
- •Oltp (системы оперативной обработки транзакций)
- •Dss (системы поддержки принятия решений)
- •Системы пакетной обработки данных
- •Требования
- •Требования к уровню обслуживания
- •Производительность
- •Мощность
- •Обеспечение работоспособности
- •Размещение базы данных
- •Журнал транзакций
- •Файлы данных
- •Приложение
- •Архитектура
- •Производительность и масштабируемость
- •Проектирование системы безопасности
- •Уровни системы безопасности Система безопасности уровня сервера
- •Система безопасности уровня базы данных
- •Права собственности на объект
- •Лекция 10: Microsoft sql Server и Microsoft Cluster Services Разновидности отказов
- •Обзор mscs
- •Основные понятия
- •Компоненты кластера
- •Программное обеспечение mscs для управления кластером
- •Взаимосвязь между серверами
- •Разделяемая дисковая система
- •Подсистемы ввода-вывода
- •Внутренняя raid-система
- •Внешняя raid-система
- •Категории приложений, работающих с кластерами
- •Режимы mscs
- •Активно-пассивные кластеры
- •Активно-активные кластеры
- •Примеры кластеризованных систем
- •Пример 1 – система с высокой готовностью со статическим балансированием нагрузки
- •Пример 2 – система с «горячим резервированием» с максимальной готовностью
- •Пример 3 – кластеризация части сервера
- •Пример 4 – только виртуальные серверы, без переходов по отказам
- •Конфигурирование sql Server для работы на кластере
- •Планирование конфигурации
- •Задание времени восстановления
- •Конфигурирование sql Server для активно-пассивных кластеров
- •Конфигурирование sql Server для активно-активных кластеров
- •Лекция 11: Транзакции и блокировка транзакций
- •Что такое транзакция?
- •Acid-свойства
- •Атомарность
- •Согласованность
- •Изолированность
- •Поведение параллельных транзакций
- •Задание уровня изолированности
- •Устойчивость
- •Режимы транзакций
- •Режим автофиксации
- •Явный режим
- •Фиксирование транзакций
- •Создание вложенных транзакций
- •Неявный режим
- •Откаты транзакций
- •Автоматические откаты
- •Программируемые откаты
- •Точки сохранения
- •Блокировка транзакций
- •Возможности управления блокировками
- •Уровни блокировок
- •Режимы блокировки
- •Разделяемая блокировка
- •Блокировка изменений
- •Монопольная блокировка
- •Блокировка намерения
- •Блокировка схемы
- •Блокировка массовых изменений
- •Блокирование и взаимоблокировки
- •Лекция 12: Управление пользователями и системой безопасности
- •Разрешение удалённого доступа
- •Разрешение удалённых соединений
- •Обеспечение безопасности внешнего доступа
- •Управление доступом к экземплярам sql Server
- •Выбор режима проверки подлинности
- •Настройка режима проверки подлинности
- •Соединение с экземпляром sql Server
- •Предоставление доступа пользователям и группам Windows
- •Предоставление доступа именам входа sql Server
- •Принудительное применение политики паролей
- •Управление разрешениями для экземпляра
- •Получение информации о принадлежности к серверной роли
- •Запрет доступа пользователям
- •Рекомендации по управлению доступом
- •Применение схем и ролей. Общие принципы
- •Управление доступом в службах отчётов
- •Управление доступом в службах уведомлений
- •Управление доступом в интеграционных службах
- •Управление доступом в службах репликации
- •Управление доступом для sql Server Agent
- •Управление доступом для Database Mail
- •Управление доступом к базе данных с помощью протокола http
- •Лекция 13: Репликации
- •Что такое репликация базы данных?
- •Понятия репликации Компоненты репликации
- •Издатели
- •Дистрибьюторы
- •Подписчики
- •Типы репликации
- •Репликация моментальных снимков
- •Репликация транзакций
- •Репликация слиянием
- •Данные репликации
- •Публикации
- •Push-подписка и pull-подписка
- •Push-подписка (принудительная)
- •Pull-подписка (по запросу)
- •Агенты репликации
- •Snapshot Agent (Агент создания снимков состояния)
- •Репликация слиянием
- •Репликация моментальных снимков
- •Лекция 14: Средства автоматического администрирования
- •Средства автоматического конфигурирования sql Server
- •Динамическое управление памятью
- •Как действует динамическое управление памятью
- •Пул памяти
- •Параметры конфигурирования памяти sql Server
- •Другие параметры динамического конфигурирования
- •Параметр locks (блокировки)
- •Параметр recovery interval (интервал восстановления)
- •Параметр user connections (количество соединений с пользователями)
- •Статистика
- •Команда create statistics
- •Процедура sp_createstats
- •Команда update statistics
- •Процедура sp_autostats
- •Контрольные точки
- •Планы обслуживания баз данных
- •Использование мастера для создания плана обслуживания
- •Лекция 15: Автоматизация административных задач с помощью службы sqlServerAgent
- •Задания
- •Создание задания в Management Studio
- •Использование t-sql
- •Просмотр журнала выполнения задания
- •Использование Management Studio
- •Использование t-sql
- •Предупреждения
- •Протоколирование сообщений в журнале событий
- •Создание предупреждения о событии sql Server
- •Создание предупреждения о производительности sql Server
- •Операторы
- •Лекция 16: Резервное копирование Microsoft sql Server
- •Воспроизведение
- •Отказы системы
- •Отказы оборудования
- •Отказы программного обеспечения
- •Человеческие ошибки
- •Журнальное протоколирование в sql Server Журнал транзакций
- •Поток откладываемой записи
- •Последовательная запись в журнал
- •Размер журнала транзакций
- •Воспроизведение с помощью журнала транзакций
- •Свойства журнала транзакций
- •Непротоколируемые операции
- •Bulk copy и программа bcp
- •Текстовые операции
- •Контрольные точки
- •Операции контрольной точки
- •Конфигурирование интервала между контрольными точками
- •Методы резервного копирования
- •Полное резервное копирование
- •Разностное резервное копирование
- •Резервное копирование журнала транзакций
- •Резервное копирование группы файлов
- •Резервное копирование файла данных
- •Комбинирование разностных резервных копий и резервных копий журнала транзакций
- •Выполнение резервного копирования
- •Создание логических устройств резервного копирования
- •Создание устройств резервного копирования с помощью t-sql
- •Создание удалённого устройства резервного копирования
- •Резервное копирование с помощью Management Studio
- •Лекция 17: Полная модель восстановления
- •Модель восстановления с неполным протоколированием
- •Восстановление базы данных из резервных копий
- •Извлечение информации резервного копирования
- •Восстановление базы данных через интерфейс среды sql Server Management Studio
- •Восстановление базы данных при простой стратегии резервного копирования с использованием t-sql
- •Восстановление базы данных при полной стратегии резервного копирования с использованием t-sql
- •Восстановление системных баз данных
- •Восстановление базы данных master
- •Восстановление баз данных msdb и model
Реализация операций реляционной алгебры в языке sql
Для извлечения записей из таблиц в SQL определён оператор SELECT. С помощью этой команды осуществляется не только операция «выборка», но и предварительное соединение (join) двух и более таблиц. Это наиболее сложное и мощное средство SQL. Полный синтаксис оператора SELECT имеет вид:
SELECT [ALL | DISTINCT] <список выбора> FROM <имя таблицы>, ... [ WHERE <условие> ] [ GROUP BY <имя столбца>,... ] [ HAVING <условие> ] [ORDER BY <имя столбца> [ASC | DESC],... ]
Порядок предложений в операторе SELECT должен строго соблюдаться (например, GROUP BY должно всегда предшествовать ORDER BY), иначе это приведёт к появлению ошибок.
Начнём рассмотрение SELECT с наиболее простых его форм. Этот оператор всегда начинается с ключевого слова SELECT. В конструкции <список выбора> определяется столбец или столбцы, включаемые в результат. Список может состоять из имён одного или нескольких столбцов, или из одного символа * (звёздочка), определяющего все столбцы. Элементы списка разделяются запятыми.
В том случае, когда интересуют не все записи, а только те, которые удовлетворяют некоторому условию, это условие можно указать после ключевого слова WHERE. В качестве условия используются логические выражения над константами и полями.
При выполнении оператора SELECT результирующее отношение может иметь несколько записей с одинаковыми значениями всех полей. Чтобы исключить повторяющиеся записи из выборки, используется ключевое слово DISTINCT. Ключевое слово ALL указывает, что в результат необходимо включать все строки.
Очень часто возникает ситуация, когда выборку данных надо производить из отношения, которое является результатом слияния (join) двух других отношений. Для этого СУБД предварительно должна выполнить слияние таблиц, а только затем произвести выборку из полученного отношения.
Для выполнения операции такого рода в операторе SELECT после ключевого слова FROM указывается список таблиц, по которым производится поиск данных. После ключевого слова WHERE указывается условие, по которому производится слияние. Следует обратить внимание на то, что когда в разных таблицах присутствуют одноимённые поля, то для устранения неоднозначности перед именем поля указывается имя таблицы и знак «.» (точка). Например, используем базу данных судоходной компании для получения информации о расстоянии между портами:
SELECT РасстоянияМеждуПортами.Расстояние, Порты.НазваниеРусское AS НазваниеПервогоПорта, Порты_1.НазваниеРусское AS НазваниеВторогоПорта FROM Порты, Порты_1, РасстоянияМеждуПортами WHERE (Порты.СчетчикПорта = РасстоянияМеждуПортами.СсылкаПорт1) AND (РасстоянияМеждуПортами.СсылкаПорт2 = Порты_1.СчетчикПорта)
Этот запрос может быть записан по-другому с использованием ключевого слова JOIN (Рис.2.9):
SELECT РасстоянияМеждуПортами.Расстояние, Порты.НазваниеРусское AS НазваниеПервогоПорта, Порты_1.НазваниеРусское AS НазваниеВторогоПорта FROM Порты INNER JOIN РасстоянияМеждуПортами ON dbo.Порты.СчетчикПорта = РасстоянияМеждуПортами.СсылкаПорт1 INNER JOIN Порты AS Порты_1 ON РасстоянияМеждуПортами.СсылкаПорт2 = Порты_1.СчетчикПорта
рис 4.9. Конструктор запроса
Ключевое слово INNER в запросе может быть опущено. INNER JOIN является не обязательной частью инструкции SELECT. Если же она все-таки применяется, то оформляется как часть параметра FROM. В общем виде операция INNER JOIN выглядит так:
Таблица1 INNER JOIN Таблица2 ON Таблица1.ПолеА=Таблица2.ПолеБ
Объединяются (связываются) таблицы Таблица1 и Таблица2. В выходной набор (при отсутствии прочих условий) включаются записи таблиц Таблица1 и Таблица2, для которых выполнено условие равенства содержимого Таблица1.ПолеА = Таблица2.ПолеБ. В условии объединения могут участвовать два числовых поля любых (в том числе и различных) типов. Для других типов полей должно быть соблюдено следующее правило: поля должны относиться к одному и тому же типу данных и содержать один и тот же вид данных, но они не обязательно должны иметь одинаковые имена.
SQL позволяет выполнять различные арифметические операции над столбцами результирующего отношения. В конструкции <список выбора> можно использовать константы, функции и их комбинации с арифметическими операциями и скобками. В арифметических выражениях допускаются операции сложения (+), вычитания (-), деления (/), умножения (*), а также различные функции (COS, SIN, ABS). Также в запрос можно добавить строковую константу.
В SQL также определены так называемые групповые функции, которые совершают действия над совокупностью одинаковых полей в группе записей. Среди них:
Group By – группировка значений;
Sum – сумма всех значений поля;
Avg – среднеарифметическое по всем значениям данного поля;
Count - число записей;
Max – максимальное из всех значений поля;
Min – минимальное из всех значений поля;
Stdev – среднеквадратичное отклонение ряда значений поля;
Var – дисперсия ряда значений поля.
Некоторые из перечисленных функций (например Sum, Avg, Count) допускают использование опции Distinct, обозначающей, что при применении функций используются только уникальные значения полей.
Группировка данных в операторе SELECT осуществляется с помощью ключевого слова GROUP BY и ключевого слова HAVING.
GROUP BY неразрывно связано с групповыми функциями, без них оно практически не используется. GROUP BY разделяет таблицу на группы, а используемая групповая функция вычисляет для каждой из групп итоговое значение.
Область действия данных функции можно ограничить с помощью логического условия после предложения WHERE.
Ключевое слово HAVING работает следующим образом: сначала GROUP BY разбивает строки на группы, вычисляет значение групповых функций, затем на полученные наборы и значения накладываются условия HAVING. Это дополнительная возможность «профильтровать» выходной набор.
Используя базу судоходной компании, выберем все суда, у которых больше 6 грузовых помещений:
SELECT Суда.НазваниеСуднаРусское FROM Суда INNER JOIN СудаГрузовыеПомещения ON Суда.СчетчикСудна = СудаГрузовыеПомещения.СсылкаСудно GROUP BY dbo.Суда.НазваниеСуднаРусское HAVING (COUNT(СудаГрузовыеПомещения.СчетчикГрузовогоПомещения) > 6)
Используя HAVING, надо принимать во внимание следующее:
HAVING – не обязательный параметр, если же он задан, он должен следовать за GROUP BY;
HAVING выполняет те же функции, что и WHERE, но уже в рамках выходного набора; WHERE определяет, какие блоки данных должны быть выбраны, HAVING устанавливает, какие блоки данных, сгруппированные посредством GROUP BY, должны отображаться на экране (Рис. 4.10).
рис. 4.10. Конструктор запроса с использованием множественных операций
Для сортировки данных, получаемых при помощи оператора SELECT, служит ключевое слово ORDER BY. С его помощью можно сортировать результаты по любому столбцу или выражению, указанному в списке выбора. Сортировка может выполняться и по нескольким полям, в этом случае они перечисляются за ключевым словом ORDER BY через запятую. Способ сортировки задаётся ключевым словом, которое указывается в рамках параметра ORDER BY следом за названием поля, по которому выполняется сортировка. Используя параметр ORDER BY, следует принимать во внимание следующее:
ORDER BY не является обязательным параметром, если он не задан, данные появятся не рассортированными, т.е. в том порядке, в котором они извлечены из входного набора;
по умолчанию реализуется сортировка по возрастанию (А-Я, 0-9). Явно она задаётся ключевым словом ASC;
для выполнения сортировки в обратной последовательности (Я-А, 9-0) необходимо после имени поля, по которому выполняется сортировка, написать ключевое слово DESC;
ORDER BY обычно является последним элементом SQL-инструкции.
Оператор UNION объединяет выходные данные (отношения) двух или более SQL-запросов в единое множество строк и столбцов. Естественно, эти отношения должны быть определены по одной схеме. Числовые поля должны иметь полностью совпадающие тип и размер. Символьные поля должны иметь точно совпадающее количество символов. Если NULL-значения запрещены для столбца любого подзапроса объединения, то они должны быть запрещены для всех соответствующих столбцов в других подзапросах объединения.