UNION і UNION ALL є двома найважливішими операторами SQL, які використовуються в базі даних для об’єднання набору результатів із кількох таблиць. Ці оператори дозволяють нам використовувати кілька запитів SELECT, отримувати потрібні результати, а потім об’єднувати їх у кінцевий результат. . У цій статті ми побачимо, чим вони відрізняються один від одного. Перш ніж робити порівняння, ми коротко обговоримо цих операторів.
Що таке оператор Союзу?
Оператор об’єднання в MySQL дозволяє об’єднати два або більше результатів із кількох запитів SELECT в один набір результатів. Він має функцію за замовчуванням видаліть повторювані рядки зі столів. Цей синтаксис оператора завжди використовує назву стовпця в першому операторі SELECT як імена стовпців виводу.
MySQL Союз повинен дотримуватися таких основних правил:
- Кількість і порядок стовпців має бути однаковим у всіх запитах.
- Позиція відповідних стовпців кожного запиту на вибірку повинна мати сумісний тип даних.
- Назва стовпця, вибрана в різних запитах SELECT, має бути в тому самому порядку.
- Ім’я стовпця першого запиту SELECT буде іменем стовпця результату.
ПРИМІТКА: ми повинні знати, що Union і Join відрізняються.
- JOIN поєднує дані з кількох різних таблиць, тоді як UNION поєднує дані з кількох подібних таблиць.
- JOIN додає результат горизонтально, тоді як UNION комбінує набір результатів вертикально.
Наведене нижче візуальне представлення пояснює це більш чітко:
Щоб дізнатися більше про оператора Union, натисніть тут.
Що таке Union All?
Оператор UNION ALL поєднує два або більше результатів із кількох запитів SELECT і повертає всі записи в один набір результатів. Він не видаляє повторювані рядки з виводу операторів SELECT.
Ми можемо зрозуміти це за допомогою наступного візуального представлення.
Union проти Union All Operator
У наведеній нижче порівняльній таблиці коротко пояснюються їхні основні відмінності:
СОЮЗ | СОЮЗ ВСЕ |
---|---|
Він об’єднує набір результатів із кількох таблиць і повертає різні записи в один набір результатів. | Він об’єднує набір результатів із кількох таблиць і повертає всі записи в один набір результатів. |
Нижче наведено основне синтаксис оператора UNION: ВИБРАТИ список_стовпців З таблиці1 СОЮЗ SELECT column_list FROM table2; | Нижче наведено основне синтаксис оператора UNION ALL: ВИБРАТИ список_стовпців З таблиці1 СОЮЗ ВСЕ SELECT column_list FROM table2; |
Він має функцію за замовчуванням для видалення повторюваних рядків із виводу. | Він не має функції видалення повторюваних рядків із виводу. |
Його продуктивність повільна тому що для пошуку та видалення повторюваних записів потрібен час. | Його продуктивність швидка оскільки це не усуває повторювані рядки. |
Більшість користувачів баз даних вважають за краще використовувати цей оператор. | Більшість користувачів бази даних не вважають за краще використовувати цей оператор. |
Приклад Союзу та Союзу всіх
Розберемо на прикладі відмінності між операторами Union і Union All. Припустімо, у нас є таблиця з назвою ' студент 'і' Студент2 ', що містить такі дані:
Таблиця: Учень
Таблиця: Студент2
Наступний оператор SQL повертає чіткі назви міст з обох таблиць за допомогою запиту UNION:
SELECT City FROM student UNION SELECT City FROM student2 ORDER BY City;
Після виконання наведеного вище оператора ми отримаємо наведені нижче результати, оскільки оператор Union повертає лише різні значення.
Наступний оператор SQL повертає усі назви міст, включаючи дублікати з обох таблиць за допомогою запиту UNION ALL:
SELECT City FROM student UNION ALL SELECT City FROM student2 ORDER BY City;
Після виконання наведеного вище оператора ми отримаємо наведені нижче результати, оскільки оператор Union All повертає цілі записи без видалення окремих значень.