Условия SQL

Команда SQL SELECT используется для получения данных из таблицы и может быть использована со следующими условиями:

  • WHERE

    Вы можете использовать условие WHERE, чтобы ограничить действие оператора SELECT или UPDATE подмножеством строк в таблице.

    За ключевым словом WHERE следует одно или несколько логических выражений или предикатов, которые оцениваются как TRUE или FALSE для каждой строки в таблице.

    Только те строки, в которых предикаты оцениваются как TRUE, извлекаются командой SELECT или изменяются командой UPDATE.

    Например, приведенная ниже команда SELECT извлекает все строки, в которых столбец ZONE ID содержит значение «T4».

     SELECT company_name, ten_id
    FROM tenements
    WHERE zone_id = 'T4'

    Несколько предикатов должны быть разделены одним из логических операторов OR или AND. Каждый предикат можно отрицать с помощью команды NOT.

     SELECT company_name, ten_id
    FROM tenements
    WHERE (zone_id = 'T4') OR (zone_id = 'T5')

  • ORDER BY

    Используйте ORDER BY для сортировки строк, полученных с помощью команды SELECT, на основе значений одного или нескольких полей.

    ORDER BY <field_name> [, <field_name> ...] [ASC|DESC]

    Ключевое слово ORDER BY представляет собой список имен полей, разделенных запятыми. Имена полей в списке также должны быть в условии SELECT команды запроса.

    Используйте ASC (ASCENDING), чтобы сортировка выполнялась по возрастанию, или DESC (DESCENDING) для сортировки по убыванию. Если порядок сортировки не указан, по умолчанию используется порядок сортировки ASCENDING.

     SELECT company_name, ten_id
    FROM tenements
    WHERE (zone_id = 'T4') OR (zone_id = 'T5')
    ORDER BY company_name ASC, ten_id DESC

  • GROUP BY

    Используйте GROUP BY, чтобы объединить строки с одинаковыми значениями полей в одну строку. Критерии для объединения строк основаны на значениях полей, указанных в условии GROUP BY.

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

    GROUP BY <field_name> [, <field_name> ...]

    За ключевым словом GROUP BY следует список полей, разделенный запятыми. Каждое поле должно соответствовать следующим критериям:

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

    Значения полей, являющихся объектом агрегатной функции, объединяются по всем строкам в группе.

    Поля, не являющиеся объектом агрегированной функции, сохраняют свое значение и служат для идентификации группы.

    Например, в приведенной ниже команде SELECT значения в поле AREA агрегируются (суммируются) на основе отдельных значений в поле COMPANY_NAME. Таким образом, получается общая площадь для каждой компании.

     SELECT company_name, SUM(area) AS TOTALAREA
    FROM tenements
    GROUP BY company_name
    ORDER BY company_name

  • HAVING

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

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

    Значением для условия HAVING является одно или несколько логических выражений, или предикатов, которые оцениваются как true или false для каждой строки агрегата, полученной из таблицы. Команда SELECT извлекает только те строки, в которых предикаты оцениваются как истинные. Например, приведенная ниже команда SELECT извлекает все строки, в которых общая площадь земельных участков отдельных компаний превышает 5000.

     SELECT company_name, SUM(area) AS TOTALAREA
    FROM tenements
    GROUP BY company_name
    HAVING (SUM(area) >= 5000)