Студопедия

КАТЕГОРИИ:


Архитектура-(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)

Ключове слово AS




Можна зробити оператор SELECT більше зрозумілим, привласнивши таблиці псевдонім (його також називають зв'язаним ім'ям). Псевдонім можна привласнити таблиці як за допомогою ключового слова AS, так і без нього:

ім'я_таблиці AS псевдонім_таблиці

ім'я_таблиці псевдонім_таблиці

У наступному прикладі таблиці Publishers привласнюється псевдонім р:

USE pubs

SELECT p.pub_id, p.pub_name

FFOM publishers AS p

 

Якщо таблиці привласнений псевдонім, то у всіх явних посиланнях на таблицю в операторах Transact-SQL необхідно використовувати псевдонім, а не ім'я таблиці.

Типи інформації в списку вибору

У списку вибору дозволяється задавати різні типи інформації, наприклад прості вирази або скалярні підзапити. У наступному прикладі показано кілька елементів, які можна включити у список вибору:

SELECT FirstName + ' ' + LastNane AS "Employee Name",

IDENTITYCOL AS "Employee ID",

HomePhone, Region

FROM Northwind.dbo.Employees

ORDER BY LastName, FirstNarne ASC

Цей оператор поміщає в один стовпець імена й прізвища працівників, розділені пробілом. Ім'я стовпця, у якому зберігаються імена працівників - Employee Name. У результуючий набір також увійде стовпець із ідентифікатором, який буде названий Employee ID, а також стовпці HomePhone і Region. Результуючий набір упорядкований спочатку за прізвищем, а потім за іменем.

Конструкція INTO

Конструкція INTO дозволяє вказати, що для результуючого набору буде створена нова таблиця, ім'я якої задане цією конструкцією. За допомогою оператора SELECT...INTO вдається об'єднати дані з декількох таблиць або подань в одну таблицю. Його можна використовувати для створення нової таблиці з даними, обраними на зв'язаному сервері. У наступному прикладі оператор SELECT витягає значення зі стовпців FirstName і LastName таблиці Employees:

SELECT FirstName, LastName

INTO EmployeeNames

FROM Employees

Згенерирований результуючий набір створює таблицю EmployeeNames. У новій таблиці стовпці FirstName і LastName будуть містити значення з таблиці Employees. Результуючий набір не виводиться на вкладці Results, якщо не виконати явний запит до нової таблиці.

Конструкція FROM

Конструкцію FROM необхідно поміщати в кожному операторі SELECT, що витягає дані з таблиць або відображень. Ця конструкція дозволяє задати список таблиць і відображень, на стовпці яких посилаються список вибору і конструкція WHERE. Цим таблицям і відображенням можуть бути привласнені псевдоніми в конструкції AS. Конструкція FROM, крім того, дозволяє з'єднувати таблиці, задаючи умови з'єднання в конструкції JOIN. Конструкція FROM являє собою список імен таблиць, відображень і конструкцій JOIN, розділених комами. У наступному прикладі в операторі SELECT конструкція FROM задає таблицю Shippers:

SELECT * FROM Shippers

Конструкцію FROM також використовують і для визначення з'єднань між двома таблицями або відображеннями.

Конструкції WHERE, GROUP BY і HAVING

В операторі SELECT конструкції WHERE і HAVING визначають рядки вихідної таблиці, які необхідні для побудови результуючого набору. Конструкції WHERE і HAVING виконують роль фільтрів. Вони задають набір умов пошуку - для побудови результуючого набору вибираються лише ті рядочки, які відповідають умовам пошуку. Наприклад, в операторі SELECT конструкція WHERE повертає лише ті рядки, де район зазначений як штат Вашингтон (WA):

SELECT Customerl, CompanyName

FROM Northwind.dbo.Customers

WHERE Region = 'WA'

Конструкція HAVING, як правило (але не обов'язково), використовується разом з конструкцією GROUP BY. Конструкція HAVING задає додаткові фільтри, які застосовуються після завершення фільтрації, обумовленою конструкцією WHERE. У наступному прикладі в операторі SELECT використані конструкції WHERE, GROUP BY і HAVING:

SELECT OrdDLOrderID AS OrderID,

SUM(Ord1.Quantity) AS "Units Sold",

SUM(Ord1.UnitPrice * Ord1.Quantity) AS Revenue

FROM [Order Details] AS Ord1

WHERE OrdDLOrderID IN

(SELECT DISTINCT Ord2. OrderID

FROM [Order Details] AS Ord2

WHERE Ord2.UnitPrice > $100)

GROUP BY GrdDLOrderID

HAVING SUM(Ord1.Quantity) > 100

Тут конструкція WHERE повертає замовлення, вартість яких більше $100, а далі конструкція HAVING обмежує результат, відбираючи замовлення на більш ніж 100 одиниць товару. Конструкція GROUP BY обмежує рядки для кожного конкретного значення поля Ord1.

Конструкція GROUP BY

Конструкція GROUP BY використовується для одержання підсумкових значень у кожному рядку результуючого набору. При застосуванні оператора SELECT без конструкції GROUP BY агрегатні функції повертають лише одне підсумкове значення.

Після ключових слів GROUP BY вказують список стовпців, за яким виконується групування. Конструкція GROUP BY обмежує рядки результуючого набору. Для кожного конкретного значення стовпця або декількох стовпців, яки групуються, можливий тільки один рядок. У кожному рядку результуючого набору втримуються підсумкові дані, які пов'язані з деяким значенням стовпців, які групуються. Якщо в операторі SELECT є конструкція GROUP BY, SQL Server накладає обмеження на елементи списку вибору. У списку вибору можуть бути лише ті стовпці, що групуються, і вирази, які повертають тільки одне значення для кожного значення стовпців, що групуються, наприклад агрегатні функції (векторні агрегати), одним з параметрів яких є ім'я стовпця.

Як правило, конструкція HAVING використовується з конструкцією GROUP BY, хоча її дозволяється застосовувати й окремо. Будь-який вираз може стати таким, який групує, якщо він не містить агрегатних функцій. У конструкції GROUP BY необхідно задавати ім'я стовпця таблиці або відображення, а не ім'я стовпця результуючого набору, привласнене за допомогою конструкції AS. У конструкції GROUP BY припустимо вказати кілька стовпців у вигляді вкладених груп, тобто згрупувати таблицю за допомогою будь-якої комбінації стовпців.

Обробка конструкцій WHERE, GROUP BY і HAVING

Розуміння вірної послідовності, у якій застосовуються конструкції WHERE, GROUP BY і HAVING, допомагає програмувати ефективні запити:

· конструкція WHERE фільтрує рядки, які є результатом операцій, заданих у конструкції FROM;

· вихідна інформація конструкції WHERE групується за допомогою конструкції GROUP BY;

· рядки згрупованого результату фільтруються засобами конструкції HAVING.

Будь-які умови пошуку, які дозволяється застосовувати як до, так і після операції угруповання, варто вказувати в конструкції WHERE. У такий спосіб зменшують число рядків, які необхідно згрупувати. У конструкції HAVING варто вказувати тільки ті умови пошуку, які треба застосовувати після виконання операції угруповання.

Конструкція ORDER BY

Конструкція ORDER BY сортує результат запиту по одному або декількох полях. Сортування може бути як по зростанню (ASC), так і по убуванню (DESC). Якщо не заданий жоден з видів сортування, за замовчуванням передбачається ASC. Якщо в конструкції ORDER BY названо кілька стовпців, виконується вкладене сортування. Наступний оператор сортує рядки таблиці Titles спочатку за назвою видавництва (по убуванню), потім по типі (по зростанню, для кожного видавництва) і, нарешті, за ціною (також по зростанню, оскільки не заданий параметр DESC).




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


Дата добавления: 2015-06-29; Просмотров: 474; Нарушение авторских прав?; Мы поможем в написании вашей работы!


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



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




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