KnigaRead.com/

W Cat - SQL за 24 часа

На нашем сайте KnigaRead.com Вы можете абсолютно бесплатно читать книгу онлайн W Cat, "SQL за 24 часа" бесплатно, без регистрации.
Перейти на страницу:

1 строка выбрана.


Сортировка вывода

Обычно требуется, чтобы выводимые данные были как-то упорядочены. Выводимые данные можно упорядочить с помощью выражения, связанного с ключевым словом ORDER BY. Упорядочение, задаваемое с помощью ключевого слова ORDER BY, по умолчанию будет упорядочением по возрастанию, обозначается A-Z (А-Я) в случае сортировки имен. Алфавитное упорядочение по убыванию соответствует порядку Z-А (Я-А). Для числовых значений между 1 и 9 упорядочение по возрастанию обозначается 1-9, а по убыванию - 9- 1.

Синтаксис оператора SELECT, использующего выражение ORDER BY, следующий.

SELECT [ ALL | * | DISTINCT СТОЛБЕЦ1, СТОЛБЕЦ2 ]

FROM ТАБЛИЦА1 [ , ТАБЛИЦА2 ]

WHERE [ УСЛОВИЕ1 | ВЫРАЖЕНИЕ1 ] [ AND УСЛОВИЕ2 | ВЫРАЖЕНИЕ2 ]

ORDER BY СТОЛБЕЦ1|ЦЕЛОЕ_ЗНАЧЕНИЕ [ ASC|DESC ];

Для примера использования ключевого слова ORDER BY расширим один из использовавшихся выше операторов. Отсортируем вывод по описаниям товаров в порядке возрастания (алфавитном порядке). Обратите внимание на использование опции ASC. В выражении, задаваемом ключевым словом ORDER BY, эта опция может указываться после имени каждого из столбцов.

SELECT PROD_DESC, PROD_ID, COST

FROM PRODUCTS_TBL

WHERE COST < 20

ORDER BY PROD_DESC ASC;

PROD_DESC PROD_ID COST

ИСКУССТВЕННЫЕ ПАРАФИНОВЫЕ ЗУБЫ 13 1.1

КОСТЮМЫ В АССОРТИМЕНТЕ 15 10

МАСКИ В АССОРТИМЕНТЕ 119 4.95

ПЛАСТИКОВЫЕ ПАУКИ 87 1.05

ПЛАСТИКОВЫЕ ТЫКВЫ 222 7.75

СЛАДКАЯ КУКУРУЗА 9 1.35

ТЫКВЕННЫЕ КОНФЕТЫ б 1.45

ФОНАРИ 90 , 14.5

8 строк выбраны.

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

Можно также использовать DESC, как это сделано в следующем примере, чтобы отсортировать вывод в порядке, обратном алфавитному.

SELECT PRODJDESC, PROD_ID, COST

FROM PRODUCTS_TBL

WHERE COST < 20

ORDER BY PROD_DESC DESC;

PROD_DESC PROD_ID COST

ФОНАРИ 90 14.5

ТЫКВЕННЫЕ КОНФЕТЫ 6 1.45

СЛАДКАЯ КУКУРУЗА 9 1.35

ПЛАСТИКОВЫЕ ТЫКВЫ 222 7.75

ПЛАСТИКОВЫЕ ПАУКИ 87 1.05

МАСКИ В АССОРТИМЕНТЕ 119 4.95

КОСТЮМЫ В АССОРТИМЕНТЕ 15 10

ИСКУССТВЕННЫЕ ПАРАФИНОВЫЕ ЗУБЫ 13 1.1

8 строк выбраны.

В SQL предлагаются и некоторые сокращения. Столбец, указанный в списке ключевого слова ORDER BY, можно заменить числом. ЦЕЛОЕ_ЗНАЧЕНИЕ является значением, замещающим действительное имя столбца и соответствующим порядку столбца в списке после ключевого слова SELECT. Вот пример использования числового идентификатора вместо имени столбца.

SELECT PROD_DESC,

PROD_ID,

COST FROM PRODUCTS_TBL

WHERE COST < 20

ORDER BY 1;

PROD_DESC PROD_ID COST

ИСКУССТВЕННЫЕ ПАРАФИНОВЫЕ ЗУБЫ 13 1.1

КОСТЮМЫ В АССОРТИМЕНТЕ 15 10

МАСКИ В АССОРТИМЕНТЕ 119 4.95

ПЛАСТИКОВЫЕ ПАУКИ 8"? 1.05

ПЛАСТИКОВЫЕ ТЫКВЫ 222 7.75

СЛАДКАЯ КУКУРУЗА 9 1.35

ТЫКВЕННЫЕ КОНФЕТЫ 6 1.45

ФОНАРИ 90 14.5

8 строк выбраны.

В этом запросе целое значение 1 представляет столбец PROD_DESC. Точно так же 2 представляет столбец PROD_ID, 3 - COST и т.д.

Можно задать упорядочение по нескольким столбцам, используя либо имена столбцов, либо соответствующие им в списке SELECT номера:

ORDER BY 1,2,3

Столбцы в выражении ORDER BY не обязательно должны быть в том же порядке, каком они указаны в списке после ключевого слова SELECT, например, как в случае ORDER BY 1,3,2


Учет регистра символов

Для правильного применения запросов очень важно понимание принципов учета регистра символов в SQL. Обычно команды и ключевые слова SQL регистронезави-симы, т. е. вы имеете возможность комбинировать в них символы верхнего и нижнего регистров так, как вам нравится. Подробнее об этом говорилось в ходе урока 5, "Манипуляция данными".

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

Например, данные могут не быть согласованными, если использовать символы верхнего и нижнего регистра одновременно:

SMITH Smith smith

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


SELECT *

FROM EMPLOYEEJTBL

WHERE LAST_NAME = 'SMITH';

При ссылке на данные базы данных в запросе необходимо указывать данные в том виде, в каком они хранятся в базе данных. При вводе данных придерживайтесь правил, установленных в вашей компании для использования символов верхнего и нижнего регистров.


Примеры простых запросов

Приведем несколько примеров запросов, построенных на основе обсуждавшихся выше принципов. Начнем с самого простого запроса, а затем постепенно будем усложнять его. Для запроса используем таблицу EMPLOYEE_TBL.

Выберем все записи в таблице и все ее столбцы.

SELECT FROM EMPLOYEEJTBL;

Выберем все записи в таблице и отобразим ее заданный столбец.

SELECT EMP_ID FROM EMPLOYEE_TBL;

При этом можно разместить весь оператор в одной строке или разделить его на несколько строк.

SELECT EMP_ID FROM EMPLOYEEJTBL;

Выберем все записи в таблице и отобразим несколько ее столбцов.

SELECT EMP_ID, LAST_NAME FROM EMPLOYEEJTBL;

Отобразим данные, удовлетворяющие заданному условию.

SELECT EMP_ID, LAST_NAME

FROM EMPLOYEEJTBL

WHERE EMP_ID = '333333333';

Отобразим данные, удовлетворяющие заданному условию,'и отсортируем вывод.

SELECT EMP_ID, LAST_NAME FROM EMPLOYEEJTBL WHERE CITY = 'INDIANAPOLIS' ORDER BY EMP_ID;

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

SELECT EMP_ID, LAST_NAME

FROM EMPLOYEE_TBL

WHERE CITY = ' INDIANAPOLIS '

ORDER BY EMP_ID, LAST_NAME DESC;

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

SELECT EMP_ID, LAST_NAME FROM EMPLOYEEJTBL WHERE CITY = 'INDIANAPOLIS' ORDER BY 1;

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

SELECT EMP_ID, LAST_NAME FROM EMPLOYEEJTBL WHERE CITY = 'INDIANAPOLIS' ORDER BY 2, 1;

При выборе всех столбцов из таблицы с большим числом строк можно получить в ответ очень большое количество данных.


Подсчет записей в таблице

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

Синтаксис использования функции COUNT в запросах следующий.

SELECT COUNT(*) FROM ИМЯ_ТАБЛИЦЫ;

Функция COUNT используется со скобками, в которых указывается столбец, по которому следует вести подсчет, либо звездочка, если нужно посчитать все строки в таблице. Подсчитаем все записи в таблице PRODUCTSJTBL.

SELECT COUNT(*) FROM PRODUCTS_TBL;

COUNT(*)

--------

9

1 строка выбрана.

Подсчитаем теперь число значений для столбца PROD_ID в таблице PRODUCTS_TBL.

SELECT COUNT(PROD_ID) FROM PRODUCTS_TBL;

COUNT(PROD_ID)

9

1 строка выбрана.

Подсчет числа значений в столбце даст тот же результат, что и подсчет числа всех строк таблицы, если столбец имеет атрибут NOT NULL (т. е задает обязательное поле).


Получение данных из таблиц других пользователей

Чтобы иметь возможность обратиться к данным другого пользователя, нужно иметь на это разрешение. Пользователи, не являющиеся владельцами таблицы, без разрешения получить доступ к этой таблице не могут. Только после того, как разрешение на доступ получено (соответствующая команда GRANT обсуждается в ходе урока 20, "Создание и использование представлений и синонимов"), вы получаете возможность извлечь данные из таблицы другого пользователя. Чтобы обратиться к данным таблицы другого пользователя с помощью оператора SELECT, перед именем таблицы укажите имя соответствующей схемы, как это сделано в следующем примере.

SELECT EMP_ID

FROM SCHEMA.EMPLOYEE_TBL

Если для таблицы, к которой нужно получить доступ, в бадеГданных-имзется синоним, имя схемы указывать не обязательно Синонимы - это альтернативные имена таблиц, они обсуждаются в ходе урока 21, "Работа с системным каталогом".


Псевдонимы столбцов

Псевдонимы столбцов в запросах назначаются столбцам для использования псевдонимов вместо имен при выводе результатов запроса.

SELECT ИМЯ_СТОЛБЦА ПСЕВДОНИМ FROM ИМЯ_ТАБЛИЦЫ;

Использование псевдонимов иллюстрируется следующим примером с таблицей PRODUCTS_TBL. Здесь столбец с описаниями товаров отображается дважды, но второй раз столбец отображается с именем ТОВАР (обратите внимание на названия выводимых столбцов).

SELECT PROD_DESC,

PROD_DESC ТОВАР FROM PRODUCTS_TBL;

PROD_DESC ТОВАР

Перейти на страницу:
Прокомментировать
Подтвердите что вы не робот:*