Різниця між тим, де і з яким пунктом є SQL

Автор: Laura McKinney
Дата Створення: 1 Квітень 2021
Дата Оновлення: 12 Травень 2024
Anonim
30 глупых вопросов Agile-коучу [Карьера в IT]
Відеоролик: 30 глупых вопросов Agile-коучу [Карьера в IT]

Зміст


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

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

  1. Порівняльна діаграма
  2. Визначення
  3. Ключові відмінності
  4. Висновок

Порівняльна діаграма

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


Визначення де застереження

SQL ДЕ ЗАКЛАД використовується для опису стану під час отримання даних з однієї таблиці або приєднання до кількох таблиць. Це значення повертає конкретне значення з таблиці лише в тому випадку, якщо задана умова виконана. Пункт WHERE використовується для проникнення записів та отримання лише необхідних записів.

SQL також реалізує логічні сполучники і, або і ні в пункті WHERE, які також відомі як булева стан; умова повинна бути вірною для отримання кортежів. Операнди виразів логічних сполучників залучають операторів порівняння, таких як <, <=, >, >=, =, і <>. Ці оператори порівняння порівнюють рядки та арифметичні вирази. Його можна використовувати в ВИБІРИ заява, а також в UPDATE, УДАЛИТИ заяви.

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


Наступний запит повинен бути записаний для обчислення Всього_продаж телефону та динаміків

ВИБІРТЕ товар, сума (сума продажу) ЯК Всього_продаж від продажів, де продукт у (телефон, динаміки) ГРУПА ПО продукту;

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

Визначення наявності пункту

SQL забезпечує ПЕРЕГЛЯД ДІЯЛЬНОСТІ який може бути використаний спільно з ГРУПА ПО стаття Цей пункт HAVING допомагає отримати значення для груп, які відповідають певним умовам. WHERE пункт також може використовуватись спільно з пунктом HAVING під час вибору, WHERE пропозиція фільтрує окремий рядок. Потім рядки групуються, і проводяться сукупні обчислення, нарешті, пункт HAVING фільтрує групи.

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

Тут ми також беремо той самий приклад, що і пункт WHERE, і розглядаємо те саме "Продажі'Стіл. Коли ми хочемо обчислити Всього_продаж телефону та динаміків за допомогою пункту HAVING, ми запишемо наступний запит.

ВИБІРТЕ товар, сума (сума продажу) ЯК Всього_продаж від ГРУПИ продажів за продуктом, що має товар у (телефон, динаміки);

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

Коли ми хочемо знайти лише ті продукти, де Всього_продаж більше 1000. Запит можна записати так:

ВИБІРТЕ товар, сума (сума продажу) ЯК Всього_продаж від ГРУПИ продажів ПО ВИДАЛЕННЮ товару (сума_здійснення)> 1000;

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

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

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

Висновок

СТОГО і ХАВУЮЧИЙ пункт працює так само, за винятком додаткової функції, якою користується застереження HAVING. Стаття HAVING може ефективно працювати з агрегованими функціями, тоді як WHERE не може працювати з сукупними функціями.