Для указания имен таблиц, из которых выбираются записи, применяется FROM.
SELECT*
FROM Поставщики
В итоге возвратится полностью таблица «Поставщики» (все поля из таблицы «Поставщики»).
WHERE выражение1 [{AND|OR выражение2 […]}]
[] - не обязательно;
{} – может повторяться несколько раз;
| - или;
Пример1:
SELECT*
FROM Поставщики
WHERE Адрес_город=”Москва” AND Дата_договора=1998
Пример2:
SELECT наименование, цена
FROM товар
WHERE скидка IS NOT NULL
IS NOT NULL означает, что соответствующий столбец не должен иметь пустых значений. Сам столбец «скидка» в результат не войдет.
В предложении WHERE могут использоваться как простые, так и специальные операторы сравнения
Оператор
Описание
>, <, >=, <=, =, <>
Простые операторы сравнения
All
Применяется совместно с операторами сравнения при сравнении со списком значений
BETWEEN
Применяется при проверке нахождения значения внутри заданного интервала (включая границы)
IN
Применяется для проверки нахождения значения в списке
LIKE
Применяется для проверки соответствующего значений, заданных в маске
SELECT*
FROM Товар
WHERE наименование BETWEEN ‘X’ AND ‘H’;
Здесь выбирается наименование товара, начинающегося с букв от ‘X’ до ‘H’.
SELECT наименование, цена
FROM Товар
WHERE наименование LIKE ‘%гидро’
Выбирается из таблицы «Товар» 2 столбца – «наименование» и «цена», в наименовании содержится подстрока ‘гидро’.
Это предложение является необязательным и применяется для сортировки результирующего набора данных по одному или нескольким столбцам. Для определения направления сортировки используются ключевые слова ASC и DESC.
ORDER столбец1 [{ASC|DESC}] [столбец2]
[{ASC|DESC}] […]
ASC – сортировка по возрастанию;
DESC – сортировка по убыванию.
Пример:
SELECT*
FROM Товар
WHERE наименование BETWEEN ‘Х’ AND ‘Н’
ORDER BY цена
Первым столбцом будет цена.
Одна из возможностей извлекать данные более чем из одной таблицы – связать таблицы по общему полю.
SELECT наименование_продукта, категория_продукта
FROM Продукт, Категория
WHERE Продукт.категория_номер=Категория.категория_номер.
По этому запросу будут выданы данные какой категории принадлежит данный продукт. Ограничение WHERE указывает, что из связываемых таблиц извлекаются только те строки, в которых атрибуты категория_номер одинаковы.
SELECT наименование_продукта, категория_продукта
FROM
В итоге получаем Декартово произведение, где строка первой таблицы связывается по очереди с каждой строкой второй таблицы. Таким образом, если в первой таблице k1 строк, то во второй k2 строк, то в результате получается таблица, содержащая k1*k2 строк. Количество столбцов в этой таблице n1+n2 , где n1 – количество столбцов в первой таблице, а n2 – количество столбцов во второй таблице.
Можно использовать следующие операторы:
1. INNER JOIN – внутреннее соединение.
В результирующем наборе при этом содержатся те строки, у которых значения в связанных полях совпадают.
2. OUTER JOIN
Пример:
SELECT наименование_продукта, категория_продукта
FROM Продукт LEFT OUTER JOIN Категория
WHERE Продукт.категория_номер=Категория.категория_номер
GROUP BY {столбец}[, …]
Для вычисления суммарного значения на основе данных одной или нескольких таблиц используется предложение GROUP BY. В этом случае результат будет сгруппирован по одинаковым значениям атрибута группировки. Например, сумму баллов, полученную абитуриентом на экзаменах, можно получить с помощью запроса
SELECT DISTINCTROW
Оценки, номер_абитуриента, Sum(Оценки, полученный_балл), AS Sum Полученный_балл
FROM Оценки
GROUP BY Оценки, номер_абитуриента
Предложение GROUP BY сообщает системе, что надо разбить заданное отношение на группу строк (картежей) с одинаковыми значениями атрибута номер_абитуриента.
В результате для каждой группы будет возвращена строка, представляющая суммарный балл с определенным значением номера абитуриента. В первой строке надо указать атрибут, по которому будет производиться группировка. При использовании функций (в данном случае суммирования - Sum) не разрешается в первой строке оператора (т.е. предложении SELECT) указывать имена атрибутов, не входящих в предложение GROUP BY. В одном операторе можно указывать несколько функций.
Например:
SELECT DISTINCTROW Оценки, номер_абитуриента, Sum (Оценки, получ_баллы), AS Sum_получ_баллы