- •Языки манипулирования реляционными данными (Data Manipulation Languages, dml)
- •1). Реляционная алгебра.
- •2). Реляционное исчисление.
- •3). Языки, ориентированные на преобразования.
- •4). Графически языки.
- •Язык структурированных запросов sql (Structured Query Language)
- •Однотабличные запросы-выборки
- •Многотабличные запросы-выборки
- •1). Задание соединения таблиц в предложении where.
- •2). Задание соединения таблиц в предложении from.
- •3). Подчиненные запросы.
- •4). Запросы объединения.
- •Вычисляемые поля.
- •1). Комбинирование значений в текстовых полях.
- •2). Расчет числовых значений и дат.
- •3). Вычисление итоговых значений.
- •4). Подчиненные запросы.
- •Запросы с параметрами.
- •Запросы-изменения
- •1). Запрос на создание таблицы.
- •2). Запрос на добавление записей.
- •3). Запрос на обновление.
- •4). Запрос на удаление.
- •Язык определения реляционных данных (Data Definition Language, ddl)
Однотабличные запросы-выборки
Результатом запроса-выборки является новое отношение (результирующий набор записей), удовлетворяющее условиям выборки.
Основная синтаксическая конструкция запроса-выборки:
SELECT список_атрибутов
FROM отношение
WHERE условие
SELECT – поля, присутствующие в результирующем наборе.
FROM – таблица (таблицы), которые участвуют в запросе.
WHERE – критерий отбора записей.
Пример: Вывести расписание самолетов, вылетающих в Москву.
SELECT [Номер рейса], [Пункт назначения], [Время вылета], [Время прибытия], [Число мест]
FROM Рейс
WHERE [Пункт назначения] = ‘Москва’
Замечания:
1). Имена таблиц и полей, содержащие пробелы или знаки препинания, надо заключать в квадратные скобки.
2). В конце инструкции SQL может стоять точка с запятой.
Если в результирующем наборе должны присутствовать все поля исходной таблицы, то в предложении SELECT их можно не перечислять, а поставить знак *.
Пример:
SELECT *
FROM Рейс
WHERE [Пункт назначения] = ‘Москва’
Замечания:
1). При использовании * все изменения в структуре базовой таблицы (добавление или удаление полей (столбцов)) отразятся в запросе.
Предикаты предложения SELECT:
используются для ограничения числа возвращаемых записей;
стоят после ключевого слова SELECT.
А). Предикат ALL.
В результирующий набор включаются все записи, удовлетворяющие условиям отбора.
Используется по умолчанию.
Б). Предикат DISTINCT.
Из результирующего набора исключаются записи, которые содержат повторяющиеся значения в отобранных полях.
Пример: В какие города имеются рейсы?
SELECT [Пункт назначения] – без использования DISTINCT
FROM Рейс
Ответ:
-
Пункт назначения
Москва
Владивосток
Киев
Астрахань
Москва
SELECT DISTINCT [Пункт назначения] – с использованием DISTINCT
FROM Рейс
Ответ:
-
Пункт назначения
Астрахань
Владивосток
Киев
Москва
При использовании DISTINCT происходит автоматическая сортировка записей по возрастанию.
Сортировка записей в результирующем наборе:
ORDER BY – сортировка результирующего набора записей:
ASC – по возрастанию (по умолчанию).
DESC – по убыванию.
SELECT DISTINCT [Пункт назначения]
FROM Рейс
ORDER BY [Пункт назначения] DESC
Результирующие наборы записей, являющиеся результатом запроса, могут быть обновляемыми и необновляемыми. Это зависит от вида запроса. При изменении данных в обновляемом наборе соответствующие изменения автоматически происходят и в исходных таблицах.
Замечания:
1). При использовании предиката DISTINCT результирующий набор записей является необновляемым.
В). Предикат DISTINCTROW.
Игнорируется в однотабличных запросах.
Г). Предикат TOP.
В результирующий набор помещается определенное число записей, находящихся в начале или в конце диапазона, описанного с помощью предложения ORDER BY.
Пример: Вывести часть списка городов, в которые имеются рейсы.
SELECT DISTINCT TOP 2 [Пункт назначения] - с использованием DISTINCT
FROM Рейс
ORDER BY [Пункт назначения] DESC
Ответ:
-
Пункт назначения
Москва
Киев
SELECT TOP 2 [Пункт назначения] - без использования DISTINCT
FROM Рейс
ORDER BY [Пункт назначения] DESC
Ответ:
-
Пункт назначения
Москва
Москва
Д). Предикат PERCENT.
Возвращает определенный процент записей, находящихся в начале или в конце диапазона, описанного с помощью предложения ORDER BY.
SELECT TOP 60 PERCENT [Пункт назначения]
FROM Рейс
ORDER BY [Пункт назначения] DESC
Переименование столбцов результирующего набора:
Имена столбцов результирующего набора записей соответствуют именам полей, перечисленных в предложении SELECT.
AS – изменение заголовков столбцов результирующего набора записей.
SELECT DISTINCT [Пункт назначения] AS Города
FROM Рейс
Ответ:
-
Города
Астрахань
Владивосток
Киев
Москва
Варианты задания условий отбора:
Критерий отбора задается в предложении WHERE.
Критерий отбора должен являться выражением.
Выражение, задаваемое в предложении WHERE, может содержать:
Операторы (=, <, And, Or, Not, Like и т.д.).
Идентификаторы – ссылки на значения полей ([Номер рейса]).
Функции (Date( ) – возврат системной даты).
Константы – значения, остающиеся неизменными (True, False).
Литералы – значения, которые используются в том виде, как они записаны (25, ‘Привет’).
Замечания:
1). Даты вводятся только в американском формате (мм/дд/гг).
2). Литерал даты обрамляется символом # (#10/21/05# - 21 октября 2005 года) (нет в стандарте ANSI).
Пример: Вывести расписание рейсов в Москву и в Киев.
SELECT *
FROM Рейс
WHERE [Пункт назначения] = ‘Москва’ OR [Пункт назначения] = ‘Киев’
Оператор In – проверяет значение выражения на совпадение с любым из элементов списка.
SELECT *
FROM Рейс
WHERE [Пункт назначения] In (‘Москва’, ‘Киев’)
Оператор Not In – проверяет значение выражения на несовпадение с любым из элементов списка.
SELECT * FROM Рейс WHERE [Пункт назначения] Not In (‘Москва’, ‘Киев’)
Оператор Like – позволяет использовать шаблоны (символы * и ?).
Пример: Вывести расписание рейсов самолетов в города, начинающиеся с буквы М.
SELECT *
FROM Рейс
WHERE [Пункт назначения] Like ‘М*’
Замечание:
1). В стандарте ANSI одиночный символ – ‘_’, последовательность символов – ‘%’.
Оператор Between … And … - позволяет указать промежуток между значениями.
Пример: Какие номера рейсов планировались с 16.10.19 по 18.10.19?
SELECT [Номер рейса]
FROM Вылет
WHERE [Плановая дата] Between #10/16/19# And #10/18/19#
Оператор Is Null – позволяет обнаружить значение типа Null, т.е. пустое.
Пример: Какие вылеты не были совершены?
SELECT [Номер рейса], [Плановая дата]
FROM Вылет
WHERE [Реальная дата] Is Null
Предложение WHERE может включать до 40 выражений, связанных логическими операторами (And, Or).
Пример: В каких рейсах на Москву число посадочных мест не меньше 100?
SELECT [Номер рейса]
FROM Рейс
WHERE [Пункт назначения] = ‘Москва’ AND [Число мест] >= 100
Пример: Какие вылеты были совершены 16.10.19 или 17.10.19, но в первую половину дня?
SELECT [Номер рейса], [Плановая дата]
FROM Вылет
WHERE ([Реальная дата] = #10/16/19#)
OR ([Реальная дата] = #10/17/19# AND [Реальное время] <= #12:00#)
