русс | укр

Языки программирования

ПаскальСиАссемблерJavaMatlabPhpHtmlJavaScriptCSSC#DelphiТурбо Пролог

Компьютерные сетиСистемное программное обеспечениеИнформационные технологииПрограммирование

Все о программировании


Linux Unix Алгоритмические языки Аналоговые и гибридные вычислительные устройства Архитектура микроконтроллеров Введение в разработку распределенных информационных систем Введение в численные методы Дискретная математика Информационное обслуживание пользователей Информация и моделирование в управлении производством Компьютерная графика Математическое и компьютерное моделирование Моделирование Нейрокомпьютеры Проектирование программ диагностики компьютерных систем и сетей Проектирование системных программ Системы счисления Теория статистики Теория оптимизации Уроки AutoCAD 3D Уроки базы данных Access Уроки Orcad Цифровые автоматы Шпаргалки по компьютеру Шпаргалки по программированию Экспертные системы Элементы теории информации

Отбор записей


Дата добавления: 2014-11-28; просмотров: 596; Нарушение авторских прав


 

Основным способом отбора записей является предложение WHERE. При использовании технологии «клиент-сервер» количество передаваемых по сети данных очень сильно влияет на производительность информационной системы. Идеальный способ обработки данных – это использование хранимых процедур, когда пользовательское приложение обменивается с сервером только параметрами и результатами. Но это не всегда возможно, а часто и не нужно, потому что просмотр пользователем информации тоже имеет значение. Предложение WHERE позволяет не только сократить объем передаваемой по сети информации, но и существенно уменьшить время выполнения команды SELECT.

 

Таблица 4.9 - Операторы, используемые в предложении WHERE

Тип операторов Операторы
Сравнение =, >, <, >=, <=, <>, !=, !<, !>
Интервал BETWEEN, NOT BETWEEN
Список IN, NOT IN
Сравнение строк LIKE, NOT LIKE
Проверка значения IS NULL, IS NOT NULL
Логические AND, OR
Отрицание NOT

 

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

· Выражения могут содержать константы, имена столбцов, функции, вложенные запросы и арифметические операторы.

· Лучше использовать одинарные кавычки при работе со строками символов (двойные кавычки допустимы), поскольку при этом обеспечивается совместимость со стандартом ANSI.

Операторы сравнения можно использовать для работы с числами, датами и строками.

В качестве примера рассмотрим запрос, в котором определим клиентов из Москвы.



 

SELECT Фамилия [Клиенты из Москвы]

FROM Клиент

WHERE Город = 'Москва'

 

Результат запроса:

 

Клиенты из Москвы

--------------------

Сидоров

Артемьев

 

(2 row(s) affected)

 

В данном примере предполагалось, что названия всех городов в таблице начинаются с прописной буква, все остальные буквы – строчные, отсутствуют ведущие пробелы, в названиях населенных отсутствуют обозначения их типов (например, г., пос.). В реальных базах данных эти условия могут не выполняться. Для того, чтобы выбрать из таблицы необходимые данных при произвольном вводе их пользователем, необходимо приведение символов к одному регистру и использование ассоциативного поиска данных. Ассоциативный отбор необходим и в том случае, когда пользователь не знает точного названия объекта. При ассоциативном отборе используется оператор LIKE, синтаксис которого имеет вид:

 

WHERE <Имя столбца> [NOT] LIKE <Шаблон> [ESCAPE <Символ>]

 

Шаблон должен быть заключен в кавычки и может включать знаки подстановки. ANSI SQL обеспечивает два знака подстановки: процент (%) и подчеркивание ( _ ). Процент заменяет собой строку из любого количества символов, а знак подчеркивания - только один символ. Опция ESCAPE используется в том редком случае, когда поисковое значение включает в себя один из знаков подстановки и его необходимо рассматривать буквально. В некоторых диалектах языка SQL, в том числе и Transact-SQL, поддерживаются еще два вида подстановки:

· квадратные скобки [] - показывают, что символ должен лежать в указанном списке;

· [^] - показывают на то, что символ не должен принадлежать диапазону.

Тогда запрос для предыдущего примера будет выглядеть следующим образом:

 

SELECT Фамилия [Клиенты из Москвы]

FROM Клиент

WHERE UPPER(Город) LIKE '%МОСКВА%'

 

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

 

SELECT Город FROM Клиент WHERE Город LIKE '[ВИ]%'

 

Результат выборки:

 

Город

--------------------

Иваново

Владимир

 

(2 row(s) affected)

 

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

 

SELECT Фамилия [(Клиенты из Москвы и Владимира)], Город

FROM Клиент

WHERE Город = 'Москва' OR Город = 'Владимир'

 

Результат выборки:

 

(Клиенты из Москвы и Владимира) Город

------------------------------- ------------------

Владимиров Владимир

Сидоров Москва

Артемьев Москва

 

(3 row(s) affected)

 

Тот же результат можно получить с использованием в предложении WHERE списка:

 

WHERE Город IN ('Владимир', 'Москва')

 

Оператор IN более удобен, чем эквивалентный ему набор операторов OR, особенно когда число элементов списка велико.

Часто приходится проводить отбор данных, значения которых лежат в определенном диапазоне. Для этой цели используется оператор BETWEEN, хотя его всегда можно заменить двумя операторами «>=» и «<=». В качестве примера определим число клиентов, прибывших в гостиницу с 27 февраля 2001 года по 1 марта 2001 г.

 

SELECT [Число клиентов]=COUNT(*)

FROM ПРОЖИВАЕТ

WHERE Дата_прибытия BETWEEN '02/27/01' AND '03/01/01'

 

Результат:

 

Число клиентов

--------------

 

(1 row(s) affected)

Другой вариант записи предложения WHERE для данной задачи:

 

WHERE Дата_прибытия >= '02/27/01' AND Дата_прибытия <= '03/01/01'

 

Оператор BETWEEN можно использовать не только с числовыми полями и полями типа Datetime, но и с полями символьного типа.

Например, необходимо получить список клиентов, начинающийся Ивановым и оканчивающийся Сидоровым.

 

SELECT Фамилия

FROM Клиент

WHERE Фамилия BETWEEN 'Иванов' AND 'Сидоров'

 

Результат выборки:

 

Фамилия

--------------------

Иванов

Попович

Сазонов

Котов

Сидоров

 

(5 row(s) affected)

 

По умолчанию выводятся все записи, которые удовлетворяют условию, указанному в предложении WHERE. Но в ряде случаев интерес представляют только уникальные записи. Например, необходимо получить список всех городов из таблицы КЛИЕНТ, полагая при этом, что из одного и того же города в гостинице могли останавливаться несколько клиентов. Для этого можно использовать ключевое слово DISTINCT.

 

SELECT DISTINCT Город FROM КЛИЕНТ

 

Результат выборки:

 

Город

--------------------

Алексеевка

Владимир

Иваново

Казань

Ковров

Москва

Петушки

Ставрово

Тверь

 

(9 row(s) affected)

 

Хотя со значением NULL не возможны операции сравнения, тем не менее DISTINCT различает, что записи дублируются по NULL, и выводит только одну запись. При включении ключевого слова DISTINCT в инструкция SELECT автоматически упорядочивает записи. Недостатком использования DISTINCT является большое время выполнения запроса, поскольку при этом проверяются все поля очередной добавленной записи на предмет обнаружения в них изменений в них по сравнению с предыдущей записью. Поэтому предпочтительнее использовать в запросе вместо DISTINCT предложение GROUP BY, которое будет рассмотрено ниже.

 



<== предыдущая лекция | следующая лекция ==>
Выражения в выборках | Группировка данных


Карта сайта Карта сайта укр


Уроки php mysql Программирование

Онлайн система счисления Калькулятор онлайн обычный Инженерный калькулятор онлайн Замена русских букв на английские для вебмастеров Замена русских букв на английские

Аппаратное и программное обеспечение Графика и компьютерная сфера Интегрированная геоинформационная система Интернет Компьютер Комплектующие компьютера Лекции Методы и средства измерений неэлектрических величин Обслуживание компьютерных и периферийных устройств Операционные системы Параллельное программирование Проектирование электронных средств Периферийные устройства Полезные ресурсы для программистов Программы для программистов Статьи для программистов Cтруктура и организация данных


 


Не нашли то, что искали? Google вам в помощь!

 
 

© life-prog.ru При использовании материалов прямая ссылка на сайт обязательна.

Генерация страницы за: 0.116 сек.