SlideShare a Scribd company logo
Мова вибірки даних
1. Багатотабличні запити
Більшість СУБД підтримую три варіанти запитів до множини таблиць з допомогою одного
SQL-запиту на вибірку: з’єднання, підзапити і об'єднання.
З'єднання використовується у запитах SELECT для генерації наборів, містять стовпці з
декількох таблиць, які зберігають пов'язані дані. Множина стовпців, вибраних з кожної
таблиці, називаються потоками. Процес з'єднання об'єднує вибрані стовпці в єдиний
вихідний набір даних. Стандарти SQL підтримують два варіанти синтаксису з'єднання:
неявне і явне з'єднання.
Неявне з'єднання відповідає більш старому SQL-стандарту (89). Таблиці, які беруть участь у
з'єднанні, задаються списком в реченні FROM запиту SELECT. Умови для зв'язку таблиць
задаються серед умов пошуку пропозиції WHERE. Не існує спеціального синтаксису для
вказівки, які умови використовуються для пошуку, а які - для з'єднання.
У стандарті SQL92 введений більш універсальний синтаксис явного з'єднання, яке
здійснюється за допомогою пропозиції JOIN., яка дає можливість відділити умови
з'єднання від умов пошуку.
Підзапитом є запит, взятий у круглі дужки і вкладений в пропозицію SELECT, FROM, WHERE
або HAVING основного (зовнішнього) запиту SELECT або інших запитів, що
використовують ці пропозиції.
Запити об'єднання, реалізовані за допомогою пропозиції UNION, дають можливість
вибрати рядки з різних наборів даних в об'єднаний набір даних, причому підмножини
не обов'язково повинні бути пов'язані одна з одною - просто вони повинні відповідати
структурно.
1.1. Неявне з’єднання таблиць
де
Алгоритм виконання запитів на неявне з'єднання таблиць складається
з наступних етапів:
1) обчислюється декартовий добуток таблиць, що входять у з'єднання,
тобто для кожного рядка однієї з таблиць беруться всі можливі
комбінації рядків з інших таблиць;
2) проводиться відбір рядків з отриманої таблиці згідно з умовою
пошуку в пропозиції WHERE;
3) здійснюється проекція (виведення) по стовпцях, що зазначені у
списку елементів, які повертаються.
1.1. Неявне з’єднання таблиць
З'єднання таблиць - це окремий
випадок операції
декартового добутку (або
просто добутку). Декартовий
добуток двох таблиць - це
таблиця, яка складається з
усіх можливих пар рядків обох
таблиць. У SQL декартовий
добуток виражається
зазначенням імен таблиць
(множників) у фразі FROM і
вказівкою всіх їх стовпців у
фразі SELECT. Так, добуток
таблиць FACULTY і
DEPARTMENT виражається
наступним чином:
1.1. Неявне з’єднання таблиць
Серед запитів на з'єднання таблиць найбільш поширені запити до таблиць,
які зв'язані за допомогою відношенням батько-нащадок. Щоб
використовувати в запиті відношення батько-нащадок, необхідно задати
<условие_соединения>, в якому первинний ключ батьківської таблиці
порівнюється із зовнішнім ключем таблиці-нащадка (зазвичай імена цих
стовпців збігаються в зв'язаних таблицях). Зв'язок повинен завжди явно
вказуватися в пропозиції WHERE запиту SELECT.
1.1. Неявне з’єднання таблиць. Псевдоніми
1.2. Явне з’єднання таблиць
де
Таким чином,
існують різні типи
явного з'єднання
таблиць.
Перехресне
з'єднання
CROSS JOIN
• використовується без конструкції ON <условие_соединения>.
• CROSS JOIN еквівалентний декартовому добутку таблиць. Тобто конструкція ... FROM A
CROSS JOIN B повністю еквівалентна конструкції ... FROM A, B
• використовується без конструкції ON <условие_соединения>.
• CROSS JOIN еквівалентний декартовому добутку таблиць. Тобто конструкція ... FROM A
CROSS JOIN B повністю еквівалентна конструкції ... FROM A, B
Уточнені
з'єднання
• припускають явне завдання умови з'єднання після ON або імен стовпців, по яких проводиться
з'єднання, після USING:
• INNER JOIN - «внутрішнє» з'єднання. У таблицях з'єднуються тільки ті рядки, для яких виконується
<условие_соединения>;
• OUTER JOIN - «зовнішнє» з'єднання. Дане ключове слово є необов'язковим і має сенс тільки в
комбінації з ключовим словом визначення типу зовнішнього з'єднання. Зовнішнє з'єднання буває
трьох типів:
• LEFT (OUTER) JOIN - «ліве (зовнішнє)» з'єднання. Це означає, що в результат запиту будуть включені
всі рядки лівої таблиці і тільки ті рядки правої таблиці, для яких виконується
<условие_соединения>;
• RIGHT (OUTER) JOIN - «праве (зовнішнє)» з'єднання. Це означає, що в результат запиту будуть
включені всі рядки правої таблиці і тільки ті рядки лівої таблиці, для яких виконується
<условие_соединения>;
• FULL (OUTER) JOIN - «повне (зовнішнє)» з'єднання. Це комбінація «лівого» і «правого» з'єднань
таблиць.
• Якщо не зазначений тип з'єднання в реченні JOIN, то він по замовчуванням приймається за INNER.
• припускають явне завдання умови з'єднання після ON або імен стовпців, по яких проводиться
з'єднання, після USING:
• INNER JOIN - «внутрішнє» з'єднання. У таблицях з'єднуються тільки ті рядки, для яких виконується
<условие_соединения>;
• OUTER JOIN - «зовнішнє» з'єднання. Дане ключове слово є необов'язковим і має сенс тільки в
комбінації з ключовим словом визначення типу зовнішнього з'єднання. Зовнішнє з'єднання буває
трьох типів:
• LEFT (OUTER) JOIN - «ліве (зовнішнє)» з'єднання. Це означає, що в результат запиту будуть включені
всі рядки лівої таблиці і тільки ті рядки правої таблиці, для яких виконується
<условие_соединения>;
• RIGHT (OUTER) JOIN - «праве (зовнішнє)» з'єднання. Це означає, що в результат запиту будуть
включені всі рядки правої таблиці і тільки ті рядки лівої таблиці, для яких виконується
<условие_соединения>;
• FULL (OUTER) JOIN - «повне (зовнішнє)» з'єднання. Це комбінація «лівого» і «правого» з'єднань
таблиць.
• Якщо не зазначений тип з'єднання в реченні JOIN, то він по замовчуванням приймається за INNER.
Природне
з'єднання
Стандарт SQL визначає це з'єднання як результат з'єднання таблиць по всіх однойменних
стовпцях. Якщо однойменних стовпців немає, виконується перехресне з'єднання CROSS
JOIN. Не вимагає завдання будь-яких умов після ON. Може застосовуватися при
внутрішньому і зовнішньому з'єднанні таблиць.
Стандарт SQL визначає це з'єднання як результат з'єднання таблиць по всіх однойменних
стовпцях. Якщо однойменних стовпців немає, виконується перехресне з'єднання CROSS
JOIN. Не вимагає завдання будь-яких умов після ON. Може застосовуватися при
внутрішньому і зовнішньому з'єднанні таблиць.
1.2. Явне з’єднання таблиць
1.2. Явне з’єднання таблиць
або
1.3. Стандартне з’єднання (об’єднання) таблиць.
Декартовий добуток
або
1.3. Стандартне з’єднання (об’єднання) таблиць.
Еквіз’єднання
або
1.3. Стандартне з’єднання (об’єднання) таблиць.
Природне з’єднання
або
1.3. Стандартне з’єднання (об’єднання) таблиць.
Композиція. Тета-з’єднання
Тета-з'єднання призначене для тих
випадків, коли необхідно з'єднати
дві таблиці на основі деяких умов,
відмінних від рівності.
Для створення композиції таблиць потрібно виключити з виведення всі стовпці,
за якими проводилось з'єднання таблиць, наприклад таким чином:
1.3. Стандартне з’єднання (об’єднання) таблиць.
З’єднання таблиці зі своєю копією
або
2. Функції в SQL
Є два основні класи функцій в SQL СУБД: вбудовані і визначені користувачем. У SQL
визначено множину вбудованих функцій різних категорій. Ці функції діляться на три
основні групи:
• Скалярні функції;
• Агрегатні функції;
• Функції для списку значень.
Скалярні функції (їх ще називають однорядковими) обробляють одне значення і
повертають також одне значення. Скалярні функції дозволяється використовувати
скрізь, де допускається застосування виразів. Скалярні функції бувають наступних
категорій:
• Рядкові функції, які виконують певні дії над рядками і повертають рядкові або числові
значення;
• Числові функції, які повертають числові значення на підставі заданих в аргументі
значень того ж типу;
• Функції часу і дати, які виконують різні дії над вхідними значеннями часу і дати і
повертають рядкове, числове значення або значення у форматі дати і часу;
• Функція перетворення типу.
Агрегатні функції використовуються для одержання узагальнюючих значень. Вони, на
відміну від скалярних функцій, оперують значеннями стовпців множини рядків.
Функції для списку значень представлені трьома функціями - MAXVALUE, MINVALUE і LIST.
Функції, визначені користувачем (UDF), є допоміжними програмами, написаними на мові
програмування (наприклад, C, C + + або Pascal) і скомпільовані як бібліотеки, що
спільно використовуються (DLL).
2.1. Скалярні функції. Рядкові функції
2.1. Скалярні функції. Рядкові функції
еквівалентна
2.1. Скалярні функції. Рядкові функції
2.1. Скалярні функції. Рядкові функції
2.1. Скалярні функції. Числові функції
2.1. Скалярні функції. Функції дати та часу
2.1. Скалярні функції. Функції дати та часу
або
або
де
2.1. Скалярні функції. Функція перетворення типу
2.1. Скалярні функції. Функція перетворення типу
2.2. Агрегатні функції
• AVG - середнє значення в стовпці;
• SUM - сума значень в стовпці;
• MAX - найбільше значення в стовпці;
• MIN - найменше значення в стовпці;
• COUNT - кількість значень у стовпці.
2.2. Агрегатні функції
2.3. Функції на списку значень
2.4. Додаткові можливості
Проста форма
З пошуком
2.4. Додаткові можливості
2.4. Додаткові можливості
еквівалентна
для N >= 3 еквівалентна
2.4. Додаткові можливості
або
еквівалентно
2.4. Додаткові можливості
3. Сортування результатів запиту
3. Сортування результатів запиту
4. Групування та створення простих звітів
де
або
4. Групування та створення
простих звітів
4. Групування та створення простих звітів
4. Групування та створення простих звітів
Обмеження на запити з угрупуванням:
1. У пропозиції GROUP BY повинні бути вказані стовпці або
вирази, які використовуються в якості елементів, що повертаються
пропозиції SELECT (за винятком агрегатних функцій).
2. Всі елементи списку стовпців, що повертаються, повинні мати
одне
значення для кожної групи рядків. Це означає, що елементом,
який повертається в пропозиції SELECT може бути:
• Константа;
• Агрегатна функція, що повертає
одне значення для всіх рядків, які
входять до групи;
• Елемент угруповання, який за
визначенням має одне й те ж
значення у всіх рядках групи;
• Функція, яка використовується в
якості елемента угрупування;
• Вираз, що включає в себе
перераховані вище елементи.
4. Групування та створення простих звітів
4. Групування та створення простих звітів
Як і умова пошуку в пропозиції WHERE, умова пошуку в пропозиції HAVING
може дати один із трьох наступних результатів:
•Якщо умова пошуку має значення TRUE, то група рядків залишається і
для неї генерується один рядок в результа запиту;
•Якщо умова пошуку має значення FALSE, то група рядків виключається і
рядок в результа запиту для неї не генерується;
•Якщо умова пошуку має значення NULL, то група рядків виключається і
рядок в результаті запиту для неї не генерується.
Правила обробки значень NULL в умовах пошуку для пропозиції HAVING
точно такі ж, як і для пропозиції WHERE. Пропозиція HAVING завжди повинна
використовуватися в поєднанні з пропозицією GROUP BY, хоча синтаксис
запиту SELECT не вимагає цього.
Дякую за увагу !

More Related Content

Viewers also liked

Презентація курсу "БД та ІС"
Презентація курсу "БД та ІС"Презентація курсу "БД та ІС"
Презентація курсу "БД та ІС"
pogromskaya
 
САПР_СALS
САПР_СALSСАПР_СALS
САПР_СALS
pogromskaya
 
лекція 1 введення в бд та іс
лекція 1 введення в бд та іслекція 1 введення в бд та іс
лекція 1 введення в бд та ісpogromskaya
 
презентация дипломной работы
презентация дипломной работыпрезентация дипломной работы
презентация дипломной работыCherkashinaMS
 
22a автоматизоване вибирання даних із таблиць
22a автоматизоване вибирання даних із таблиць22a автоматизоване вибирання даних із таблиць
22a автоматизоване вибирання даних із таблицьannaeres
 
E&C_mobile_market_ukraine
E&C_mobile_market_ukraineE&C_mobile_market_ukraine
E&C_mobile_market_ukraine
Expert and Consulting (EnC)
 

Viewers also liked (6)

Презентація курсу "БД та ІС"
Презентація курсу "БД та ІС"Презентація курсу "БД та ІС"
Презентація курсу "БД та ІС"
 
САПР_СALS
САПР_СALSСАПР_СALS
САПР_СALS
 
лекція 1 введення в бд та іс
лекція 1 введення в бд та іслекція 1 введення в бд та іс
лекція 1 введення в бд та іс
 
презентация дипломной работы
презентация дипломной работыпрезентация дипломной работы
презентация дипломной работы
 
22a автоматизоване вибирання даних із таблиць
22a автоматизоване вибирання даних із таблиць22a автоматизоване вибирання даних із таблиць
22a автоматизоване вибирання даних із таблиць
 
E&C_mobile_market_ukraine
E&C_mobile_market_ukraineE&C_mobile_market_ukraine
E&C_mobile_market_ukraine
 

Similar to Sql select 2

Копіювання, переміщення, автозаповнення та вилучення даних
Копіювання, переміщення, автозаповнення та вилучення данихКопіювання, переміщення, автозаповнення та вилучення даних
Копіювання, переміщення, автозаповнення та вилучення даних
VladyslavKochkin
 
Sql ddl
Sql ddlSql ddl
Sql ddl
Halyna Melnyk
 
4 прикладна система – табличний процесор
4 прикладна система – табличний процесор4 прикладна система – табличний процесор
4 прикладна система – табличний процесор
Алексей Свирь
 
Sql pl
Sql plSql pl
04-Joins.pptx
04-Joins.pptx04-Joins.pptx
04-Joins.pptx
ssuser0a6574
 
Урок №21 8 клас
Урок №21 8 класУрок №21 8 клас
Урок №21 8 клас
Nikolay Shaygorodskiy
 
урок 4 excel
урок 4 excelурок 4 excel
урок 4 excel
Helen2015
 
Sql global
Sql globalSql global
Sql global
Halyna Melnyk
 
інформатика 11 клас розділ 10 формули
інформатика 11 клас розділ 10 формулиінформатика 11 клас розділ 10 формули
інформатика 11 клас розділ 10 формули������ �����
 

Similar to Sql select 2 (9)

Копіювання, переміщення, автозаповнення та вилучення даних
Копіювання, переміщення, автозаповнення та вилучення данихКопіювання, переміщення, автозаповнення та вилучення даних
Копіювання, переміщення, автозаповнення та вилучення даних
 
Sql ddl
Sql ddlSql ddl
Sql ddl
 
4 прикладна система – табличний процесор
4 прикладна система – табличний процесор4 прикладна система – табличний процесор
4 прикладна система – табличний процесор
 
Sql pl
Sql plSql pl
Sql pl
 
04-Joins.pptx
04-Joins.pptx04-Joins.pptx
04-Joins.pptx
 
Урок №21 8 клас
Урок №21 8 класУрок №21 8 клас
Урок №21 8 клас
 
урок 4 excel
урок 4 excelурок 4 excel
урок 4 excel
 
Sql global
Sql globalSql global
Sql global
 
інформатика 11 клас розділ 10 формули
інформатика 11 клас розділ 10 формулиінформатика 11 клас розділ 10 формули
інформатика 11 клас розділ 10 формули
 

More from Halyna Melnyk

Lect ai 3 ga
Lect ai 3  gaLect ai 3  ga
Lect ai 3 ga
Halyna Melnyk
 
Lect аі 2 n net p2
Lect аі 2 n net p2Lect аі 2 n net p2
Lect аі 2 n net p2
Halyna Melnyk
 
Lect ai 2 nn
Lect ai 2 nnLect ai 2 nn
Lect ai 2 nn
Halyna Melnyk
 
Lect 6 prolog
Lect 6 prologLect 6 prolog
Lect 6 prolog
Halyna Melnyk
 
Lect 5 prolog
Lect 5 prologLect 5 prolog
Lect 5 prolog
Halyna Melnyk
 
Lect 3 4 prolog
Lect 3 4 prologLect 3 4 prolog
Lect 3 4 prolog
Halyna Melnyk
 
Lect 2 prolog
Lect 2 prologLect 2 prolog
Lect 2 prolog
Halyna Melnyk
 
Lect 1 intro
Lect 1 introLect 1 intro
Lect 1 intro
Halyna Melnyk
 
Sql granting
Sql grantingSql granting
Sql granting
Halyna Melnyk
 
Sql view
Sql viewSql view
Sql view
Halyna Melnyk
 
Sql db
Sql dbSql db

More from Halyna Melnyk (11)

Lect ai 3 ga
Lect ai 3  gaLect ai 3  ga
Lect ai 3 ga
 
Lect аі 2 n net p2
Lect аі 2 n net p2Lect аі 2 n net p2
Lect аі 2 n net p2
 
Lect ai 2 nn
Lect ai 2 nnLect ai 2 nn
Lect ai 2 nn
 
Lect 6 prolog
Lect 6 prologLect 6 prolog
Lect 6 prolog
 
Lect 5 prolog
Lect 5 prologLect 5 prolog
Lect 5 prolog
 
Lect 3 4 prolog
Lect 3 4 prologLect 3 4 prolog
Lect 3 4 prolog
 
Lect 2 prolog
Lect 2 prologLect 2 prolog
Lect 2 prolog
 
Lect 1 intro
Lect 1 introLect 1 intro
Lect 1 intro
 
Sql granting
Sql grantingSql granting
Sql granting
 
Sql view
Sql viewSql view
Sql view
 
Sql db
Sql dbSql db
Sql db
 

Recently uploaded

Віртуальна виставка «Допомога НАТО Україні»
Віртуальна виставка «Допомога НАТО Україні»Віртуальна виставка «Допомога НАТО Україні»
Віртуальна виставка «Допомога НАТО Україні»
Vinnytsia Regional Universal Scientific Library named after Valentin Otamanovsky
 
LOBANOVA_Tetiana_PORTFOLIO_Librarian.pdf
LOBANOVA_Tetiana_PORTFOLIO_Librarian.pdfLOBANOVA_Tetiana_PORTFOLIO_Librarian.pdf
LOBANOVA_Tetiana_PORTFOLIO_Librarian.pdf
Olga Kudriavtseva
 
Підсумки, перспективи роботи профспільнот педагогів ЗДО (2).pdf
Підсумки, перспективи роботи профспільнот педагогів ЗДО (2).pdfПідсумки, перспективи роботи профспільнот педагогів ЗДО (2).pdf
Підсумки, перспективи роботи профспільнот педагогів ЗДО (2).pdf
ssuser7541ef1
 
Главлит_2_0_Книжкова_цензура_в_Росії.pdf
Главлит_2_0_Книжкова_цензура_в_Росії.pdfГлавлит_2_0_Книжкова_цензура_в_Росії.pdf
Главлит_2_0_Книжкова_цензура_в_Росії.pdf
olaola5673
 
KUDRIAVTSEVA_Olha_PORTFOLIO_librarian.pdf
KUDRIAVTSEVA_Olha_PORTFOLIO_librarian.pdfKUDRIAVTSEVA_Olha_PORTFOLIO_librarian.pdf
KUDRIAVTSEVA_Olha_PORTFOLIO_librarian.pdf
Olga Kudriavtseva
 
29.05.2024.docx29.05.2024.docx29.05.2024.docx
29.05.2024.docx29.05.2024.docx29.05.2024.docx29.05.2024.docx29.05.2024.docx29.05.2024.docx
29.05.2024.docx29.05.2024.docx29.05.2024.docx
Репетитор Історія України
 
Основи_історичної_просвіти_—_для_перекладу.pdf
Основи_історичної_просвіти_—_для_перекладу.pdfОснови_історичної_просвіти_—_для_перекладу.pdf
Основи_історичної_просвіти_—_для_перекладу.pdf
olaola5673
 
Важливість впровадження стандарту ISO/IEC 17025:2019 у процес державних випро...
Важливість впровадження стандарту ISO/IEC 17025:2019 у процес державних випро...Важливість впровадження стандарту ISO/IEC 17025:2019 у процес державних випро...
Важливість впровадження стандарту ISO/IEC 17025:2019 у процес державних випро...
tetiana1958
 
POPOVICH_Nina_PORTFOLIO_librarianCRE.pdf
POPOVICH_Nina_PORTFOLIO_librarianCRE.pdfPOPOVICH_Nina_PORTFOLIO_librarianCRE.pdf
POPOVICH_Nina_PORTFOLIO_librarianCRE.pdf
Olga Kudriavtseva
 
«Слова і кулі». Письменники, що захищають Україну. Єлизавета Жарікова
«Слова і кулі». Письменники, що захищають Україну. Єлизавета Жарікова«Слова і кулі». Письменники, що захищають Україну. Єлизавета Жарікова
«Слова і кулі». Письменники, що захищають Україну. Єлизавета Жарікова
estet13
 

Recently uploaded (10)

Віртуальна виставка «Допомога НАТО Україні»
Віртуальна виставка «Допомога НАТО Україні»Віртуальна виставка «Допомога НАТО Україні»
Віртуальна виставка «Допомога НАТО Україні»
 
LOBANOVA_Tetiana_PORTFOLIO_Librarian.pdf
LOBANOVA_Tetiana_PORTFOLIO_Librarian.pdfLOBANOVA_Tetiana_PORTFOLIO_Librarian.pdf
LOBANOVA_Tetiana_PORTFOLIO_Librarian.pdf
 
Підсумки, перспективи роботи профспільнот педагогів ЗДО (2).pdf
Підсумки, перспективи роботи профспільнот педагогів ЗДО (2).pdfПідсумки, перспективи роботи профспільнот педагогів ЗДО (2).pdf
Підсумки, перспективи роботи профспільнот педагогів ЗДО (2).pdf
 
Главлит_2_0_Книжкова_цензура_в_Росії.pdf
Главлит_2_0_Книжкова_цензура_в_Росії.pdfГлавлит_2_0_Книжкова_цензура_в_Росії.pdf
Главлит_2_0_Книжкова_цензура_в_Росії.pdf
 
KUDRIAVTSEVA_Olha_PORTFOLIO_librarian.pdf
KUDRIAVTSEVA_Olha_PORTFOLIO_librarian.pdfKUDRIAVTSEVA_Olha_PORTFOLIO_librarian.pdf
KUDRIAVTSEVA_Olha_PORTFOLIO_librarian.pdf
 
29.05.2024.docx29.05.2024.docx29.05.2024.docx
29.05.2024.docx29.05.2024.docx29.05.2024.docx29.05.2024.docx29.05.2024.docx29.05.2024.docx
29.05.2024.docx29.05.2024.docx29.05.2024.docx
 
Основи_історичної_просвіти_—_для_перекладу.pdf
Основи_історичної_просвіти_—_для_перекладу.pdfОснови_історичної_просвіти_—_для_перекладу.pdf
Основи_історичної_просвіти_—_для_перекладу.pdf
 
Важливість впровадження стандарту ISO/IEC 17025:2019 у процес державних випро...
Важливість впровадження стандарту ISO/IEC 17025:2019 у процес державних випро...Важливість впровадження стандарту ISO/IEC 17025:2019 у процес державних випро...
Важливість впровадження стандарту ISO/IEC 17025:2019 у процес державних випро...
 
POPOVICH_Nina_PORTFOLIO_librarianCRE.pdf
POPOVICH_Nina_PORTFOLIO_librarianCRE.pdfPOPOVICH_Nina_PORTFOLIO_librarianCRE.pdf
POPOVICH_Nina_PORTFOLIO_librarianCRE.pdf
 
«Слова і кулі». Письменники, що захищають Україну. Єлизавета Жарікова
«Слова і кулі». Письменники, що захищають Україну. Єлизавета Жарікова«Слова і кулі». Письменники, що захищають Україну. Єлизавета Жарікова
«Слова і кулі». Письменники, що захищають Україну. Єлизавета Жарікова
 

Sql select 2

  • 2. 1. Багатотабличні запити Більшість СУБД підтримую три варіанти запитів до множини таблиць з допомогою одного SQL-запиту на вибірку: з’єднання, підзапити і об'єднання. З'єднання використовується у запитах SELECT для генерації наборів, містять стовпці з декількох таблиць, які зберігають пов'язані дані. Множина стовпців, вибраних з кожної таблиці, називаються потоками. Процес з'єднання об'єднує вибрані стовпці в єдиний вихідний набір даних. Стандарти SQL підтримують два варіанти синтаксису з'єднання: неявне і явне з'єднання. Неявне з'єднання відповідає більш старому SQL-стандарту (89). Таблиці, які беруть участь у з'єднанні, задаються списком в реченні FROM запиту SELECT. Умови для зв'язку таблиць задаються серед умов пошуку пропозиції WHERE. Не існує спеціального синтаксису для вказівки, які умови використовуються для пошуку, а які - для з'єднання. У стандарті SQL92 введений більш універсальний синтаксис явного з'єднання, яке здійснюється за допомогою пропозиції JOIN., яка дає можливість відділити умови з'єднання від умов пошуку. Підзапитом є запит, взятий у круглі дужки і вкладений в пропозицію SELECT, FROM, WHERE або HAVING основного (зовнішнього) запиту SELECT або інших запитів, що використовують ці пропозиції. Запити об'єднання, реалізовані за допомогою пропозиції UNION, дають можливість вибрати рядки з різних наборів даних в об'єднаний набір даних, причому підмножини не обов'язково повинні бути пов'язані одна з одною - просто вони повинні відповідати структурно.
  • 3. 1.1. Неявне з’єднання таблиць де Алгоритм виконання запитів на неявне з'єднання таблиць складається з наступних етапів: 1) обчислюється декартовий добуток таблиць, що входять у з'єднання, тобто для кожного рядка однієї з таблиць беруться всі можливі комбінації рядків з інших таблиць; 2) проводиться відбір рядків з отриманої таблиці згідно з умовою пошуку в пропозиції WHERE; 3) здійснюється проекція (виведення) по стовпцях, що зазначені у списку елементів, які повертаються.
  • 4. 1.1. Неявне з’єднання таблиць З'єднання таблиць - це окремий випадок операції декартового добутку (або просто добутку). Декартовий добуток двох таблиць - це таблиця, яка складається з усіх можливих пар рядків обох таблиць. У SQL декартовий добуток виражається зазначенням імен таблиць (множників) у фразі FROM і вказівкою всіх їх стовпців у фразі SELECT. Так, добуток таблиць FACULTY і DEPARTMENT виражається наступним чином:
  • 5. 1.1. Неявне з’єднання таблиць Серед запитів на з'єднання таблиць найбільш поширені запити до таблиць, які зв'язані за допомогою відношенням батько-нащадок. Щоб використовувати в запиті відношення батько-нащадок, необхідно задати <условие_соединения>, в якому первинний ключ батьківської таблиці порівнюється із зовнішнім ключем таблиці-нащадка (зазвичай імена цих стовпців збігаються в зв'язаних таблицях). Зв'язок повинен завжди явно вказуватися в пропозиції WHERE запиту SELECT.
  • 6. 1.1. Неявне з’єднання таблиць. Псевдоніми
  • 7. 1.2. Явне з’єднання таблиць де Таким чином, існують різні типи явного з'єднання таблиць. Перехресне з'єднання CROSS JOIN • використовується без конструкції ON <условие_соединения>. • CROSS JOIN еквівалентний декартовому добутку таблиць. Тобто конструкція ... FROM A CROSS JOIN B повністю еквівалентна конструкції ... FROM A, B • використовується без конструкції ON <условие_соединения>. • CROSS JOIN еквівалентний декартовому добутку таблиць. Тобто конструкція ... FROM A CROSS JOIN B повністю еквівалентна конструкції ... FROM A, B Уточнені з'єднання • припускають явне завдання умови з'єднання після ON або імен стовпців, по яких проводиться з'єднання, після USING: • INNER JOIN - «внутрішнє» з'єднання. У таблицях з'єднуються тільки ті рядки, для яких виконується <условие_соединения>; • OUTER JOIN - «зовнішнє» з'єднання. Дане ключове слово є необов'язковим і має сенс тільки в комбінації з ключовим словом визначення типу зовнішнього з'єднання. Зовнішнє з'єднання буває трьох типів: • LEFT (OUTER) JOIN - «ліве (зовнішнє)» з'єднання. Це означає, що в результат запиту будуть включені всі рядки лівої таблиці і тільки ті рядки правої таблиці, для яких виконується <условие_соединения>; • RIGHT (OUTER) JOIN - «праве (зовнішнє)» з'єднання. Це означає, що в результат запиту будуть включені всі рядки правої таблиці і тільки ті рядки лівої таблиці, для яких виконується <условие_соединения>; • FULL (OUTER) JOIN - «повне (зовнішнє)» з'єднання. Це комбінація «лівого» і «правого» з'єднань таблиць. • Якщо не зазначений тип з'єднання в реченні JOIN, то він по замовчуванням приймається за INNER. • припускають явне завдання умови з'єднання після ON або імен стовпців, по яких проводиться з'єднання, після USING: • INNER JOIN - «внутрішнє» з'єднання. У таблицях з'єднуються тільки ті рядки, для яких виконується <условие_соединения>; • OUTER JOIN - «зовнішнє» з'єднання. Дане ключове слово є необов'язковим і має сенс тільки в комбінації з ключовим словом визначення типу зовнішнього з'єднання. Зовнішнє з'єднання буває трьох типів: • LEFT (OUTER) JOIN - «ліве (зовнішнє)» з'єднання. Це означає, що в результат запиту будуть включені всі рядки лівої таблиці і тільки ті рядки правої таблиці, для яких виконується <условие_соединения>; • RIGHT (OUTER) JOIN - «праве (зовнішнє)» з'єднання. Це означає, що в результат запиту будуть включені всі рядки правої таблиці і тільки ті рядки лівої таблиці, для яких виконується <условие_соединения>; • FULL (OUTER) JOIN - «повне (зовнішнє)» з'єднання. Це комбінація «лівого» і «правого» з'єднань таблиць. • Якщо не зазначений тип з'єднання в реченні JOIN, то він по замовчуванням приймається за INNER. Природне з'єднання Стандарт SQL визначає це з'єднання як результат з'єднання таблиць по всіх однойменних стовпцях. Якщо однойменних стовпців немає, виконується перехресне з'єднання CROSS JOIN. Не вимагає завдання будь-яких умов після ON. Може застосовуватися при внутрішньому і зовнішньому з'єднанні таблиць. Стандарт SQL визначає це з'єднання як результат з'єднання таблиць по всіх однойменних стовпцях. Якщо однойменних стовпців немає, виконується перехресне з'єднання CROSS JOIN. Не вимагає завдання будь-яких умов після ON. Може застосовуватися при внутрішньому і зовнішньому з'єднанні таблиць.
  • 9. 1.2. Явне з’єднання таблиць або
  • 10.
  • 11.
  • 12.
  • 13.
  • 14.
  • 15. 1.3. Стандартне з’єднання (об’єднання) таблиць. Декартовий добуток або
  • 16. 1.3. Стандартне з’єднання (об’єднання) таблиць. Еквіз’єднання або
  • 17. 1.3. Стандартне з’єднання (об’єднання) таблиць. Природне з’єднання або
  • 18. 1.3. Стандартне з’єднання (об’єднання) таблиць. Композиція. Тета-з’єднання Тета-з'єднання призначене для тих випадків, коли необхідно з'єднати дві таблиці на основі деяких умов, відмінних від рівності. Для створення композиції таблиць потрібно виключити з виведення всі стовпці, за якими проводилось з'єднання таблиць, наприклад таким чином:
  • 19. 1.3. Стандартне з’єднання (об’єднання) таблиць. З’єднання таблиці зі своєю копією або
  • 20. 2. Функції в SQL Є два основні класи функцій в SQL СУБД: вбудовані і визначені користувачем. У SQL визначено множину вбудованих функцій різних категорій. Ці функції діляться на три основні групи: • Скалярні функції; • Агрегатні функції; • Функції для списку значень. Скалярні функції (їх ще називають однорядковими) обробляють одне значення і повертають також одне значення. Скалярні функції дозволяється використовувати скрізь, де допускається застосування виразів. Скалярні функції бувають наступних категорій: • Рядкові функції, які виконують певні дії над рядками і повертають рядкові або числові значення; • Числові функції, які повертають числові значення на підставі заданих в аргументі значень того ж типу; • Функції часу і дати, які виконують різні дії над вхідними значеннями часу і дати і повертають рядкове, числове значення або значення у форматі дати і часу; • Функція перетворення типу. Агрегатні функції використовуються для одержання узагальнюючих значень. Вони, на відміну від скалярних функцій, оперують значеннями стовпців множини рядків. Функції для списку значень представлені трьома функціями - MAXVALUE, MINVALUE і LIST. Функції, визначені користувачем (UDF), є допоміжними програмами, написаними на мові програмування (наприклад, C, C + + або Pascal) і скомпільовані як бібліотеки, що спільно використовуються (DLL).
  • 21. 2.1. Скалярні функції. Рядкові функції
  • 22. 2.1. Скалярні функції. Рядкові функції еквівалентна
  • 23. 2.1. Скалярні функції. Рядкові функції
  • 24. 2.1. Скалярні функції. Рядкові функції
  • 25. 2.1. Скалярні функції. Числові функції
  • 26. 2.1. Скалярні функції. Функції дати та часу
  • 27. 2.1. Скалярні функції. Функції дати та часу або або де
  • 28. 2.1. Скалярні функції. Функція перетворення типу
  • 29. 2.1. Скалярні функції. Функція перетворення типу
  • 30. 2.2. Агрегатні функції • AVG - середнє значення в стовпці; • SUM - сума значень в стовпці; • MAX - найбільше значення в стовпці; • MIN - найменше значення в стовпці; • COUNT - кількість значень у стовпці.
  • 32. 2.3. Функції на списку значень
  • 40. 4. Групування та створення простих звітів де або
  • 41. 4. Групування та створення простих звітів
  • 42. 4. Групування та створення простих звітів
  • 43. 4. Групування та створення простих звітів Обмеження на запити з угрупуванням: 1. У пропозиції GROUP BY повинні бути вказані стовпці або вирази, які використовуються в якості елементів, що повертаються пропозиції SELECT (за винятком агрегатних функцій). 2. Всі елементи списку стовпців, що повертаються, повинні мати одне значення для кожної групи рядків. Це означає, що елементом, який повертається в пропозиції SELECT може бути: • Константа; • Агрегатна функція, що повертає одне значення для всіх рядків, які входять до групи; • Елемент угруповання, який за визначенням має одне й те ж значення у всіх рядках групи; • Функція, яка використовується в якості елемента угрупування; • Вираз, що включає в себе перераховані вище елементи.
  • 44. 4. Групування та створення простих звітів
  • 45. 4. Групування та створення простих звітів Як і умова пошуку в пропозиції WHERE, умова пошуку в пропозиції HAVING може дати один із трьох наступних результатів: •Якщо умова пошуку має значення TRUE, то група рядків залишається і для неї генерується один рядок в результа запиту; •Якщо умова пошуку має значення FALSE, то група рядків виключається і рядок в результа запиту для неї не генерується; •Якщо умова пошуку має значення NULL, то група рядків виключається і рядок в результаті запиту для неї не генерується. Правила обробки значень NULL в умовах пошуку для пропозиції HAVING точно такі ж, як і для пропозиції WHERE. Пропозиція HAVING завжди повинна використовуватися в поєднанні з пропозицією GROUP BY, хоча синтаксис запиту SELECT не вимагає цього.