Структура запросов с использованием одной таблицы
Как уже говорилось, SQL представляет собой структуризованный язык запросов. Запросы – наиболее часто используемый элемент SQL. Запрос – это команда, которая дается СУБД и которая сообщает ей, чтобы она вывела определенную информацию из таблиц. Эта информация обычно посылается непосредственно на экран компьютера или терминала, в большинстве случаев ее можно также послать принтеру, сохранить в файле или представить как вводную информацию для другой команды или процесса.
Все запросы на получение практически любых данных в SQL осуществляются с помощью единственного предложения SELECT – предложения языка SQL, с помощью которого можно выполнить все запросы на получение практически любого количества данных из одной или нескольких таблиц БД, в общем случае результатом реализации предложения SELECT является другая таблица. К этой новой (рабочей) таблице может быть снова применена операция SELECT и т.д., т.е. такие операции могут быть вложены друг в друга. Следует заметить, что именно возможность включения одного предложения SELECT внутрь другого послужила мотивировкой использования прилагательного “структуризированный” в названии языка SQL.
Предложение SELECT выглядит следующим образом:
Ниже перечислены аргументы инструкции SELECT:
* – указывает, что выбраны все поля заданной таблицы или таблиц;
поле_1, поле_2 – имена полей, из которых должны быть отобраны данные. Если включить несколько полей, они будут извлекаться в указанном порядке;
псевдоним_1, псевдоним_2 –имена, которые станут заголовками столбцов вместо исходных названий столбцов в таблице;
выражение –имена одной или нескольких таблиц, которые содержат отбираемые данные;
внешняя_база_данных – имя базы данных, которая содержит таблицы, указанные с помощью аргумента “выражение”, если они не находятся в текущей базе данных.
Предикат –предикаты используются для ограничения числа возвращаемых записей:
ALL – возвращают все записи из таблицы. Если инструкция SQL не содержит ни одного предиката, то подразумевается предикат ALL;
DISTINCT –исключает записи, которые содержат повторяющиеся значения в выбранных полях. Чтобы запись была включена в результат выполнения запроса, значения в каждом поле, включенном в инструкцию SELECT, должны быть уникальными;
DISTINCTROW –опускает данные, основанные на целиком повторяющихся записях, а не на отдельных повторяющихся полях;
TOP –возвращает определенное число записей, находящихся в начале или в конце диапазона, описанного с помощью предложения ORDER BY;
FROM– указывает таблицы или запросы, которые содержат поля, перечисленные в инструкции SELECT;
WHERE – строки из указанных таблиц должны удовлетворять указанному перечню условий отбора строк. Кроме традиционных операторов сравнения (= | <> | < | <= | > | >=) в WHERE фразе используются условия BETWEEN (между), LIKE (похоже на), IN (принадлежит), IS NULL (не определено) и EXISTS (существует), которые могут предваряться оператором NOT (не). Критерий отбора строк формируется из одного или нескольких условий, соединенных логическими операторами:
AND – когда должны удовлетворяться оба разделяемых с помощью AND условия;
OR – когда должно удовлетворяться одно из разделяемых с помощью OR условий;
AND NOT – когда должно удовлетворяться первое условие и не должно – второе;
OR NOT – когда или должно удовлетворяться первое условие, или не должно удовлетворяться второе.
При этом существует приоритет AND над OR (сначала выполняются все операции AND и только после этого операции OR). Для получения желаемого результата WHERE условия должны быть обработаны в правильном порядке, который можно организовать введением скобок.
При обработке условия числа сравниваются алгебраически – отрицательные числа считаются меньшими, чем положительные, независимо от их абсолютной величины.
GROUP BY – группирует по указанному перечню столбцов для того, чтобы получить группы строк, имеющих одно и то же значение в указанном столбце, используя во фразе SELECT SQL-функции SUM (сумма), COUNT (количество), MIN (минимальное значение), MAX (максимальное значение) или AVG (среднее значение).
HAVING –имеет в результате лишь те группы, которые удовлетворяют указанному перечню условий отбора групп.
ORDER BY –упорядочить по – определяет упорядоченность результатов выполнения оператора.