Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
6. Робота з SQL Server.docx
Скачиваний:
9
Добавлен:
22.11.2019
Размер:
121.61 Кб
Скачать

6.5.5. Сортування записів

Сортування - це впорядкування записів за зростанням або спаданням значень полів. Список полів, за якими здійснюється сортування, вказується в операнді ORDER BY. Порядок полів в цьому операнді визначає порядок сортування: спочатку записи впорядковуються за значенням поля, вказаного в цьому списку першим, потім записи, які мають однакові записи першого поля, впорядковуються за значенням другого поля і т.д.

Поля в списку позначаються іменами або номерами, відповідними до номерів полів у списку після слова SELECT. За замовчуванням сортування здійснюється в порядку зростання значень полів. Для протилежного напряму сортування необхідно вказати після імені поля описувач DESC.

Приклад запиту на сортування записів:

select *

from stat

order by prizv

Тут сортування записів задано за полем prizv.

Приклад запиту на сортування за двома полями:

select prizv, stag

from stat

order by prizv, stag desc

або

select prizv, stag

from stat

order by 1, 2 desc

В результатний набір даних увійдуть поля prizv, stag всіх записів. Записи посортовані за полями prizv, stag, при цьому значення поля stag впорядковано в порядку спадання.

Ще одна перевага мови SQL – це простота об’єднання даних, які містяться в декількох таблицях. Для цього після слова FROM перераховуються імена таблиць, із записів яких формується набір даних:

SELECT *

FROM <ім’я таблиці_1>, < ім’я таблиці_2>

або

SELECT <ім’я таблиці_1.*>, <ім’я таблиці_2.*>

FROM <ім’я таблиці_1>, <ім’я таблиці_2>

Результатний набір даних складають всі поля і всі записи з двох таблиць. Спочатку розміщаються поля першої таблиці, далі – поля другої таблиці.

Відбір конкретних полів із двох таблиць виконується оператором:

SELECT <ім’я таблиці_1.ім’я поля>, <ім’я таблиці_2.ім’я поля>

FROM <ім’я таблиці_1>, <ім’я таблиці_2>

Якщо імена полів унікальні (не повторюються), то у запиті імена таблиць у визначенні полів не вказуються:

SELECT <ім’я поля>, <ім’я поля>

FROM <ім’я таблиці_1>, <ім’я таблиці_2>

6.5.6. Зв’язування таблиць

У набір даних можна включати поля з різних таблиць. Таке включення полів називається зв’язуванням таблиць. Зв’язування таблиць може бути внутрішнім і зовнішнім.

Внутрішнє зв’язування таблиць - це найпростіший випадок, коли після слова SELECT перелічуються поля різних таблиць.

Таблиці stat і obsag містять основні і додаткові дані про рекламних агентів. Таблиці зв’язані відношенням „один до одного”, тобто кожному запису першої таблиці відповідає один запис іншої таблиці. Результатний набір даних є об’єднанням полів двох таблиць таким чином, ніби додаткові дані з’єднуються з основними. У таблицях можуть бути вибрані не всі поля, але це не міняє принципу з’єднання.

При використанні внутрішнього з’єднання таблиць з відношенням „один до одного” результат виконання запиту може містити надлишкову інформацію. Для того, щоб в результатному наборі даних отримати повну інформацію про здійснені операції, необхідно скористатися запитом з внутрішнім з’єднанням таблиць, зв’язаних відношенням „один до багатьох”. Наприклад,

select *

from stat, obsag

where stat.cod = obsag.cod

У результаті виконання запиту виведуться всі поля і записи таблиці obsag і всі поля таблиці stat.

select stat.cod, stat.prizv, obsag.suma

from stat, obsag

where stat.cod = obsag.cod

У результаті виконання запиту виведуться всі записи полів cod i prizv таблиці stat, а також поля suma таблиці obsag.

select *

from stat, obsag

where stat.cod = obsag.cod

order by stat.cod

У результаті виконання запиту виведуться всі поля і записи таблиці obsag і всі поля таблиці stat, причому записи будуть посортовані за полем cod.

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

Без використання операнда WHERE результатний набір даних буде містити також записи з рекламними агентами, що не виконали жодної операції.

При внутрішньому зв’язуванні всі таблиці, поля яких вказуються в SQL-запиті, є рівноправними.

При зовнішньому зв’язуванні таблиць можна вказати, яка з таблиць буде головною, а - яка підлеглою. При використанні зовнішнього зв’язування оператор FROM має такий формат:

FROM <Таблиця1> [< Вид зв’язування>] JOIN <Таблиця2>

ON <Критерії відбору>

Критерій відбору після слова ON задає умову включення записів в набір даних, зі зв’язаних таблиць, зліва і справа від слова JOIN. Яка з таблиць буде головною, визначає вид зв’язування:

  • LEFT - головна таблиця вказана зліва;

  • RIGHT - головна таблиця вказана справа (за замовчуванням).

Запит, в якому використовується зовнішнє зв’язування таблиць:

select *

from stat left join obsag

on stat.cod = obsag.cod

Зв’язуються таблиці „Штат рекламних агентів” (stat) і „Обсяг операцій„ (obsag). Головною є таблиця stat.