Препоръчано, 2024

Избор На Редактора

Разлика между клауза Къде и с клауза в SQL

КЪДЕ и клаузата HAVING се използват главно в изявлението на SQL заявки, те ни позволяват да ограничим комбинацията в резултата от резултата чрез използване на конкретен предикат. Основната разлика между WHERE и HAVING е, че клаузата WHERE определя условията за избор на кортежите (редовете) от отношенията, включително условията за присъединяване, ако е необходимо. От друга страна, клаузата HAVING определя условие за избраните групи, а не за отделни кортежи.

SQL означава Структуриран език за заявки ; това е изчерпателен или декларативен език на базата данни, използван за достъп до данните от базите данни.

Сравнителна таблица

Основа за сравнениеКЪДЕТОКАТО
ОсновенРеализирани в ред операции.Прилага се в колонна операция.
Приложен заЕдин редОбобщен ред или групи.
Извличане на данниТой извлича само определени данни от определени редове в зависимост от състоянието.Първо, пълните данни се извличат, след това се разделят според състоянието.
Агрегирани функцииНе може да се покаже в клаузата WHERE.Може да се появи в клауза HAVING.
Използва се сSELECT и други оператори като UPDATE, DELETE или едно от тях.Не може да се използва без изявление SELECT.
Дръж се катоПредварително филтърПост-филтър
ГРУПИРАЙ ПОИдва след КЪДЕ.Идва след като.

Определение на клауза "Където"

Клаузата за SQL WHERE се използва за описване на условие по време на извличане на данни от една таблица или чрез присъединяване към множество таблици. Тя връща само определена стойност от таблицата, ако даденото условие е изпълнено. Клаузата WHERE се използва за проникване на записите и извличане само на необходимите записи.

SQL също реализира логическите връзки и, или не в клаузата WHERE, която също е известна като булево условие; условието трябва да е вярно, за да се изтеглят кортежите. Операндите на изразите на логическите съединения включват оператори за сравнение като <, <=, >, > =, = и , Тези сравнителни оператори сравняват низове и аритметични изрази. Може да се използва в оператора SELECT, както и в операторите UPDATE, DELETE .

Да вземем за пример. Таблицата, показана по-долу, наречена таблица „ Продажби “, се състои от атрибути „ Продукт “ и „ Продажби “.

Следващата заявка трябва да бъде написана, за да се изчислят Total_sales на телефон и високоговорители.

 SELECT Продукт, сума (Sales_amount) AS Total_sales FROM Продажби 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, ще напишем следния въпрос.

 ИЗБЕРЕТЕ продукт, сума (Sales_amount) AS Total_sales FROM Продажби GROUP По продукт КАКВАТО Продукт в ("телефон", "Говорители"); 

Заявката произвежда следния изход, при който продуктите се извличат първо, след това се извършва агрегираната функция (сума) и накрая групите се филтрират за разлика от клаузата WHERE.

Когато искаме да намерим само онези продукти, при които Общият брой на продажбите е по-голям от 1000. Заявката може да бъде записана като:

 SELECT Продукт, сума (Sales_amount) AS Total_sales FROM Продажби GROUP По продукт HAVING сума (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, идва преди GROUP BY. Това означава, че WHERE филтрира редовете, преди да се извършат обобщените изчисления. От друга страна, HAVING идва след GROUP BY, което означава, че филтрира след извършване на агрегирани изчисления.

заключение

WHERE и HAVING клаузата работи по същия начин, с изключение на допълнителната функция, за която HAVING клаузата е популярна. Клаузата HAVING може ефективно да работи с агрегирани функции, докато WHERE не може да работи с агрегирани функции.

Top