Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
экзамен БД.docx
Скачиваний:
7
Добавлен:
20.04.2019
Размер:
240.87 Кб
Скачать

Запросы с использованием единственной таблицы Выборка без использования параметра where

Выборка данных без использования параметра WHERE с использованием единственной таблицы является наиболее простой формой использования оператора SELECT.

Выборка всей информации из таблицы

SELECT список_всех_полей_таблицы | * FROM имя_таблицы;

Данная форма оператора SELECT используется, когда не нужно выполнять ни горизонтальную, ни вертикальную фильтрации. Символ «*» заменяет необходимость указания всех полей таблицы. Например:

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

 

SELECT поле1[, поле2, …] FROM имя_таблицы;

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

Исключение дубликатов

При использовании в операторе SELECT вертикальной фильтрации строк таблицы может сложиться ситуация, когда набор записей будет включать дубликаты – записи, значения полей которых полностью совпадают. Для исключения дубликатов из результирующего набора записей используют параметр DISTINCT, который указывают сразу после ключевого слова SELECT. Например:

вывод номеров хотя бы раз проданных товаров

SELECT DISTINCT Prod_id FROM Outgoing;

 

Выборка вычисляемых значений

Наравне с перечнем полей таблиц после ключевого слова SELECT можно указывать выражения, вычисляемые на основе полей таблиц, либо встроенных функций СУБД. Например, если нужно получить информацию о комиссионных дилеров не в процентном, а в долевом выражении, можно выполнить следующий запрос:

 

SELECT Name “Имя”, (Procent / 100) “Доля” FROM Dealers;

 

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

Сортировка результирующего набора данных

Строки в таблицах базы данных изначально хранятся в том порядке, в каком их туда поместили. Иногда СУБД по своему усмотрению может менять внутреннюю организацию хранения данных. По этой причине никогда не стоит надеяться, что оператор SELECT вернет отсортированный набор данных, даже в том случае, если записи заносились в таблицу в соответствии с возрастанием или убыванием значений в определенных полях. Для сортировки результирующего набора данных используется параметр ORDER BY оператора SELECT. Например:

 

-- вывод информации о дилерах, отсортированной

-- по именам дилеров и размерам их комиссионных

SELECT * FROM DEALERS ORDER BY Name, Procent;

 

Если после параметра ORDER BY указано более одного поля, сортировка сначала осуществляется по первому полю, потом, в случае наличия одинаковых значений, по второму и т.д. В приведенном примере результирующий набор данных сначала будет отсортирован по значениям поля Name, и в том случае, если в каких-то строках имена некоторых дилеров совпадут, эти строки отдельно будут отсортированы по значению поля Procent.

По умолчанию (неявно) сортировка всегда происходит по возрастанию. Но способ сортировки можно задать явно, указав после соответствующего поля параметр ASC или DESC для сортировки по возрастанию или убыванию соответственно. Например:

 

-- вывод информации о дилерах, отсортированной

-- по именам дилеров по возрастанию и размерам их

-- комиссионных по убыванию

SELECT * FROM DEALERS ORDER BY Name ASC, Procent DESC;