
- •Понятия: первичный ключ, внешний ключ, суррогатный ключ, индекс.
- •Ограничения на значения данных.
- •Ограничения на связи между данными.
- •Нормализация отношений. Первая нормальная форма.
- •Нормализация отношений. Вторая нормальная форма.
- •Варианты задания условий отбора при создании sql-запросов.
- •Варианты создания многотабличных sql-запросов. Виды объединений.
- •Использование вычисляемых полей при создании sql-запросов.
- •Использование подчиненных запросов в sql-запросах.
- •Возможности запроса alter table.
- •Обработка транзакций.
- •Распределение функций в архитектуре «клиент-сервер».
- •1. Двухзвенные архитектуры.
- •2. Трёхзвенные архитектуры.
- •Понятие хранимой процедуры.
- •Понятие триггера.
Варианты задания условий отбора при создании sql-запросов.
Выражение, задаваемое в предложении WHERE, может содержать:
Операторы (=, <, >, And, Or, …).
Идентификаторы – ссылки на значения полей ( [Номер рейса] ).
Функции ( Date () – возврат системной даты).
Константы ( True, False ).
Литералы – значения, которые используются в том виде, как они записаны (25, ‘Москва’).
Особенности использования дат:
Даты вводятся в американском формате (мм/дд/гг).
Литералы дат обрамляются символом # ( #10/21/05# - 21 октября 2005 года).
Оператор In – проверяет значение выражения на совпадение с любым из элементов списка.
Оператор Not In – проверяет значение выражения на несовпадение с любым из элементов списка.
Оператор Like – позволяет использовать шаблоны (символы * и ?).
Оператор Between … And … – позволяет указать промежуток между значениями.
Оператор Is Null – позволяет обнаружить пустое значение (Null).
WHERE может включать несколько выражений, связанных логическими операторами And и Or.
Варианты создания многотабличных sql-запросов. Виды объединений.
Способы создания многотабличных запросов:
1). Задание соединения таблиц в предложении WHERE.
FROM – перечисление через запятую таблиц, участвующих в запросе.
WHERE – задание условия соединения таблиц.
FROM осуществляет декартово произведение отношений, а WHERE производит выборку из него.
Условие Рейс.[Номер рейса] = Вылет.[Номер рейса] ограничивает выборку только теми записями, которые имеют одинаковые значения полей Номер рейса и в таблице Рейс, и в таблице Вылет.
Если в запросе используются одноименные поля из разных таблиц, то для уточнения перед именем поля через точку указывается имя таблицы.
2). Задание соединения таблиц в предложении FROM.
FROM – условие соединения таблиц в запросе.
INNER JOIN – внутреннее соединение, при котором записи из двух таблиц соединяются и добавляются в результирующий набор только в том случае, если значения в связанных полях равны.
LEFT JOIN – левое внешнее соединение, при котором все записи из таблицы, указанной в левой части предложения LEFT JOIN, включаются в результирующий набор, даже если в таблице, указанной в правой части, нет соответствующих им записей.
RIGHT JOIN – правое внешнее соединение аналогично LEFT JOIN, только наоборот.
Предикат DISTINCTROW – исключение из результирующего набора записей, основанных на целиком повторяющихся записях, а не отдельных повторяющихся полях.
3). Подчиненные запросы.
Создаются путем включения одного запроса в другой.
4). Запросы объединения.
Поочередное выполнение двух и более запросов.
Объединения результатов запросов с помощью предложения UNION.
Число полей и их типы данных в предложениях SELECT должны совпадать.
При использовании UNION повторяющихся записей нет. Чтобы возвращать все записи, надо использовать UNION ALL.
Предложение WHERE может быть включено в конце каждого запроса.
Предложение ORDER BY можно включить только в конце последнего запроса.
Использование вычисляемых полей при создании sql-запросов.
Предложение SELECT может содержать не только поля из таблиц, но и вычисляемые поля, которые позволяют:
комбинировать значения в текстовых полях,
рассчитывать числовые значения и даты,
рассчитывать значения итоговых полей,
создавать подчиненные запросы.
1). Комбинирование значений в текстовых полях.
Пример: Вывести расписание рейсов, соединив в одно поле поля Время вылета и Время прибытия.
SELECT [Номер рейса], [Пункт назначения], [Время вылета] & “ – “ & [Время прибытия] AS Время
FROM Рейс
2). Расчёт числовых значений и дат.
Пример: На сколько дней опоздал каждый вылет?
SELECT [Номер рейса], [Плановая дата], [Реальная дата] – [Плановая дата] AS [Опоздание (в днях)]
FROM Вылет
3). Вычисление итоговых значений.
а). Вычисление итогов для всех записей.
К полю, по которому производится вычисление, применяется групповая функция:
Sum – сумма значений поля.
Avg – среднее от значений поля.
Min – наименьшее значение поля.
Max – наибольшее значение поля.
Count – количество значений поля.
Пример: Определить количество рейсов авиакомпании.
SELECT Count ([Номер рейса]) AS [Число рейсов]
FROM Рейс
В одном запросе можно применить несколько групповых функций для различных полей.
Пример: Определить количество рейсов авиакомпании и общее число мест.
SELECT Count ([Номер рейса]) AS [Число рейсов],
Sum ([Число мест]) AS [Общее число мест]
FROM Рейс
Возможно совместное использование групповых функций для одного поля.
Пример: Определить диапазон числа мест в самолетах авиакомпании.
SELECT Min ([Число мест]) & “ – “ & Max ([Число мест]) AS [Диапазон мест]
FROM Рейс
б). Вычисление итогов по группам записей.
GROUP BY – выполняет группировку записей,
– содержит поле, по которому должны объединяться записи с одинаковыми значениями в этом поле,
– для таких записей вычисляется итоговое значение с помощью групповой функции.
При использовании GROUP BY все поля в предложении SELECT должны быть либо включены в предложение GROUP BY, либо использоваться в качестве аргументов групповых функций.
Пример: Определить количество пассажиров и среднюю цену билетов на каждый из вылетов.
SELECT [Номер рейса], [Дата вылета], Count ([Паспортные данные]) AS [Число пассажиров],
Avg ([Цена билета]) AS [Средняя цена билета]
FROM Пассажир
GROUP BY [Номер рейса], [Дата вылета]
Вычисление итогов при создании SQL-запросов.
Варианты задания условий отбора при вычислении итогов в SQL-запросах.
а). Ограничение числа выводящихся групп.
HAVING – отбор уже сгруппированных записей,
– условие отбора задается для поля, по которому производится группировка.
Пример: Каково общее число мест рейсов в Москву и в Киев?
SELECT [Пункт назначения], Sum ([Число мест]) AS [Общее число мест]
FROM Рейс
GROUP BY [Пункт назначения]
HAVING [Пункт назначения] = ‘Москва’ OR [Пункт назначения] = ‘Киев’
б). Ограничение числа записей перед выполнением группировки.
Условие отбора задается в предложении WHERE.
SELECT [Пункт назначения], Sum ([Число мест]) AS [Общее число мест]
FROM Рейс
WHERE [Пункт назначения] = ‘Москва’ OR [Пункт назначения] = ‘Киев’
GROUP BY [Пункт назначения]
WHERE – для отбора записей перед группировкой.
HAVING – для отбора записей после группировки.
в). Отбор итоговых значений, удовлетворяющих определенным условиям.
Условие отбора формируется для того поля, по которому применяется групповая функция.
Пример: Вывести города, в которые потенциальное число перевозимых пассажиров не ниже 120.
SELECT [Пункт назначения], Sum ([Число мест]) AS [Общее число мест не ниже 120]
FROM Рейс
GROUP BY [Пункт назначения]
HAVING Sum ([Число мест]) >= 120