пятница, 25 ноября 2011 г.

SQL-запросы. Часть 2.

Сортировка строк, возвращаемых запросом
Отсортировать кортежи (строки) можно с помощью предложения ORDER BY. Для сортировки можно задать выражение или позицию столбца в списке предложения SELECT.
Пример: Вывод из таблицы TRAINER фамилии, возраста и даты начала работы каждого тренера. Результат сортируется по фамилиям.
SELECT last_name, age, start_date
FROM trainer
ORDER BY last_name;
По умолчанию строки сортируются в порядке возрастания:
  • Вывод числовых значений производится от меньших к большим - например, 1 - 999.
  • Вывод дат начинается с более ранних - например, 01-ЯНВ-92 предшествует 01-ЯНВ-95.
  • Вывод символьных значений производится в алфавитном порядке -например, от А до Z.
  • Неопределенные значения при сортировке по возрастанию выводятся последними, а при сортировке по убыванию - первыми.
Порядок сортировки, принятый по умолчанию, меняется на противоположный с помощью слова DESC после имени столбца в предложении ORDER BY.
Пример: Вывод из таблицы TRAINER фамилии, возраста и даты начала работы каждого тренера. Результат сортируется по фамилиям.
SELECT last_name, age, start_date
FROM trainer
ORDER BY last_name DESC;
Еще один способ сортировки результатов запроса - это сортировка по позиции. Он особенно полезен при сортировке по длинному выражению. Вместо повторного ввода выражения можно указать его позицию в списке SELECT
SELECT last_name, age, salary*2
FROM trainer
ORDER BY 3;

Сортировать результат можно и по нескольким столбцам. Предельным количеством столбцов сортировки является количество столбцов таблицы. Столбцы указываются в предложении ORDER BY через запятые. Для изменения порядка сортировки по какому-либо столбцу на обратный следует задать квалификатор DESC после его имени или позиции. Сортировать можно и по столбцам, не входящим в список SELECT.
Ограничение количества выбираемых строк.
Ограничить набор строк, возвращаемых в результате запроса, можно с помощью предложения WHERE. Предложение WHERE следует сразу за предложением FROM и задает условие, которое должно быть выполнено. Условие состоит из имен столбцов, выражений, констант и операторов сравнения.
Пример: Запрос для вывода имен, фамилий и золотых побед спортсменов.
SELECT first_name, last_name, winner
FROM sportmen
WHERE winner=’gold’;
В символьных строках различаются символы верхнего и нижнего регистров. Поэтому, для совпадения, фамилия должна быть написана строчными буквами и начинаться с заглавной буквы.
Оператор BETWEEN.
Оператор BETWEEN используется для проверки вхождения значения в интервал значений (включая границы интервала). Нижняя граница должна быть указана первой.
Пример: Вывод имени, фамилии и даты найма тренеров, нанятых между 1 января и 1 октября 1995 года включительно.
SELECT first_name, last_name, start_date
FROM trainer
WHERE start_date BETWEEN '2005-01-01' AND '2005-10-01'
Оператор IN.
Для проверки принадлежности значений к заданному списку используется оператор IN.
Пример: Вывод имени, фамилии и возраста тренеров, которым только 30 и 50 лет.
SELECT first_name, last_name, age
FROM trainer
WHERE age in (30,50);
Оператор LIKE.
Используется для поиска строковых значений с помощью метасимволов (wildcards). Условия для поиска могут содержать символьные литералы или числа:
  • %’ означает отсутствие или некоторое количество символов;
  • _’ означает один символ.
Пример: Вывод всех фамилий тренеров на букву “Р”.
SELECT last_name
FROM trainer
WHERE last_name LIKE ‘P%’;
Оператор LIKE может использоваться в качестве быстрого эквивалента некоторых операций BETWEEN. (пример про год)
В критерии поиска символы ‘%’ и ‘_’ можно сочетать с литералами в любой комбинации.
Пример: Вывод фамилий, второй буквой которых является “о”
SELECT last_name
FROM trainer
WHERE last_name LIKE ‘_o%’;
Параметр ESCAPE.
Поиск символов ‘%’ и ‘_’ требует использования идентификатора ESCAPE (отменяющего специальное значение метасимволов).
Пример: Вывод названий видов спорта, содержащих сочетание “X_Y”.
SELECT name
FROM sport_type
WHERE name LIKE ‘%X_Y%’ ESCAPE ‘_’;
Оператор IS NULL.
Неопределенные значения проверяются с помощью оператора IS NULL. Пользоваться оператором “=“ для сравнения с неопределенными значениями не следует, так как неопределенное значение не может быть равно или не равно какому-то другому.
SELECT id, first_name, age
FROM trainer
WHERE age IS NULL;
Выборка по нескольким условиям.
Использование сложных критериев для выборки возможно при сочетании условий с помощью операторов AND и OR.
Примечание: Оператор AND требует выполнения обоих условий.
WHERE age=25 AND winner=’gold’;
Примечание: Оператор OR требует выполнения хотя бы одного из условий.
WHERE age=25 OR winner=’gold’;

Комментариев нет:

Отправить комментарий