- •Лекция №1 Информационные системы
- •Лекция № 2 Базы данных и стория появления бд
- •Основная концепция технологии бд:
- •Основные понятия курса (определения):
- •Характеристики субд
- •Основные свойства бд:
- •Лекция №3 Этапы проектирования бд Обобщенная архитектура субд
- •Этапы проектирования бд
- •Лекция №4 Модели данных
- •Реляционная модель данных (рмд)
- •Лекция №5
- •Рмд: языки манипулирования данными (ямд)
- •Лекция №6
- •Нормализация отношений
- •Определение фз
- •Лекция №7 Нормализация отношений (продолжение)
- •Лекция № 8 Платформа sql Server
- •Выпуски sql Server
- •Компоненты sql Server
- •Экземпляры sql Server
- •Системные базы данных
- •Лекция № 9 Файлы и файловые группы
- •Файловая группа по умолчанию
- •Физическая структура файлов данных
- •Страницы
- •Поддержка больших строк
- •Экстенты
- •Журнал транзакций и восстановление
- •Физическая архитектура журнала транзакций
- •Лекция № 10 Опции базы данных
- •Параметры сортировки (collation)
- •Модель восстановления (recovery)
- •Уровень совместимости (compatibility_level)
- •Автоматические
- •Восстановление
- •Состояние
- •Лекция № 11
- •Изменение настроек базы данных
- •Удаление базы данных
- •Лекция № 12 Типы данных Microsoft sql Server
- •Точные числа
- •Приблизительные числа
- •Двоичные данные
- •Пространственные типы данных
- •Специальные типы данных
- •Устаревшие типы данных
- •Пользовательские типы данных
- •Обозреватель объектов sql Server Management Studio
- •Представления каталога
- •Создание таблиц
- •Изменение таблиц
- •Удаление таблиц
- •Системные функции
- •Строковые функции
- •Функции даты (времени)
- •Обновление данных
- •Лекция № 14 Создание индексов и управление индексами Структура хранения данных
- •Структуры кластеризованного индекса
- •Структуры некластеризованного индекса
- •Оптимизация индексов
- •Источники информации об индексах
- •Создание индексов
- •Вычисляемые столбцы
- •Изменение индексов
- •Восстановление индексов
- •Удаление индексов
- •Лекция № 15 Ограничения целостности данных Назначение
- •Типы ограничений целостности данных
- •Определение default значений
- •Ограничение not null
- •Ограничения check
- •Ограничения unique
- •Ограничения primary key
- •Ограничения foreign key
- •Ссылочная целостность
- •Индексирование ограничений foreign key
- •Количество ограничений foreign key в таблице
- •Ограничения столбцов и таблиц
- •Применение триггеров
- •Программирование триггеров
- •Создание триггеров
- •Изменение триггеров
- •Удаление триггеров
- •Лекция № 16 Представления Что такое представление?
- •Использование представлений
- •Источники информации о представлениях Обозреватель объектов sql Server Management Studio
- •Функции динамического управления
- •Создание предавлений
- •Изменение представлений
- •Удаление представлений
- •Обновление данных в представлении
- •Типы представлений Стандартные представления
- •Индексированные представления
- •Секционированные представления
- •Секционированные представления
- •Создание таблиц-элементов
- •Определение распределенных секционированных представлений
- •Правила таблиц
- •Правила столбцов
- •Правила столбцов секционирования
- •Индексированные представления
- •Создание индексированных представлений
- •Лекция № 17 Хранимые процедуры и функции Преимущества хранимых процедур
- •Источники информации о хранимых процедурах Обозреватель объектов sql Server Management Studio
- •Представления каталога
- •Функции динамического управления
- •Создание хранимых процедур
- •Вызов хранимых процедур
- •Перекомпиляция хранимых процедур
- •Преимущества определяемых пользователем функций
- •Источники информации о пользовательских функциях Обозреватель объектов sql Server Management Studio
- •Представления каталога
- •Функции динамического управления
- •Типы определяемых пользователем функции
- •Возвращающие табличное значение определяемые пользователем функции
- •Определяемые пользователем встроенные функции
- •Концепция транзакций
- •Эффекты одновременного доступа
- •Блокировки и управление версиями строк
- •Типы управления одновременным доступом
- •Режимы блокировки
- •Взаимоблокировка
- •Отображение сведений о блокировках
- •Режимы транзакций
- •Автоматическая фиксация транзакций
- •Явные транзакции
- •Неявные транзакции
- •Распределенные транзакции
- •Уровни изоляции в ядре субд
Функции даты (времени)
Таблица 5
Часть даты |
Аббревиатура |
Значения |
1) год |
1) yy |
1) 17539999 |
2) квартал |
2) qq |
2) 14 |
3) месяц |
3) mm |
3) 112 |
4) день года |
4) dy |
4) 1366 |
5) день |
5) dd |
5) 131 |
6) неделя |
6) wk |
6) 154 |
7) день недели |
7) dw |
7) 17 (1-Sunday) |
8) час |
8) hh |
8) 023 |
9) минута |
9) mi |
9) 059 |
10) секунда |
10) ss |
10) 059 |
11) миллисекунда |
11) ms |
11) 0999 |
Таблица 6
Функция |
Аргумент(ы) |
Результат |
1) getdate |
( ) |
Текущая системная дата и время |
2) datename |
(datepart, date) |
часть даты как строка ASCII |
3) datepart |
(datepart, date) |
часть даты как целое число |
4) datediff |
(datepart, date, date) |
количество времени между 2-мя датами в частях даты |
5) dateadd |
(datepart, number, date) |
дата, получаемая прибавлением частей даты к другой дате |
Примеры:
select getdate();
select datediff(month, pubdate, ”Nov 30 1985”) from titles;
select dateadd(day, 3, pubdate) from titles
Функции преобразования одних типов данных в другие и форматирование дат
SQL-сервер поддерживает три функции преобразования типов:
convert;
inttohex;
hextoint.
Синтаксис функции convert:
convert (<тип данных>, <выражение> [, <стиль>])
Пример:
select title, convert(char(5), total_sales) from titles
Правила преобразования:
1) преобразование данных типов character в данные типов money, date/time, всех типов numeric и approx_numeric осуществляется только в том случае, если все символы в строке допустимы в новом типе;
2) при преобразовании целых типов данных в тип character необходимо указывать соответствующую длину строки символов;
функцию convert можно использовать при преобразовании типов money, date/time, всех типов numeric, integer, binary и image.
Функции inttohex и hextoint служат для преобразования целых чисел в шестнадцатиричные и наоборот.
Операция Join (соединения таблиц).
Для выполнения операции соединения нескольких таблиц в предложении SELECT необходимо соблюдать три условия:
1) В списке выборки имена колонок указываются с именами таблиц, в которые входят эти колонки.
2) В предложении from указываются через запятую имена всех таблиц, участвующих в соединении, причем на первом месте указывается таблица, в которой осуществляется выборка данных.
3) В предложении where указываются все связи таблиц, где каждая таблица соединяется с другой по полям, определенным на одинаковых доменах, с помощью операций сравнения: =, >, >=, <, <=, !=, !>, !<.
При выполнении операции join в отчет по запросу входят только те записи, которые удовлетворяют условию соединения таблиц. Иногда желательно посмотреть данные, которые не удовлетворили этому условию. В таких случаях используют операцию Outer join, в которой применяются только два оператора сравнения:
1) *= - включаются все записи из первой названной таблицы;
=* - включаются все записи из второй названной таблицы.
При этом, если указывается операция “*=”, то в отчет включаются все записи из первой таблицы, а в колонках, принадлежащих второй таблице, в записях, не удовлетворяющих условию соединения, ставятся null значения. Аналогично, если указывается операция “=*”, то в отчет включаются все записи из второй таблицы, а в колонках, принадлежащих первой таблице, в записях, не удовлетворяющих условию соединения, ставятся null значения.
Пример:
select au_fname, au_lname, pub_name from authors, publishers
where authors.city *= publishers.city
Подзапросы
Подзапрос - это select - предложение, вложенное в другое select-, insert-, update- или delete-предложение или в другой подзапрос.
Предложения, которые включают подзапрос, обычно имеют один из следующих форматов:
1) where <выражение> [not] in (<подзапрос>)
2) where <выражение> <операция сравнения> [any|all] (<подзапрос>)
where [not] exists (<подзапрос>)
Подмножества
Подмножество - это порождение (представление) данных, строящееся на основе одной или нескольких таблиц БД, называемых базовыми. Кроме этого, представление может быть построено на основе другого представления.
Представления используются для:
предоставления пользователю только интересующих его данных;
упрощения манипулирования данными (представления определяются сложными операциями выборки, проекции и соединения);
предоставления различным пользователям видеть одни и те же данные по-разному;
обеспечения механизма секретности данных;
поддержки логической независимости данных.
Механизм секретности данных осуществляется командами grant и revoke, примененным к представлениям. При этом пользователи получают доступ к различным подмножествам данных:
доступ к подмножеству записей базовой таблицы;
доступ к подмножеству колонок базовой таблицы;
доступ к подмножеству записей и колонок базовой таблицы;
доступ к записям, получаемых путем соединения двух и более базовых таблиц;
доступ к статистическим итогам данных в базовой таблице;
доступ к подмножеству другого представления или некоторой комбинации представлений и базовых таблиц.
В основе команды создания представления лежит оператор select. Синтаксис команды:
create view [[<имя БД>.] <владелец>.] <имя представления>
[(<имя колонки> [, <имя колонки>]…)]
as <select-предложение>
[with check option]
Пример:
create view pub_view (publisher, city, state)
as select pub_name, city, state from publishers
Существует несколько ограничений на использование select-предложения в создании представления:
нельзя использовать структуры order by и compute;
нельзя использовать слово into;
нельзя ссылаться на временную таблицу.
Структура with check option используется в тех случаях, когда данное представление будет использоваться командами insert и update. При этом будут контролироваться вводимые и обновляемые записи на соответствие select-предложению в представлении.
Существуют ограничения применения операторов изменения данных (update, insert и delete рассматриваются в следующем разделе) к представлениям:
нельзя применять эти операторы к колонкам представления, значения которых подсчитываются с помощью агрегатных или встроенных функций;
нельзя применять эти операторы к представлениям, использующим агрегатные функции и структуру group by;
нельзя применять эти операторы к представлениям, использующим distinct;
нельзя использовать insert для представлений, построенных на таблицах с колонками not null, когда в эти колонки попадают null значения;
нельзя использовать delete для представлений, построенных на нескольких таблицах;
нельзя использовать insert для представлений, построенных на нескольких таблицах с опцией with check option;
нельзя применять insert и update в представлении, построенном на нескольких таблицах с опцией distinct;
нельзя использовать update для колонки identity.
Удаление представлений осуществляется командой drop view:
drop view [[<имя БД>.] <владелец>.] <имя представления>
[, [[<имя БД>.] <владелец>.] <имя представления>]…
Пример:
drop view pub_view