Инструкция SELECT


Все запросы в SQL состоят из одиночной команды SELECT:


                SELECT [DISTINCT]
список_выбираемых_полей
                FROM список_таблиц
                [WHEREусловие_выбора]
                [GROUP BY условие_группировки]
                [ORDER BY условие_упорядочения ASC | DESC]
                [INTOимя_таблицы] [TO FILEимя_файла]
 



SELECT - ключевое слово  которое сообщает базе данных что эта команда - запрос. Все запросы начинаются этим словом, сопровождаемым пробелом.
 
    В списке_выбираемых_ полей указываются столбцы, которые выбираются запросом. Элементы списка разделяются точкой с запятой. Если вы хотите видеть все столбцы таблицы,  вы можете заменить этот список звездочкой (*).
    Порядок расположения столбцов соответствует порядку, указанному в запросе.
    В случае использования нескольких таблиц, при указании поля указывается также имя таблицы:
                Имя_Таблицы.ИмяПоля (разделитель - точка).


FROM - ключевое слово, подобно SELECT, которое должно быть представлено в каждом запросе. Оно сопровождается пробелом и затем именем таблицы (одной или нескольких), используемой в качестве источника информации.
 

DISTINCT - аргумент, который позволяет устранить избыточность данных. DISTINCT следит за тем, какие значения были ранее, так что бы они не были продублированы в списке. Использовать DISTINCT следует осмотрительно: например, вы можете предположить, что имена покупателей различны, тогда при использовании DISTINCT вы не найдете однофамильцев и не будете знать о их существовании, или найдете не того однофамильца и получите неверные сведения.
    DISTINCT может указываться только один раз в данном предложении  SELECT. Если выбирается несколько полей, DISTINCT опускает строки где все выбранные поля идентичны. Строки в которых некоторые значения одинаковы а некоторые различны - будут сохранены.


 Поскольку обычно только определенные строки интересуют вас в данное время,  SQL дает возможность вам  устанавливать  критерии чтобы определить какие строки будут выбраны для вывода.
WHERE - предложение команды SELECT, которое позволяет вам устанавливать критерий, условие которого может быть или верным или неверным для любой  строки  таблицы.  Команда извлекает только те строки из таблицы для которой такое утверждение верно.
    1) точное совпадение - оператор  = =.
    2) неточное совпадение - оператор =.
    3) выбор по диапазону значений - BETWEEN значение1 AND значение2. Первое значение в предложении должно быть первым по алфавитному или числовому порядку. Границы диапазона считаются включенными.
    4) список условий отбора - WHERE параметр IN (значение1, ... , значениеN)
    Также в условии могут использоваться операторы:
            >, <, >=, <=, <>, AND, OR, NOT
 

 ORDER BY задает сортировку записей результирующего множества по одному или нескольким полям, которые указываются в условии_сортировки. При использовании ASC сортировка производится по возрастанию, DESC - по убыванию.
    Столбцы, которые упорядочиваются должны быть указаны после SELECT.
    ORDER BY может кроме того,  использоваться с GROUP BY для упорядочения групп. Если это так, то ORDER BY записывается последним.
    Вместо имен столбцов, можно использовать их порядковые номера для указания поля, используемого в упорядочении вывода. Эти  номера могут ссылаться не на порядок столбцов в таблице,  а на их порядок в выводе (т.е. порядок, указанный после SELECT).



 Запросы могут производить обобщенное групповое значение полей  точно также как и значение одного поля. Это делает с помощью агрегатных функций.  Агрегатные функции производят одиночное значение для всей группы таблицы.
  • COUNT ( ) - определяет количество записей;
  • MAX ( ) - определяет максимальное значение в столбце;
  • MIN ( ) - определяет минимальное значение в столбце;
  • AVG ( ) - определяет среднее значение числовых данных;
  • SUM ( ) - определяет арифметическую сумму всех выбранных значений данного поля.
    Агрегатные функции могут использоваться подобно именам полей  в  предложении SELECT запроса с именами полей в качестве аргумента. Только числовые поля могут использоваться с SUM и AVG. С COUNT,
MAX, и MIN, могут использоваться и числовые или символьные поля. Можно также использовать агрегатные функции с аргументами которые состоят из выражений включающих одно или более полей.

GROUP  BY позволяет определить подмножество значений и применять функцию агрегата к подмножеству,  что  дает возможность объединять поля и агрегатные функции в едином предложении SELECT.  Группировка применяется для получения вычисляемой информации о подгруппах. В каждой группе все строки имеют одно и тоже значение поля по которому проводится группировка.

Для ограничения записей, участвующих в группе:
        HAVING условие_группировки
        Действие HAVING для групп аналогично действию WHERE для записей.
        Выражение в HAVING должно иметь единое значение для всей группы.
        Очевидно, что HAVING не используется отдельно от GROUP BY.