Помощь в написании студенческих работ
Антистрессовый сервис

Отбор строк из таблиц

РефератПомощь в написанииУзнать стоимостьмоей работы

Символ пропуска определяется в предложении ESCAPE в виде строки, состоящей из одного символа. В следующем примере в качестве символа пропуска используется литера «@», и шаблон обеспечивает выборку адресов, в которых встречается сочетание символов «А_В%» и которые заканчиваются литерой «@»: Шаблону Эта конструкция позволяет определить, соответствует ли значение данных в столбце некоторому шаблону… Читать ещё >

Отбор строк из таблиц (реферат, курсовая, диплом, контрольная)

SQL-запросы, считывающие из таблицы все строки, полезны при просмотре базы данных и создании итоговых отчетов.

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

Предложение WHERE содержит условие поиска, определяющее, какие именно строки требуется прочитать. Например, чтобы получить информацию о том, кто проживает в квартире, но адресу «802−12», нужно выполнить оператор

SELECT FIO FROM PERSON WHERE ADR='802 — 12'.

Фактически условие поиска служит фильтром для строк таблицы. Строки, удовлетворяющие условию поиска, проходят через фильтр и становятся частью таблицы результатов запроса (рис. 3.5).

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

  • 1. Сравнение. Значение одного выражения сравнивается со значением другого выражения.
  • 2. Проверка на принадлежность диапазону значений.

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

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

Предложение WHERE в роли фильтра.

Рис. 3.5. Предложение WHERE в роли фильтра.

  • 4. Проверка на соответствие шаблону. Проверяется, соответствует ли строковое значение, содержащееся в столбце, определенному шаблону.
  • 5. Проверка на равенство значению NULL. Проверяется, содержится ли в столбце значение NULL.

Сравнение Имеется шесть различных способов сравнения значений двух выражений (рис. 3.6). Например, можно вывести список жителей, родившихся после определенной даты:

SELECT FIO, ADR FROM PERSON WHERE RDATE >'12/31/1970'.

СУБД при сравнении значений двух выражений может вычислить один из таких результатов:

  • 1) если сравнение истинно, то результат проверки имеет значение TRUE;
  • 2) если сравнение ложно, то результат проверки имеет значение FALSE;
  • 3) если хотя бы одно из двух выражений имеет значение NULL, то результатом проверки будет значение NULL.

В таблицу результатов запроса включаются только те строки, для которых условие поиска имеет значение TRUE. Например, если в предложении WHERE можно было бы задать условие SUMD = NULL, то в таблице результатов не оказалось бы ни одной строки, поскольку в этом случае результатом проверки был бы NULL для любых значений, имеющихся в столбце SUMD. Поэтому, чтобы нс искушать пользователя, в сравнениях запрещено использовать ключевое слово NULL.

Синтаксическая диаграмма сравнения.

Рис. 3.6. Синтаксическая диаграмма сравнения.

Проверка на принадлежность диапазону значений В условие поиска этого вида входят три выражения (рис. 3.7):

  • 1) выражение, которое задает проверяемое значение;
  • 2) выражение, задающее нижний предел проверяемого диапазона;
  • 3) выражение, задающее верхний предел проверяемого диапазона.

Типы данных во всех трех выражениях должны быть сравнимыми.

Синтаксическая диаграмма проверки на принадлежность диапазону значений.

Рис. 3.7. Синтаксическая диаграмма проверки на принадлежность диапазону значений.

Например, формирование списка жителей, родившихся в I квартале 1955 г., задается оператором.

SELECT FIO, ADR FROM PERSON.

WHERE RDATE BETWEEN '01/01/1955' AND '03/31/1955'.

При проверке на принадлежность диапазону верхний и нижний пределы считаются частью диапазона.

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

SELECT FIO, ADR FROM PERSON.

WHERE (SUMD*0.13) NOT BETWEEN 100.00 AND 1200.00.

В стандарте SQL1 определены следующие правила обработки значений NULL при проверке принадлежности диапазону (рис. 3.8):

1) если проверяемое выражение (а) имеет значение NULL либо оба выражения (б), определяющие диапазон, имеют значения NULL, то проверка BETWEEN возвращает значение NULL;

Правила обработки значений NULL.

Рис. 3.8. Правила обработки значений NULL.

  • 2) если выражение, определяющее нижний предел диапазона, имеет значение NULL, то проверка BETWEEN возвращает значение FALSE тогда, когда проверяемое значение больше верхнего предела диапазона, и значение NULL в противном случае;
  • 3) если выражение, определяющее верхний предел диапазона, имеет значение NULL, то проверка BETWEEN возвращает значение FALSE, если проверяемое значение меньше нижнего предела, и значение NULL в противном случае.

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

Синтаксическая диаграмма проверки на принадлежность множеству.

Рис. 3.9. Синтаксическая диаграмма проверки на принадлежность множеству.

Например, следующий оператор выводит список жителей с заданными номерами:

SELECT * FROM PERSON.

WHERE NOM IN (1,3,5,9).

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

SELECT * FROM PERSON.

WHERE RDATE IN (‘02/12/55'.'11/11/11').

С помощью проверки NOT IN можно обнаружить значения данных, не являющиеся членами заданного множества (см. учебную БД на рис. 2.11):

SELECT * FROM FLAT.

WHERE KCATEGORY NOT IN (‘П','K').

В результате будут выбраны строки таблицы FLAT со сведениями о квартирах категории 'Н', г. е. о неприватизированных квартирах.

Проверяемое выражение может быть любым допустимым выражением, однако обычно оно представляет собой имя столбца.

Если результатом проверяемого выражения является значение NULL, то проверка возвращает значение NULL.

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

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

SELECT * FROM PERSON.

WHERE FIO = ‘Иванов Иван Иванович'.

Однако, если необходимо получить сведения о всех Ивановых, то следует воспользоваться проверкой на соответствие шаблону (рис. 3.10).

Синтаксическая диаграмма проверки на соответствие.

Рис. 3.10. Синтаксическая диаграмма проверки на соответствие.

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

Подстановочный знак «%» совпадает с любой последовательностью из нуля или более символов. Например, чтобы получить сведения обо всех Ивановых, нужно воспользоваться шаблоном:

SELECT * FROM PERSON.

WHERE FIO LIKE ‘Иванов%'.

Ключевое слово LIKE указывает, что необходимо сравнивать содержимое столбца FIO с шаблоном ‘Иванов%', которому соответствуют все фамилии, начинающиеся словом «Иванов», в том числе «Ивановский». Чтобы получить сведения только о мужчинах Ивановых или только о женщинах Ивановых, следует использовать шаблон ‘Иванов %' или ‘Иванова %' соответственно.

Подстановочный знак «_» (подчеркивание) совпадает с любым отдельным символом. Например, для получения сведений о жителях, проживающих в 1-м микрорайоне, можно воспользоваться таким шаблоном:

SELECT * FROM PERSON.

WHERE ADR LIKE ‘Зеленоград, 1__-%'.

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

С помощью конструкции NOT LIKE можно выбирать строки, которые не соответствуют шаблону.

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

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

X

У

Z.

АВ%СО.

A_D%E.

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

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

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

Символ пропуска определяется в предложении ESCAPE в виде строки, состоящей из одного символа. В следующем примере в качестве символа пропуска используется литера «@», и шаблон обеспечивает выборку адресов, в которых встречается сочетание символов «А_В%» и которые заканчиваются литерой «@»:

Отбор строк из таблиц.

Возможность использования символов пропуска реализована не во всех СУБД, поэтому применения предложения ESCAPE стараются избегать.

Проверка на равенство значению NULL.

Результатом вычисления рассмотренных условий поиска может одно из трех значений: TRUE, FALSE или NULL (например, если один из столбцов содержит значение NULL). В ряде случаев бывает необходимо проверять значения в столбцах на равенство значению NULL и помещать соответствующие строки в таблицу результатов. Для этого в языке SQL предусмотрена специальная проверка на равенство значению NULL (рис. 3.11).

Синтаксическая диаграмма проверки на равенство значению NULL.

Рис. 3.11. Синтаксическая диаграмма проверки на равенство значению NULL.

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

SELECT * FROM TPHONE.

WHERE ADR IS NULL.

Инвертированная форма проверки на NULL позволяет отыскать строки, которые не содержат значения NULL. Например, список номеров телефонов, установленных в квартирах, формирует оператор

SELECT * FROM TPHONE.

WHERE ADR IS NOT NULL.

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

Показать весь текст
Заполнить форму текущей работой