Рекомендуємо, 2024

Вибір Редакції

Різниця між місцем розташування і визначенням у SQL

WHERE і HAVING в основному використовуються в операторах SQL-запитів, вони дозволяють нам обмежувати комбінацію в результуючому відношенні через використання конкретного предиката. Основна відмінність між WHERE і HAVING полягає в тому, що речення WHERE вказує умови для вибору кортежів (рядків) з відносин, включаючи умови з'єднання, якщо це необхідно. З іншого боку, пропозиція HAVING визначає умову для обраних груп, а не для окремих кортежів.

SQL - це мова структурованих запитів ; це всеосяжна або декларативна мова бази даних, яка використовується для доступу до даних з баз даних.

Діаграма порівняння

Основа для порівнянняWHEREВІД
ОсновнийРеалізовано в ряду операцій.Реалізовано в операціях стовпців.
Застосовується доОдин рядокУзагальнені рядки або групи.
Отримання данихВін вибирає конкретні дані з окремих рядків відповідно до умови.По-перше, повні дані отримують, потім розділяють відповідно до умови.
Сукупні функціїНеможливо відобразитися в розділі WHERE.Можуть з'являтися у статті HAVING.
Використовується зSELECT та інші оператори, такі як UPDATE, DELETE або будь-який з них.Не можна використовувати без оператора SELECT.
Діє якПопередній фільтрПост-фільтр
GROUP BYПриходить після WHERE.Приходить після того, як.

Визначення пункту Де

Вираз SQL WHERE використовується для опису стану під час вилучення даних з однієї таблиці або шляхом об'єднання з декількома таблицями. Вона повертає тільки конкретне значення з таблиці, якщо задана умова виконана. WHERE використовується для проникнення записів і вилучення тільки необхідних записів.

SQL також реалізує логічні зв'язки і, або, а не в пропозиції WHERE, які також відомі як булеві умови; умова повинна бути істинною для отримання кортежів. Операнди виразів логічних з'єднань включають оператори порівняння, такі як <, <=, >, > =, =, і . Ці оператори порівняння порівнюють рядки та арифметичні вирази. Його можна використовувати в операторі SELECT, а також у операторах UPDATE, DELETE .

Приведемо приклад. Таблиця, наведена нижче як таблиця " Продажі ", складається з атрибутів " Продукт " і "Кількість продажів ".

Для розрахунку загального обсягу продажів телефонів і динаміків потрібно записати наступний запит.

 SELECT Продукт, сума (Sales_amount) AS Total_sales FROM Sales WHERE Продукт у ('Телефон', 'Динаміки') GROUP BY Продукт; 

Наступним виходом є результуючий висновок, де спочатку фільтруються рядки, витягуються рядки телефону та динаміка, після чого виконується агрегатна функція.

Визначення пункту

SQL надає пропозицію HAVING, яка може використовуватися спільно з пунктом GROUP BY . Це пропозиція HAVING допомагає отримати значення для груп, які відповідають певним умовам. Вимоги WHERE також можна використовувати в поєднанні з пунктом HAVING під час вибору, пропозиція WHERE фільтрує окремий рядок. Потім рядки групуються, і виконуються сукупні обчислення, останнє слово HAVING фільтрує групи.

Він веде себе так само, як і WHERE, якщо ключове слово GROUP BY не використовується. Групові функції, такі як min, max, avg, sum та count можуть з'являтися лише у двох пунктах: SELECT та HAVING. Вона забезпечує умову на кортежах, що відповідають кожному значенню в групі атрибутів. Єдиний набір записів, що задовольняє умові, буде показаний як результат.

Тут також ми беремо той самий приклад, як WHERE і розглядаючи ту саму таблицю ' Sales '. Коли ми хочемо розрахувати Total_sales телефону та динаміків за допомогою пункту HAVING, ми напишемо наступний запит.

 SELECT Продукт, сума (Sales_amount) AS Total_sales FROM Продаж GROUP BY Product HAVING Продукт у ('phone', 'Speakers'); 

Запит виробляє наступний висновок, де продукти спочатку витягуються, потім виконується сукупна функція (сума), а останні групи фільтруються на відміну від статті WHERE.

Коли ми хочемо знайти тільки ті продукти, у яких сума всього перевищує 1000. Запит можна записати так:

 SELECT Продукт, сума (Sales_amount) AS Total_sales FROM Sales GROUP За продуктом, що має суму (Sales_amount)> 1000; 

Вироблений вихід:

Це не може бути виконано за допомогою пропозиції WHERE, незважаючи на HAVING, і він генерує повідомлення про помилку, оскільки пропозиція WHERE не може бути використана з сукупними функціями.

Основні відмінності між пунктом де і з яким має місце

  1. Застереження WHERE використовується в операціях рядків і застосовується до однієї рядки, тоді як пропозиція HAVING використовується в операціях стовпців і може застосовуватися до узагальнених рядків або груп.
  2. У розділі WHERE потрібні дані вибираються відповідно до застосованого стану. Навпаки, стаття HAVING отримує цілі дані, тоді поділ виконується відповідно до умови.
  3. Агреговані функції, такі як min, sum, max, avg, ніколи не можуть з'являтися разом з пропозицією WHERE. На відміну від цього, ці функції можуть з'являтися в статті HAVING.
  4. Вираз HAVING не можна використовувати без оператора SELECT. І навпаки, WHERE можна використовувати з SELECT, UPDATE, DELETE тощо.
  5. Розділ WHERE веде себе як попередній фільтр, тоді як пропозиція HAVING діє як пост-фільтр.
  6. Якщо WHERE використовується з GROUP BY, пропозиція WHERE приходить до GROUP BY. Це означає, що WHERE фільтрує рядки, перш ніж виконувати агреговані обчислення. З іншого боку, HAVING приходить після GROUP BY, що означає, що він фільтрується після виконання сукупних обчислень.

Висновок

Застосунок WHERE і HAVING працює таким же чином, за винятком додаткової функції, для якої популярна пропозиція HAVING. Розділ HAVING може ефективно працювати з агрегатними функціями, тоді як WHERE не може працювати з агрегатними функціями.

Top