추천, 2024

에디터의 선택

SQL에서 Where와 Where 절의 차이점

WHERE 및 HAVING 절은 주로 SQL 쿼리 문에 사용되므로 특정 조건자를 사용하여 결과 관계의 조합을 제한 할 수 있습니다. WHERE 절과 HAVING의 가장 큰 차이점은 WHERE 절이 필요한 경우 조인 조건을 포함하여 관계에서 튜플 (행) 을 선택하기위한 조건을 지정한다는 것입니다. 반면 HAVING 절은 개별 튜플이 아닌 선택된 그룹 에 대한 조건을 지정합니다.

SQLSQL ( Structured Query Language)의 약자입니다. 데이터베이스에서 데이터에 액세스하는 데 사용되는 포괄적 인 또는 선언적 데이터베이스 언어입니다.

비교 차트

비교 근거어디에지키는
기본행 조작으로 구현됩니다.열 작업에 구현되었습니다.
적용 대상단일 행요약 행 또는 그룹.
데이터 가져 오기조건에 따라 특정 행의 특정 데이터 만 가져옵니다.처음에는 완전한 데이터를 가져온 다음 조건에 따라 분리합니다.
집계 함수WHERE 절에 나타날 수 없습니다.HAVING 절에 나타날 수 있습니다.
와 함께 사용SELECT 및 UPDATE, DELETE 또는 둘 중 하나와 같은 다른 명령.SELECT 문 없이는 사용할 수 없습니다.
다음과 같이 행동하십시오.사전 필터링포스트 필터
GROUP BY어디서 왔습니까?지낸 후에 온다.

Where 절의 정의

SQL WHERE 절 은 단일 테이블에서 데이터를 검색 할 때 또는 여러 테이블과 조인 할 때 조건을 설명하는 데 사용됩니다. 지정된 조건이 충족되면 테이블에서 특정 값을 반환합니다. WHERE 절은 레코드를 투과시키고 필요한 레코드 만 검색하는 데 사용됩니다.

또한 SQL은 부울 조건이라고도하는 WHERE 절에 or/ 또는 not 논리 연결을 구현합니다. 튜플을 검색하려면 조건이 true 여야합니다. 논리적 연결 표현식의 피연산자에는 <, <=, >, > =, = 및 같은 비교 연산자가 포함됩니다. . 이러한 비교 연산자는 문자열과 산술 식을 비교합니다. UPDATE, DELETE 문은 물론 SELECT 문에서도 사용할 수 있습니다.

예를 들어 봅시다. 아래 표에서 ' Sales '테이블은 ' Product '및 ' Sales_amount '속성으로 구성됩니다.

다음 쿼리는 전화 및 스피커의 Total_sales 를 계산하기 위해 작성됩니다.

 SELECT 제품, sum (Sales_amount) AS Total_sales From Sales ( '전화', '발표자') 제품 GROUP BY 제품; 

출력 결과는 행이 먼저 필터링되고 전화 및 스피커 행이 검색된 다음 집계 기능이 수행되는 결과 출력입니다.

Having Clause의 정의

SQL은 GROUP BY 절과 함께 사용할 수있는 HAVING 절 을 제공합니다. 이 HAVING 절은 특정 조건을 충족하는 그룹의 값을 검색하는 데 도움이됩니다. WHERE 절은 선택 중에 HAVING 절과 함께 사용할 수도 있습니다. WHERE 절은 개별 행을 필터링합니다. 그런 다음 행이 그룹화되고 집계 계산이 수행되고, 마지막 HAVING 절에서는 그룹을 필터링합니다.

GROUP BY 키워드를 사용하지 않으면 WHERE와 동일하게 작동합니다. min, max, avg, sum 및 count와 같은 그룹 함수는 SELECT 절과 HAVING 절의 두 절에만 나타날 수 있습니다. 속성 그룹의 각 값에 해당하는 튜플에 조건을 제공합니다. 조건을 만족하는 레코드 집합 만 결과로 표시됩니다.

여기에서도 WHERE 절과 동일한 ' Sales '표를 고려한 동일한 예제를 사용합니다. HAVING 절을 사용하여 전화 및 스피커의 Total_sales 를 계산할 때 다음 쿼리를 작성합니다.

 SELECT 제품, sum (Sales_amount) AS Total_sales 매출 GROUP BY 제품 포함 제품 ( 'phone', 'Speakers'); 

쿼리는 먼저 제품을 검색 한 다음 집계 함수 (합계)를 수행하고 마지막 그룹에서 WHERE 절과 달리 필터링 된 다음 출력을 생성합니다.

Total_sales 가 1000보다 큰 제품 만 찾으려고 할 때 쿼리는 다음과 같이 작성할 수 있습니다.

 SELECT 제품, sum (Sales_amount) AS 총 판매 판매 GROUP BY 제품 HAVING sum (Sales_amount)> 1000; 

생성 된 출력은 다음과 같습니다.

이는 HAVING에도 불구하고 WHERE 절을 사용하여 수행 할 수 없으며 WHERE 절을 집계 함수와 함께 사용할 수 없으므로 오류 메시지를 생성합니다.

Where와 Where 절 사이의 주요 차이점

  1. WHERE 절은 행 조작에 사용되며 단일 행에 적용되는 반면, HAVING 절은 열 조작에서 사용되며 요약 된 행 또는 그룹에 적용될 수 있습니다.
  2. WHERE 절에서 적용된 조건에 따라 원하는 데이터를 가져옵니다. 반대로, HAVING 절은 전체 데이터를 가져온 후 조건에 따라 분리를 수행합니다.
  3. min, sum, max, avg와 같은 집계 함수는 절대로 WHERE 절과 함께 표시 될 수 없습니다. 반대로, 이러한 함수는 HAVING 절에 나타날 수 있습니다.
  4. HAVING 절은 SELECT 문 없이는 사용할 수 없습니다. 반대로 SELECT, UPDATE, DELETE 등과 함께 사용할 수 있습니다.
  5. HAVING 절이 사후 필터 역할을하는 동안 WHERE 절은 사전 필터로 동작합니다.
  6. GROUP BY와 함께 사용되는 WHERE 절은 GROUP BY 앞에옵니다. 이는 집계 계산을 수행하기 전에 WHERE 필터 행을 수행함을 나타냅니다. 반면 HAVING은 집계 계산이 수행 된 후 필터링된다는 의미 인 GROUP BY 뒤에옵니다.

결론

WHERE 및 HAVING 절은 HAVING 절이 널리 사용되는 추가 기능을 제외하고 같은 방식으로 작동합니다. HAVING 절은 집계 함수로 효율적으로 작업 할 수 있지만 WHERE는 집계 함수로는 작동 할 수 없습니다.

Top