1. Простая выборка (выбрать полную информацию о продуктах с сортировкой по алфавиту)
SELECT *
FROM Продукты
ORDER BY Продукт;
Здесь "звездочка" (*) служит кратким обозначением всех имен полей в таблице, указанной во фразе FROM. При этом порядок вывода полей соответствует порядку, в котором эти поля определялись при создании таблицы.
Запрос выдает результат, указанный на Рис. 3-9, б.
2. Исключение дубликатов (выдать перечень проданных продуктов без повторений)
Этот запрос является аналогом операции проекции реляционной алгебры.
Для исключения дубликатов и одновременного упорядочения перечня необходимо дополнить запрос ключевым словом DISTINCT (различный, различные), как показано в следующем примере:
SELECT DISTINCT КодПрод
FROM Продажи;
Результат запроса приведен на Рис. 3-10, б.
Возможности совместной обработки нескольких таблиц
1. Декартово произведение
Декартово произведение может потребоваться для получения всех сочетаний значений таблиц. Получим все возможные сочетания поставщиков и продуктов, т.е. ВСЕ поставщики поставляют ВСЕ продукты.
SELECT *
FROM Поставщики, Продукты;
Или SELECT Поставщики.*, Продукты.*
FROM Поставщики, Продукты;
Результат запроса приведен на Рис. 3-14, б.
2. Естественное соединение
Получить список продаж с характеристиками продуктов. Поскольку продажи продуктов хранятся в таблице Продажи, а названия – в таблице Продукты, то для получения необходимого результата в запросе нужно использовать обе таблицы. В результат должны быть включены те записи, для которых код продукта из таблицы Продукты совпадает с кодом продукта из таблицы Продажи.
SELECT Продажи.*, Продукт, ЕдИзм, [СрокХран(дней)], УсловияХран
FROM Продукты, Продажи
WHERE Продукты.КодПрод = Продажи.КодПрод;
Результат запроса приведен на Рис. 3-15, б.
3. Условное соединение
Получить названия и вес продуктов, проданных 2 января 2004г. В отличие от предыдущего запроса здесь к условию связи таблиц по поля код продукта добавляется условие отбора даты продажи
SELECT ДатаПродажи, Продукт, Количество, ЕдИзм
FROM Продукты, Продажи
WHERE ДатаПродажи = #1-2-2004# AND Продукты.КодПрод = Продажи.КодПрод;
Результат запроса приведен на Рис. 3-16, б.
4. Объединение двух таблиц содержит те записи, которые есть либо в первой, либо во второй, либо в обеих таблицах. Объединить записи таблиц Продукты и НовыеПродукты. Поскольку таблицы имеют эквивалентные схемы, то в запрос можно включить все поля:
SELECT Продукты.*
FROM Продукты
UNION SELECT НовыеПродукты.*
FROM НовыеПродукты;
Вложенные подзапросы
Виды вложенных подзапросов Вложенный подзапрос - это подзапрос, заключенный в круглые скобки и вложенный в WHERE (HAVING) фразу предложения SELECT или других предложений, использующих WHERE фразу. Вложенный подзапрос может содержать в своей WHERE (HAVING) фразе другой вложенный подзапрос и т.д. Вложенный подзапрос создан для того, чтобы при отборе записей таблицы, сформированной основным запросом, можно было использовать данные из других таблиц. Существуют простые и коррелированные вложенные подзапросы. Они включаются в WHERE (HAVING) фразу с помощью условий IN, EXISTS или одного из условий сравнения (= | <> | < | <= | > | >=). Простые вложенные подзапросы обрабатываются системой "снизу вверх". Первым обрабатывается вложенный подзапрос самого нижнего уровня. Множество значений, полученное в результате его выполнения, используется при реализации подзапроса более высокого уровня и т.д. Запросы с коррелированными вложенными подзапросами обрабатываются системой в обратном порядке. Сначала выбирается первая строка рабочей таблицы, сформированной основным запросом, и из нее выбираются значения тех столбцов, которые используются во вложенном подзапросе (вложенных подзапросах). Если эти значения удовлетворяют условиям вложенного подзапроса, то выбранная строка включается в результат. Затем выбирается вторая строка и т.д., пока в результат не будут включены все строки, удовлетворяющие вложенному подзапросу (последовательности вложенных подзапросов).