SQL oznacza Structured Query Language ; jest to obszerny lub deklaratywny język bazy danych służący do uzyskiwania dostępu do danych z baz danych.
Wykres porównania
Podstawa do porównania | GDZIE | MAJĄCY |
---|---|---|
Podstawowy | Wdrożono w operacjach na wierszach. | Wdrożony w operacjach kolumnowych. |
Dotyczy | Jeden rząd | Podsumowany rząd lub grupy. |
Pobieranie danych | Pobiera tylko określone dane z poszczególnych wierszy zgodnie z warunkiem. | Na początku kompletne dane są pobierane, a następnie rozdzielane zgodnie z warunkiem. |
Funkcje agregujące | Nie można wyświetlić w klauzuli WHERE. | Może pojawić się w klauzuli HAVING. |
Używany z | SELECT i inne instrukcje, takie jak UPDATE, DELETE lub jeden z nich. | Nie można go używać bez instrukcji SELECT. |
Zachowuje się jak | Filtr wstępny | Po filtrze |
GRUPUJ WEDŁUG | Przychodzi po GDZIE. | Występuje po HAVING. |
Definicja Where Clause
Klauzula WHERE SQL jest używana do opisania warunku w czasie pobierania danych z pojedynczej tabeli lub łączenia z wieloma tabelami. Zwraca ona tylko określoną wartość z tabeli, jeśli dany warunek jest spełniony. Klauzula WHERE służy do przenikania rekordów i pobierania tylko niezbędnych rekordów.
SQL implementuje również logiczne połączenia i ( lub) nie w klauzuli WHERE, które są również znane jako warunek boolowski ; warunek musi być prawdziwy, aby pobrać krotki. Operandy logicznych wyrażeń connectives obejmują operatory porównania, takie jak <, <=, >, > =, = i . Operatory porównania porównują łańcuchy znaków i wyrażenia arytmetyczne. Może być używany w instrukcji SELECT, a także w instrukcjach UPDATE, DELETE .
Weźmy przykład. Poniższa tabela określona jako tabela " Sprzedaż " składa się z atrybutów " Produkt " i " Wartość zamówienia ".
WYBIERZ Produkt, suma (ilość_sprzedaży) AS Całkowita_sprzedaż ze sprzedaży GDZIE Produkt w ("Telefon", "Głośniki") GROUP BY Produkt;
Definicja posiadanej klauzuli
SQL udostępnia klauzulę HAVING, która może być używana w połączeniu z klauzulą GROUP BY . Ta klauzula HAVING pomaga w pobieraniu wartości dla grup, które spełniają określone warunki. WHERE klauzula może również używać w połączeniu z klauzulą HAVING podczas selekcji, klauzula WHERE filtruje pojedynczy wiersz. Wiersze są następnie grupowane i wykonywane są obliczenia agregacji, na końcu klauzula HAVING filtruje grupy.
Zachowuje się tak samo jak WHERE, gdy słowo kluczowe GROUP BY nie jest używane. Funkcje grupy takie jak min, max, avg, suma i count mogą pojawiać się tylko w dwóch klauzulach: SELECT i HAVING. Zapewnia warunek dotyczący krotek odpowiadających każdej wartości w grupie atrybutów. W wyniku zostanie wyświetlony tylko zestaw rekordów spełniających warunek.
Tutaj również przyjmujemy ten sam przykład, co klauzula WHERE i biorąc pod uwagę tę samą tabelę " Sprzedaż ". Kiedy chcemy obliczyć Total_sales telefonu i głośników za pomocą klauzuli HAVING, napiszemy następujące zapytanie.
SELECT Produkt, suma (ilość_sprzedaży) AS Całkowita_sprzedaż Z grupy sprzedaży według produktu POSIADAJĄC Produkt w ("telefon", "Głośniki");
Kwerenda generuje następujące dane wyjściowe, w których produkty są pobierane jako pierwsze, a następnie funkcja agregująca (suma) jest wykonywana, a na końcu grupy są filtrowane w przeciwieństwie do klauzuli WHERE.
Kiedy chcemy znaleźć tylko te produkty, w których Total_sales jest większe niż 1000. Zapytanie można zapisać jako:
SELECT Produkt, suma (ilość_sprzedaży) AS Całkowita_sprzedaż Z grupy sprzedaży według produktu MAJĄCĄ sumę (wartość_sprzeday)> 1000;
Wytworzona produkcja to:
Nie można tego zrobić przy użyciu klauzuli WHERE pomimo HAVING i generuje komunikat o błędzie, ponieważ klauzula WHERE nie może być używana z funkcjami agregującymi.
Kluczowe różnice między klauzulami Where and Having
- WHERE klauzula jest używana w operacjach wiersza i stosowana w jednym wierszu, podczas gdy klauzula HAVING jest używana w operacjach kolumnowych i może być stosowana do podsumowanych wierszy lub grup.
- W klauzuli WHERE żądane dane są pobierane zgodnie z zastosowanym warunkiem. Natomiast klauzula HAVING pobiera całe dane, a separacja odbywa się zgodnie z warunkiem.
- Funkcje agregujące takie jak min, sum, max, avg nigdy nie mogą pojawić się razem z klauzulą WHERE. W przeciwieństwie do tego, funkcje te mogą pojawić się w klauzuli HAVING.
- Klauzula HAVING nie może być używana bez instrukcji SELECT. Odwrotnie, WHERE może być używane z SELECT, UPDATE, DELETE itp.
- WHERE klauzula zachowuje się jak filtr wstępny, a klauzula HAVING działa jako filtr końcowy.
- Klauzula WHERE używana w GROUP BY pojawia się przed GROUP BY. Oznacza to, że WHERE wierszy filtrów przed obliczeniami zbiorczymi są wykonywane. Z drugiej strony HAVING następuje po GROUP BY, co oznacza, że filtry są wykonywane po wykonaniu obliczeń agregacyjnych.
Wniosek
GDZIE i klauzula HAVING działa w taki sam sposób, z wyjątkiem dodatkowej funkcji, która jest popularna dla klauzuli HAVING. Klauzula HAVING może efektywnie pracować z funkcjami agregującymi, a WHERE nie może działać z funkcjami zagregowanymi.