Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Ответы на вопросы к экзамену.docx
Скачиваний:
1
Добавлен:
02.01.2025
Размер:
521.41 Кб
Скачать

Варианты задания условий отбора при создании 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