Ілюстрований самовчитель з SQL для початківців › Реляційні оператори сторінка - 120,

Реляційні оператори

  • Об'єднання таблиць, що мають схожу структуру
  • Об'єднання таблиць, що мають різну структуру
  • Отримання потрібних даних з безлічі таблиць

SQL - це мова запитів, що використовується в реляційних базах даних. Майже у всіх прикладах попередніх розділів розглядалися прості бази даних із однією таблицею. Тепер настав час показати, в чому ж полягає реляційність реляційної бази. Взагалі, ці бази називаються "реляційними" тому, що складаються з безлічі пов'язаних один з одним таблиць (а "пов'язані один з одним" - це по-англійськи "related").

Так як дані, що зберігаються в реляційній базі, розподілені по безлічі таблиць, запит зазвичай отримує дані з більш ніж однієї таблиці. SQL:2003 є оператори, які об'єднують дані з безлічі вихідних таблиць в одну. Це оператори UNION, INTERSECTION та EXCEPT, а також сімейство операторів об'єднання JOIN. Причому кожен із них об'єднує дані своїм особливим способом.

ОператорUNION (об'єднання) – це реалізація у мові SQL оператора об'єднання з реляційної алгебри. Оператор UNION дає можливість отримувати інформацію з кількох таблиць, що мають однакову структуру.Однакова структура означає наступне.

  • У всіх таблицях є однакова кількість стовпців.
  • Усі відповідні стовпці повинні мати ідентичний тип даних і однакову довжину.

За дотримання цих критеріїв таблиці є сумісними для об'єднання. В результаті об'єднання двох таблиць повертаються всі рядки, що є в кожній із них. Не повертаються тільки рядки, що повторюються.

Скажімо, ви створюєте базу даних збейсбольної статистики (див. розділ 9). Вона складається із двох таблиць, сумісних для об'єднання, які називаються AMERICAN (Американська ліга) та NATIONAL (Національна ліга). У кожній з них є три стовпці, і типи у всіх відповідних стовпців збігаються. Насправді навіть імена таких стовпців однакові, хоча для об'єднання ця умова не є обов'язковою.

У таблиці NATIONAL перераховані імена, прізвища пітчерів Національної ліги та кількість ігор, у яких вони весь час були на подачі. Ці дані знаходяться в стовпцях FirstName (ім'я), LastName (прізвище) та CompleteGames (повністю зіграні ігри). Та ж інформація, але тільки про пітчерів Американської ліги міститься в таблиці AMERICAN. Якщо об'єднати таблиці NATIONAL та AMERICAN за допомогою оператора UNION, то в результаті вийде віртуальна таблиця з усіма рядками з першої та другої таблиць. У цьому прикладі, щоб показати роботу оператора UNION, я вставив у кожну таблицю лише кілька рядків: