Студопедия
Новини освіти і науки:
МАРК РЕГНЕРУС ДОСЛІДЖЕННЯ: Наскільки відрізняються діти, які виросли в одностатевих союзах


РЕЗОЛЮЦІЯ: Громадського обговорення навчальної програми статевого виховання


ЧОМУ ФОНД ОЛЕНИ ПІНЧУК І МОЗ УКРАЇНИ ПРОПАГУЮТЬ "СЕКСУАЛЬНІ УРОКИ"


ЕКЗИСТЕНЦІЙНО-ПСИХОЛОГІЧНІ ОСНОВИ ПОРУШЕННЯ СТАТЕВОЇ ІДЕНТИЧНОСТІ ПІДЛІТКІВ


Батьківський, громадянський рух в Україні закликає МОН зупинити тотальну сексуалізацію дітей і підлітків


Відкрите звернення Міністру освіти й науки України - Гриневич Лілії Михайлівні


Представництво українського жіноцтва в ООН: низький рівень культури спілкування в соціальних мережах


Гендерна антидискримінаційна експертиза може зробити нас моральними рабами


ЛІВИЙ МАРКСИЗМ У НОВИХ ПІДРУЧНИКАХ ДЛЯ ШКОЛЯРІВ


ВІДКРИТА ЗАЯВА на підтримку позиції Ганни Турчинової та права кожної людини на свободу думки, світогляду та вираження поглядів



Приклад 11.

Фраза ORDER BY

Приклад 10.

Фраза HAVING

Приклад 9.

GROUP BY

Параметр <таблиця> можна не використовувати у тих випадках, коли користувач працює з однією таблицею.

Параметр <назва поля> – поле, по якому відбувається групування. Йому може передувати ім’я таблиці, якщо вибір виконується більше ніж з однієї таблиці.

Підрахувати кількість студентів на кожній із спеціальностей і вивести назву спеціальності і кількість студентів на ній. Для зручності скористаємось реченням GROUP BY.

Запит матиме вигляд:

SELECT
Speciality, COUNT(Speciality)
FROM
Students
GROUP BY
Speciality;

Тут функція Count повертає кількість записів у групі.

Результат - табл. 9

Таблиця 9

Speciality COUNT(Speciality)
Інформатика
Математика

 

Фраза HAVING є необов’язковою. Після того, як записи будуть згруповані за допомогою GROUP BY, фраза HAVING відбере ті значення з отриманих записів, що задовольнять умовам вибірки, які вказані у HAVING.

Синтаксис:

[HAVING <умова>]

Параметр <умова> – умова або умови відбору значень із отриманих записів.

Видати назви спеціальностей на які поступило більше трьох людей та точну їх кількість. Для цього у GROUP BY застосуємо HAVING.

Запит матиме вигляд:

SELECT
Speciality, COUNT(Speciality)
FROM
Students
GROUP BY
Speciality
HAVING
COUNT(Speciality)>3;

Результат - табл. 10

Таблиця 10

Speciality COUNT(Speciality)
Інформатика

 

Фраза ORDER BY є необов’язковою. Дана фраза сортує результуючі записи, що отримані після виконання запиту за зростанням або спаданням указаних полів чи поля. Його необхідно вказувати для сортування результату запиту. За замовчуванням задано порядок сортування за зростанням.

Синтаксис:

[ ORDER BY
{ <назва поля> [ ASC | DESC ] } [,…]]

<назва поля> – поле, за яким відбувається сортування. ASC (DESC) – зареєстровані слова для розташування елементів у зростаючому (спадному) порядку.

Вивести на екран всю інформацію про студентів, яка відсортована у спаданні за віком студентів, а потім у зростанні за їх прізвищами.

Запит матиме вигляд:

SELECT *
FROM
Students
ORDER BY
Age DESC, Surname ASC;

Результат – табл. 11

Таблиця 11

Num Surname Name Age Speciality
Петрів Назар  
Селань Віктор Математика
Крупик Віктор Інформатика
Прапій Степан Інформатика
Працків Оксана Інформатика
Ятрів Олег Інформатика

 

5.2 Операція JOIN — об’єднання таблиць

Для задання об’єднання кількох таблиць у фразі FROM виконують операцію JOIN,яка реалізує операцію з’єднання реляційної алгебри.

 

Синтаксис:

FROM
<таблиця1> [AS <,псевдонім>]
[ INNER | LEFT | RIGHT | FULL ] JOIN
<таблиця2> [AS <,псевдонім>]
ON
{<таблиця1>.<поле1>} <операція> {<таблиця2>.<поле2>}

Тут <таблиця1>, <таблиця2> – імена таблиць, записи яких підлягають об’єднанню; <поле1>, <поле2> – імена полів, що об’єднуються; якщо поля не є числовими, то повинні мати однаковий тип даних і містити дані одного виду; поля можуть мати різні імена, <операція> – будь-яка операція порівняння.

Якщо в результат вибірки необхідно включити всі рядки з обох таблиць, що задовольняють умові вибірки, використовується операція INNER JOIN. При цьому результуюча таблиця міститиме всі заголовки обох таблиць.

 

Нехай дано дві таблиці Т1 і Т2:


T1

F1 F2
A
B
C
D

 


T2

F3 F4
B
C
F
G

 

 


Задамо запит:

SELECT *

FROM

T1 INNER JOIN T2;

Результатом такого запиту буде таблиця :

F1 F2 F3 F4
A B
B C
C F
D G

 

Задамо запит:

SELECT *
FROM
T1 join T2 on T1.F1=T2.F3;

Результатом такого запиту буде таблиця 12, яка містить співпадаючі атрибути у полях F1 таблиці Т1 і F3 таблиці Т2:

Таблиця 12

F1 F2 F3 F4
B B
C C

 

Операція LEFT JOIN використовується для створення лівого зовнішнього об’єднання, при якому всі записи з першої (лівої) таблиці включаються в динамічний набір, навіть якщо в другій (правій) таблиці немає відповідних до них записів. Якщо у лругій таблиці, з якою виконується з’єднання, не має відповідних рядків, то замість значень її полів додається значення Null.

Задамо запит:

SELECT *
FROM
T1 left join T2 on T1.F1=T2.F3;

Результат – табл.13

Таблиця 13

F1 F2 F3 F4
A null null
B B
C C
D null null

 

Операція RIGHT JOIN використовується для створення правого зовнішнього об’єднання, при якому всі записи з другої (правої) таблиці включаються в динамічний набір, навіть якщо в першій (лівій) таблиці немає відповідних до них записів. Якщо у першій таблиці, з якою виконується з’єднання, не має відповідних рядків, то замість значень її полів додається значення Null.

Операції JOIN можуть бути вкладеними.

Синтаксис:

SELECT <поля>
FROM
<таблиця1> INNER JOIN ( <таблиця2> INNER JOIN
[ ( ] <таблиця3> [INNER JOIN
[ ( ] <таблицяX> [INNER JOIN…)]
[ ON <таблиця3>.<поле3> <операція> <таблицяХ>.<полеХ> ]
[ ON <таблиця2>.<поле2> <операція> <таблиця3>.<поле3>) ]
ON <таблиця1>.<поле1> <операція>

 

 

5.3 Вкладені підзапити

SQL дозволяє використовувати одні запити всередені інших запитів, тобто вкладати один запит у інший. При цьому верхнього рівня оператор SELECT використовує результат внутрішнього оператора SELECT для визначення отримання кінцевого результату всього запиту. Внутрішні оператори можуть бути розміщені у реченнях WHERE і HAVING і в такому разі отримують назву підзапитів, або вкладених запитів. Крім того, внутрішні оператори SELECT можуть використовуватись в операторах INSERT, UPDATE і DELETE.

Існує три типи підзапитів, а саме:

ñ скалярний підзапит який повертає значення вибране із перетину одного стовпця і одного запису чи результату виразу;

ñ рядковий підзапит який повертає значення декількох стовпців таблиці у вигляді одного рядка;

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

При побудові підзапитів потрібно дотримуватись наступних правил і обмежень:

1. У підзапитах не повинна використовуватись фраза ORDER BY, хоча вона може бути присутня у зовнішньому запиті.

2. Список у визначенні SELECT підзапиту повинні складатись із імен окремих стовпців або складених із них виразів за виключенням того випадку, коли у підзапиті використовується ключове слово EXIST. Дане слово використовується тільки разом із підзапитом і результатом його дії є логічне значення True чи False. Істина буде в тому випадку коли у результуючій таблиці підзапиту присутній хоча би один рядок.

3. За замовчуванням імена стовпців у підзапиті відносяться до таблиці, ім’я якої вказано у фразі FROM.

4. Якщо підзапит є одним із двох операндів, які беруть участь в операції порівняння, то підзапит повинен бути вказаний у правій частині даної операції.

5. У вкладених підзапитах використовується предикат IN ( Select … From … Where … IN).

6. У підзапитах, які повертають один стовпець числових значень, можуть використовуватись ключові слова ALL і ANY.

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

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


Читайте також:

  1. Абсолютні синоніми (наприклад, власне мовні й запозичені) в одному тексті ділового стилю вживати не рекомендується.
  2. Алгоритм однофакторного дисперсійного аналізу за Фішером. Приклад
  3. Базові та прикладні класифікації
  4. В чому полягає явище тунелювання через потенціальний бар’єр, наведіть приклади.
  5. Визначення і приклади
  6. Врахування витраті втрат електроенергії. Приклад складання електробалансу.
  7. Головною метою наукової діяльності в системі вищої освіти повинен стати розвиток фундаментальних та приклад­них досліджень.
  8. Деякі приклади застосування ППП
  9. Дієслова з префіксом дис-виражають значення ліквідації дії, названої безпрефіксним дієсловом, наприклад: гармонізувати – дисгармонізувати, асоціювати – дисасоціювати.
  10. Для одиничного і дрібносерійного виробництва норма витрати визначається як укрупнена, наприклад, на 1000 станко-годин роботи даного виду роботи устаткування
  11. Додаток И - Приклад виконання ремонтного креслення деталі
  12. Етикет – (прикріплювати) установлений порядок поведінки в товаристві, певному оточенні, наприклад, придворний етикет, дипломатичний етикет.




Переглядів: 702

<== попередня сторінка | наступна сторінка ==>
Фраза GROUP BY | Приклад 13.

Не знайшли потрібну інформацію? Скористайтесь пошуком google:

  

© studopedia.com.ua При використанні або копіюванні матеріалів пряме посилання на сайт обов'язкове.


Генерація сторінки за: 0.006 сек.