Продолжим изучение возможностей команды SELECT - основы Transact-SQL. Она способна извлечь строго определенную информацию из таблицы. Для начала рассмотрим выбор определенных столбцов таблицы. Это достигается исключением столбцов из команды SELECT. Запрос:
SELECT sname, comm FROM Salespeopleвыведет следующее:
sname comm -------- ----------- Иванов 12 Петров 13 Егоров 10 Сидоров 11 Шилин 15
DISTINCT - аргумент, который обеспечивает устранение двойных значений в Вашей команде SELECT. Предположим, что Вы хотите знать какие агенты в настоящий момент имеют заказы в таблице заказов. Вам не нужно знать сколько заказов имеет каждый, Вам нужен только список кодов агентов (snum). Поэтому Вы можете ввести:
SELECT snum FROM OrdersИ получите такой результат:
snum ----------- 1007 1004 1001 1002 1007 1002 1001 1003 1002 1001Как видим коды дублируются. Для получения списка без дубликатов надо ввести следующее:
SELECT DISTINCT snum FROM OrdersРезультат уже другой:
snum ----------- 1001 1002 1003 1004 1007DISTINCT может указываться только один раз в команде SELECT, если выбираются несколько столбцов, то DISTINCT опускает строки, где все выбранные поля идентичны. Строки, в которых некоторые значения одинаковы, а некоторые различны - будут сохранены.
Вместо DISTINCT Вы можете указать ALL. Это будет иметь противоположный эффект, дублирование строк сохранится. Поскольку это тот же самый случай, когда не указывается никакой аргумент, то ALL по существу лишь пояснительный аргумент.
Таблицы имеют тенденцию становиться очень большими. Поскольку обычно только некоторые их них интересуют Вас в данное время имеется возможность устанавливать критерии, чтобы определить какие строки будут выбраны.
WHERE - предложение команды SELECT, которое позволяет задавать условие, которое может быть верным или неверным для любой строки таблицы. Команда извлекает только те строки из таблицы, для которых это условие верно. Предположим, что Вы хотите видеть имена и комиссионные всех агентов в Москве. Нет ничего проще:
SELECT sname, city FROM Salespeople WHERE city = 'Москва'
Когда в запросе имеется предложение WHERE SQL Server просматривает всю таблицу построчно и исследует каждую строку, чтобы определить верно ли утверждение.
Строковые константы типа 'Москва' в Transact-SQL ограничиваются либо апострофами ', либо кавычками ".
Теперь попробуем построить запрос с числовым полем в предложении WHERE. Поле rating таблицы Заказчики (Customers) предназначено, чтобы разделять заказчиков на группы, основанные на некоторых критериях, которые могут быть получены через это число. Например это может форма оценки кредита и оценка, зависящая от объема предыдущих заказов. Выберем всех заказчиков с рейтингом 100:
SELECT * FROM Customers WHERE rating = 100Кавычки здесь не используются, т.к. рейтинг - это числовое поле. Результат запроса:
CNUM CNAME CITY RATING SNUM ----- ------------------ ------- ----------- ----------- 2001 ТОО Рога и копыта Москва 100 1001 2006 Clemens Лондон 100 1001 2007 ОАО "ООО" ТОМСК 100 1004
Теперь Вы знаете несколько способов как заставить таблицу давать Вам ту информацию какую Вы хотите. Самое важное, что у Вас естьвозможность устанавливать условие, которое выделяет строку из тысяч строк в таблице. Условия могут быть очень сложными, именно это и делает язык SQL таким мощным.