Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
лекции по бд.doc
Скачиваний:
0
Добавлен:
01.05.2025
Размер:
4.79 Mб
Скачать

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

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

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

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

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

SELECT * FROM EMPLOYEE_TBL WHERE LAST_NAME = 'SMITH';

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

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

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

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

SELECT FROM EMPLOYEE_TBL;

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

SELECT EMP_ID FROM EMPLOYEE_TBL;

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

SELECT EMP_ID, LAST_NAME FROM EMPLOYEE_TBL;

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

SELECT EMP_ID, LAST_NAME FROM EMPLOYEE_TBL WHERE EMP_ID = '333333333';

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

SELECT EMP_ID, LAST_NAME FROM EMPLOYEE_TBL 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 EMPLOYEE_TBL WHERE CITY = 'INDIANAPOLIS' ORDER BY 1;

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

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

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

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

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

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

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

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

SELECT COUNT(*) FROM PRODUCTS_TBL;

COUNT(*) 

--------

       9

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

SELECT COUNT(PROD_ID) FROM PRODUCTS_TBL;

COUNT(PROD_ID) 

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

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