Студопедия

КАТЕГОРИИ:


Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748)

SELECT Фамилия, Должность




IN и NOT IN

Предикаты IN (в) и NOT IN (не в) применяются для проверки вхождения какого-либо значения в заданный список значений. Например, для выборки записей о клиентах из некоторых регионов можно использовать такое выражение:

SELECT Имя, Адрес FROM Клиенты

WHERE Регион IN ('Северо-запад', 'Ставропольский край', 'Иркутская область');

Если требуется получить данные обо всех клиентах не из Москвы и Северо-Запада, то можно использовать предикат NOT IN

SELECT имя, Адрес FROM Клиенты

WHERE Регион NOT IN (' Москва', 'Санкт-Петербург');

 

LIKE и NOT LIKE

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

Критерий частичного соответствия задается с помощью двух символов-масок: знака процента (%) и подчеркивания (_). Знак процента означает любой набор символов, в том числе и пустой, а символ подчеркивания - любой одиночный символ.

Например, чтобы выбрать записи о клиентах, у которых номера телефонов начинаются с 348, можно использовать такое выражение:

SELECT Имя, Адрес, Телефон FROM Клиенты

WHERE Телефон LIKE '348%';

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

SELECT Имя, Адрес, Телефон

FROM Клиенты WHERE Адрес LIKE '%Санкт-Петербург% ';

Если вы хотите исключить всех клиентов, проживающих в Москве, то воспользуйтесь таким выражением:

SELECT Имя, Адрес, Телефон FROM Клиенты WHERE Адрес NOT LIKE '%Москва%';

Возможно, вам потребуется выбрать записи, содержащие символы процента и/или подчеркивания. Тогда необходимо, чтобы такие символы воспринимались интерпретатором SQL не как символы-маски. Чтобы знак процента или подчеркивания воспринимался буквально, перед ним необходимо указать специальный управляющий символ. Этот символ можно определить произвольно, лишь бы он не встречался в качестве элемента данных. В следующем примере показано, как это можно сделать:

SELECT Имя, Адрес, Процент скидки FROM Клиенты WHERE Процент скидки LIKE '20#%'

ESCAPE ' # ';

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

 

IS NULL

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

SELECT Имя, Адрес, Регион FROM Клиенты

WHERE Адрес IS NULL;

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

SELECT Имя, Адрес, Регион FROM Клиенты

WHERE Адрес IS NOT NULL;

Не следует использовать предикаты сравнения с NULL, такие как

Адрес = NULL.

 

Предикаты для вложенных запросов

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

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

ALL, SOME, ANY

Предикаты АLL (все), SOME (некоторый), ANY (любой) в действительности представляют собой кванторы, известные в математической логике как кванторы всеобщности и существования. ALL — квантор всеобщности, а SOME и ANY, являющиеся синонимами в SQL, — кванторы существования. Заметим, что в переводе на русский слово ANY следовало бы понимать как квантор всеобщности ("любой" означает "все"), однако в английском языке есть различные варианты значений этого слова.

Применение ключевого слова ALL следует понимать как "для всех" или "для каждого". Ключевые слова SOME и ANY следует понимать как "хотя бы какой-нибудь один".

В языке SQL ключевые слова SOME и ANY имеют одинаковый смысл, отличающийся от ALL.

 

EXISTS

Обработка данных часто состоит из нескольких этапов. Так, сначала производится некоторая выборка данных, а затем выполняются какие-то манипуляции с ней. Однако, выполняя запрос на выборку, мы далеко не всегда можем быть уверенными, что ответ содержит хотя бы одну непустую строку. Если ответ на запрос пуст, то бессмысленно производить дальнейшую обработку данных. Таким образом, полезно знать, содержит ли ответ на запрос какие-либо данные. Для этого предназначен предикат EXISTS (существует). Он становится истинным только тогда, кода результатная таблица, полученная в ответ на запрос, содержит хотя бы одну запись.

 

UNIQUE

Предикат UNIQUE (уникальный) имеет такой же смысл, как и EXISTS, но при этом для его истинности требуется, чтобы все записи в результатной таблице не только существовали, но и были уникальны (т. е. не повторялись).

DISTINCT

Предикат DISTINCT (отличающийся, особый) почти такой же, как и UNIQUE. Отличие этих предикатов обнаруживается применительно к значениям NULL. Так, если в результатной таблице все записи уникальны (предикат UNIQUE истинен), то и предикат DISTINCT тоже истинен (т. е. если все записи уникальны, то они и отличающиеся). С другой стороны, если в результатной таблице имеются хотя бы две неопределенные записи, то предикат DISTINCT ложен, хотя предикат UNIQUE истинен.

 

OVERLAPS

Предикат OVERLAPS (перекрывает) используется для определения, перекрываются ли два интервала времени. Интервал времени можно задать двумя способами: в виде начального и конечного моментов или в виде начального момента и длительности. Далее приведены примеры задания интервала времени:

· (TIME '12: 25: 30’, TIME '14: 30: 00') — интервал заданный начальным и конечным моментами;

· (TIME ' 12: 45: 00 ', INTERVAL ' 2 ' HOUR) — интервал, заданный начальным моментом и длительностью в часах.

Выражение с предикатом OVERLAPS можно записать, например, так:

(TIME '12:25:30', TIME '14:30:00') OVERLAPS (TIME '12:45:00', INTERVAL '2' HOUR)

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

 

MATCH

Предикат MATCH применяется для проверки сохранения ссылочной целостности при модификации данных, т. е. при добавлении, изменении и удалении записей

.

SIMILAR

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

Предположим, что в некоторой таблице имеется столбец OC, содержащий названия операционных систем. Нужно выбрать записи, соответствующие Windows NT, Windows XP и Windows 98. Тогда в выражении запроса можно использовать такой оператор

WHERE:

WHERE OC SIMILAR TO '(Windows (NT|XP|98))';

Предикат впервые появился в SQL:1999.

FROM Сотрудники WHERE Отдел=102;

По-русски данное выражение звучит так:

ВЫБРАТЬ Фамилия, должность ИЗ сотрудники ПРИ УСЛОВИИ, ЧТО отдел = 102;

Чтобы изменить значение "иванов" на "Петров" столбца Фамилия,

достаточно выполнить следующий запрос:




Поделиться с друзьями:


Дата добавления: 2017-01-14; Просмотров: 293; Нарушение авторских прав?; Мы поможем в написании вашей работы!


Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет



studopedia.su - Студопедия (2013 - 2024) год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! Последнее добавление




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