Исходники
Статьи
Языки программирования
.NET Delphi Visual C++ Borland C++ Builder C/С++ и C# Базы Данных MySQL MSSQL Oracle PostgreSQL Interbase VisualFoxPro Веб-Мастеру PHP HTML Perl Java JavaScript Протоколы AJAX Технология Ajax Освоение Ajax Сети Беспроводные сети Локальные сети Сети хранения данных TCP/IP xDSL ATM Операционные системы Windows Linux Wap Книги и учебники
Скрипты
Магазин программиста
|
SELECT - операторы сравнения, логические и специальные.На предыдущем шаге мы использовали оператор равенства = в предложении WHERE для выбора записей из таблиц. Transact-SQL позволяет строить сложные условия отбора записей и для этого предоставляет операторы отношения, логические операторы и специальные операторы. Операторы отношения это:
Предположим, что нам надо увидеть всех заказчиков в рейтингом выше 200:
SELECT * FROM Customers WHERE rating > 200Результат таков: CNUM CNAME CITY RATING SNUM ----- --------------------------------- ---------- ------- ----- 2004 Концерн "Дети лейтенанта Шмидта" Бобруйск 300 1002 2008 ОАО "Валют-транзит" Караганда 300 1007 Логические операторы:
Использование логических операторов значительно увеличивает возможности
команды SELECT. Например, для просмотра заказчиков из Караганды, которые
имеют рейтинг выше 200 достаточно команды:
SELECT * FROM Customers WHERE city = 'Караганда' AND rating > 200В нашей БД имеется только один заказчик, удовлетворяющий этому условию. CNUM CNAME CITY RATING SNUM ----- --------------------------------- ---------- ------- ----- 2008 ОАО "Валют-транзит" Караганда 300 1007Если использовать OR, то получим всех заказчиков, находящихся в Караганде или имеющих рейтинг выше 200: SELECT * FROM Customers WHERE city = 'Караганда' OR rating > 200Результат запроса: CNUM CNAME CITY RATING SNUM ----- --------------------------------- ---------- ------- ----- 2004 Концерн "Дети лейтенанта Шмидта" Бобруйск 300 1002 2008 ОАО "Валют-транзит" Караганда 300 1007NOT используется для инвертирования значений. Запрос: SELECT * FROM Customers WHERE city = "Караганда" OR NOT rating > 200выдаст: CNUM CNAME CITY RATING SNUM ----- -------------------- --------- ------- ------ 2001 ТОО Рога и копыта Москва 100 1001 2002 AО Бендер и К Одесса 200 1003 2003 Фирма ХХХ Рязань 200 1002 2006 Clemens Лондон 100 1001 2007 ОАО "ООО" ТОМСК 100 1004 2008 ОАО "Валют-транзит" Караганда 300 1007 Для группировки выражений Transact-SQL позволяет использовать
круглые скобки ( ). Например:
SELECT * FROM Customers WHERE NOT (city = 'Караганда' OR rating > 200)Этот запрос отбирает заказчиков, которые НЕ находятся в Караганде или НЕ имеют рейтинг больше 200. Результат: CNUM CNAME CITY RATING SNUM ----- ------------------ ------- ------- ----- 2001 ТОО Рога и копыта Москва 100 1001 2002 AО Бендер и К Одесса 200 1003 2003 Фирма ХХХ Рязань 200 1002 2006 Clemens Лондон 100 1001 2007 ОАО "ООО" ТОМСК 100 1004 Рассмотрим теперь специальные операторы: IN, BETWEEN, LIKE, IS NULL. Оператор IN определяет список значений, в который должно входить значение поля. Например, если Вы хотите найти всех продавцов находящихся в Москве или Хабаровске, Вы должны использовать такой запрос: SELECT * FROM Salespeople WHERE city = 'Москва' OR city = 'Хабаровск'Но есть есть более простой способ: SELECT * FROM Salespeople WHERE city IN ( 'Москва', 'Хабаровск' )Результат этого запроса: SNUM SNAME CITY COMM ----- ------- ---------- ----- 1001 Иванов Москва 12.0 1002 Петров Хабаровск 13.0Набор значений для оператора IN заключается в круглые скобки, значения разделяются запятыми. Оператор BETWEEN похож на оператор IN. В отличие от списка допустимых значений BETWEEN определяет диапазон значений. В запросе Вы должны указать слово BETWEEN затем начальное значение, ключевое слово AND и конечное значение. Первое значение должно быть меньше второго. Следующий запрос выберет Агентов с комиссионными между 10 и 12: SELECT * FROM Salespeople WHERE comm BETWEEN 10 AND 12 SNUM SNAME CITY COMM ----- -------- ---------- ----- 1001 Иванов Москва 12.0 1003 Егоров Караганда 10.0 1004 Сидоров Сочи 11.0 Оператор LIKE применим только к символьным полям, с которыми он используется, чтобы находить подстроки. Т.е. он ищет поле символа, чтобы видеть совпадает ли с условием часть его строки. В качестве условия он использует специальные символы:
SELECT * FROM Customers WHERE cname LIKE 'О%' CNUM CNAME CITY RATING SNUM ----- -------------------- ---------- ------- ----- 2008 ОАО "Валют-транзит" Караганда 300 1007 2007 ОАО "ООО" ТОМСК 100 1004LIKE удобен поиске значений, если Вы точно не помните как они пишутся. Вы просто можете использовать ту часть, которую помните. Так как NULL указывает на отсутствие значения Вы не можете знать каков бужет результат любого сравнения с NULL. Часто Вам различать строки, содержащие значения NULL в каком-либо столбце. Для этого существует специальный оператор IS NULL. Выберем из нашей БД заказчиков с NULL значениями в столбце city: SELECT * FROM Customers WHERE city IS NULLВ БД таких записей нет, но они могут возникнуть при добавлении нового заказчика без прикрепления к нему агента. Теперь Вы знаете как можно строить запросы к таблицам, используя любые условия. Далее следует: агрегатные функции и просто функции, GROUP BY,ORDER BY. |
Форум Программиста
Новости Обзоры Магазин Программиста Каталог ссылок Поиск Добавить файл Обратная связь Рейтинги
|