Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
32
Добавлен:
16.04.2013
Размер:
1.04 Mб
Скачать
    1. Оператор select.

У короткого ума – длинный язык”.

АРИСТОФАН, ок.445 – ок.375гг. до н.э.

Это самый мощный оператор, способный выполнять действия, эквиваленные операторам реляционной алгебры selection, projection и joinв пределах одной команды. Порядок ключевых слов и фраз в операторене может изменяться. Объязательно использование только ключевых словSELECT и FROM. Параметры операции:

  • colomn_expration– имя столбца или выражение из нескольких имен;

  • table_name – имя доступной таблицы или представления в базе данных;

  • alias – сокращениие для имени table_name.

Операция SELECT являетсязакрытой: результат операции представляет собой другую таблицу. Обработка элементов операции производится в следующем порядке:

FROM – определяются имена используемой таблицы или нескольких таблиц.

WHERE – выполняется фильтрация строк объекта в по заданными условиям.

GROUP BY – образуются группы строк с общим значением в указанном столбце

HAVING – фильтруются группы строк объекта по данному условию.

SELECT – устанавливается, какие столбцы присутствуют в выходных данных.

ORDER BY – определяется упорядоченность строк результата выполнения оператора.

Очень часто выбираются все столбцы таблицы, поэтому в SELECT предусмотрен упрощенный вариант “всех столбцов” – символ звездочки (*). Поэтому выборка всех атрибутов отношения и всех его строк из базы данных записывается очень просто:

SELECT *

FROM <имя таблицы>

Пример выбора некоторых столбцов из таблицы.

SELECT имя_столбца_1, имя_столбца_2, ..., имя_столбца_М

FROM имя_исходной_таблицы

Обратите внимание, что имя таблицы в база данных – уникально и поэтому необъзательно указание имени её схемы. В результате операции мы получаем новую таблицу, включающую заданные столбцы в порядке их перечисления в запросе.

Пример выбора с использованием DISTINCT.

SELECT DISTINCT имя_столбца

FROM имя_исходной_таблицы

В результате операции мы получаем новую таблицу, которая включает один столбец и может содержать повторяющиеся значения в порядке их перечисления исходной таблице. Для удаления повторения значений (и получения аналога реляционной операции проекции) мы используем ключевое слово DISTINCT.

Пример выбора с вычисляемыми полями.

SELECT имя_столб_1, имя_столб_2*0.87 AS новое_имя_столбца, ...

FROM имя_исходной_таблицы

При указании столбцов таблицы результата мы можем ввести новый столбец, в поле которого будем помещать результат вычислений (с использованием скобок). В выражении имена столбцов указвают на значения полей текущего атрибута. Они должны быть заданы и совпадать по типам данных. В результате операции мы получаем новую таблицу, включающую вычислимый столбец в порядке их перечисления в запросе. Имя столбца будет служебным (в разных реализациях может отличаться). Для присвоения вычисляемому столбцу имени собственного используют фразу ASязыкаSQL.

      1. Выбор строк (фраза where).

Твое право – ругаться, мое право – не слушать.”

АРИСТИПП, 2-я пол.V - 1-я пол. IV вв.до н.э.

Очень часто требуется ограничить набор строк, помещаемых в таблицу результата запроса. Для этого надо использовать предложение WHERE. Оно состоит из ключевого слова, за которым следует перечень условий запроса. Существует пять основных типов условий поиска (или предикатов по терминологииISO), принимающих значения “ложь” или “истина”.

  • Сравнение.Вычисляются два выражения (левое и правое) на значениях полей строки и сравниваются между собой. В языкеSQL следующие операторы сравнения:<, <=, =, >=, >, !=.

  • Диапазон.Проверяется, попадает ли данный результат вычисления выражения в заданный диапазон значений.

  • Принадлежность к множеству.Проверяется, принадлежит ли значение заданному множеству.

  • Соотвествие шаблону.Проверяется строковое значение на предмет соотвествия заданному шаблону.

  • Значение NULL.Проверяется, содержит ли строка в данном столбце «неизвестное значение», т.е. определительNULL.

Более сложные предикаты строятся с помощью операторных связок AND, OR, NOT.

Пример сравнения как условие поиска.

SELECT имя_столбца_1, имя_столбца_2, ..., имя_столбца_М >

FROM имя_исходной_таблицы

WHERE имя_столбца_1 > 1000;

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

Пример усложнения условий поиска.

SELECT имя_столбца_1, имя_столбца_2, ..., имя_столбца_М >

FROM имя_исходной_таблицы

WHERE имя_столбца_1 = ‘Moscow’ OR имя_столбца_1 = ‘Zelenograd’;

В результате операции мы получим новую таблицу, которая будет содержать строки, в которых значения первого столбца ‘Moscow’ или ‘Zelenograd’. Результат включает столбцы в порядке перечисления их имен в запросе.

Пример диапазона в условиях поиска.

SELECT имя_столбца_1, имя_столбца_2, ..., имя_столбца_М >

FROM имя_исходной_таблицы

WHERE имя_столбца_1 BETWEEN 1000 AND 2000;

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

Пример условия поиска по вхождению во множество (IN/NOT IN).

SELECT имя_столбца_1, имя_столбца_2, ..., имя_столбца_М >

FROM имя_исходной_таблицы

WHERE имя_столбца_1 IN(1000, 2000);

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

Пример условий поиска по шаблону (LIKE/NOT LIKE).

SELECT имя_столбца_1, имя_столбца_2, ..., имя_столбца_М >

FROM имя_исходной_таблицы

WHERE имя_столбца_1 LIKE ‘%Moscow%’;

В языке SQL существуют два специальных символа шаблона, используемых при проверке шаблона:

  • % - представляет любую последовательность символов длиной от нуля;

  • _ - подчеркивание представляет любой одиночный символ;

  • все остальные символы представляют сами себя.

В результате операции мы получим новую таблицу, которая будет содержать строки, в которых значения первого столбца (например, почтового адреса) содержат все вхождение слова ‘Moscow’ в текст. Результат включает столбцы в порядке перечисления их имен в запросе.

Пример условий поиска с NULL (IS NULL/NOT NULL).

SELECT имя_столбца_1, имя_столбца_2, ..., имя_столбца_М >

FROM имя_исходной_таблицы

WHERE имя_столбца_1 IS NULL;

Строго говоря NULL не является значением. Это признак отсутсвия значения. Поэтому его надо обрабатывать отдельно.В результате операции мы получим новую таблицу, содержащую все строки, в которых значения первого столбца есть NULL.Но мы не можем считать их совпадающими (т.к. они неизвестны). Результат включает столбцы в порядке перечисления их имен в запросе.

Соседние файлы в папке УП_ОПТ2