조건 창의 검색 조건 결합 규칙(Visual Database Tools)Conventions for Combining Search Conditions in the Criteria Pane (Visual Database Tools)

이 항목 적용 대상: 예SQL Server예Azure SQL 데이터베이스예Azure SQL 데이터 웨어하우스 예 병렬 데이터 웨어하우스THIS TOPIC APPLIES TO: yesSQL ServeryesAzure SQL DatabaseyesAzure SQL Data Warehouse yesParallel Data Warehouse AND와 OR 연산자를 여러 개 연결하여 다수의 검색 조건을 포함하는 쿼리를 만들 수 있습니다. You can create queries that include any number of search conditions, linked with any number of AND and OR operators. AND 절과 OR 절을 조합하여 만든 쿼리는 복잡할 수 있으므로 쿼리 실행 시 쿼리를 해석하는 방법 및 조건 창SQL 창에서 쿼리를 나타내는 방법을 이해하면 도움이 됩니다.A query with a combination of AND and OR clauses can become complex, so it is helpful to understand how such a query is interpreted when you execute it, and how such a query is represented in the Criteria Pane and SQL Pane.

참고

AND 또는 OR 연산자가 하나만 포함된 검색 조건에 대한 자세한 내용은 한 열에 여러 검색 조건 지정(Visual Database Tools)여러 열에 여러 검색 조건 지정(Visual Database Tools)을 참조하세요.For details about search conditions that contain only one AND or OR operator, see Specify Multiple Search Conditions for One Column (Visual Database Tools) and Specify Multiple Search Conditions for Multiple Columns (Visual Database Tools).

아래에서 다음에 대한 정보를 찾을 수 있습니다.Below you will find information about:

  • AND와 OR를 모두 포함하는 쿼리에서 AND와 OR의 우선 순위The precedence of AND and OR in queries that contain both.

  • AND 절과 OR 절에 있는 조건들이 논리적으로 서로 연관되는 방법How the conditions in AND and OR clauses relate logically to one another.

  • 쿼리 및 뷰 디자이너가 AND와 OR를 모두 포함하는 쿼리를 조건 창에 나타내는 방법How the Query and View Designer represents in the Criteria Pane queries that contain both AND and OR.

아래의 설명을 쉽게 이해하기 위해 employee , hire_datejob_lvl열을 포함하는 status테이블을 가정해 봅니다.To help you understand the discussion below, imagine that you are working with an employee table containing the columns hire_date, job_lvl, and status. 이 예제에서는 사용자가 직원의 근무 연수(입사 날짜), 업무 유형(직급), 상태(예: 퇴직) 등의 정보를 알고 있어야 한다고 가정합니다.The examples assume that you need to know information such as how long an employee has worked with the company (that is, what the employee's hire date is), what type of job the employee performs (what the job level is), and the employee's status (for example, retired).

AND와 OR의 우선 순위Precedence of AND and OR

쿼리를 실행하면 AND로 연결된 절을 먼저 계산한 다음 OR로 연결된 절을 계산합니다.When a query is executed, it evaluates first the clauses linked with AND, and then those linked with OR.

참고

NOT 연산자는 AND와 OR보다 우선 순위가 높습니다.The NOT operator takes precedence over both AND and OR.

예를 들어, 직급이 낮은 직원 중에서 근무 연수가 5년이 넘는 직원 또는 입사 날짜에 관계없이 중간 직급의 직원을 찾기 위해 WHERE 절을 다음과 같이 구성할 수 있습니다.For example, to find either employees who have been with the company for more than five years in lower-level jobs or employees with middle-level jobs without regard for their hire date, you can construct a WHERE clause such as the following:

WHERE   
   hire_date < '01/01/95' AND   
   job_lvl = 100 OR  
   job_lvl = 200  

OR보다 AND가 우선하는 기본 우선 순위를 무시하려면 SQL 창에서 특정 조건을 괄호로 묶으면 됩니다.To override the default precedence of AND over OR, you can put parentheses around specific conditions in the SQL pane. 괄호 안의 조건은 항상 가장 먼저 계산됩니다.Conditions in parentheses are always evaluated first. 예를 들어, 직급이 낮거나 중간인 직원 중에서 근무 연수가 5년이 넘는 직원을 모두 찾으려면 WHERE 절을 다음과 같이 구성하면 됩니다.For example, to find all employees who have been with the company more than five years in either lower or middle-level jobs, you can construct a WHERE clause such as the following:

WHERE   
   hire_date < '01/01/95' AND   
   (job_lvl = 100 OR job_lvl = 200)  

AND 절과 OR 절을 결합할 때에는 기본 우선 순위에 의존하지 않고 항상 괄호를 사용하여 명확하게 나타내는 것이 좋습니다.It is recommended that, for clarity, you always include parentheses when combining AND and OR clauses instead of relying on the default precedence.

OR 절이 여러 개 있는 경우 AND가 적용되는 방법How AND Works with Multiple OR Clauses

AND 절과 OR 절을 결합할 때 이 절들이 서로 연관되는 방식을 이해하면 쿼리 및 뷰 디자이너에서 복잡한 쿼리를 구성하고 이해하는 데 도움이 됩니다.Understanding how AND and OR clauses are related when combined can help you construct and understand complex queries in the Query and View Designer.

AND를 사용하여 여러 개의 조건을 연결하는 경우 AND로 연결된 첫째 조건 집합이 둘째 집합의 모든 조건에 적용됩니다.If you link multiple conditions using AND, the first set of conditions linked with AND applies to all the conditions in the second set. 즉 다른 조건에 AND로 연결된 조건은 둘째 집합에 있는 모든 조건에 분배됩니다.In other words, a condition linked with AND to another condition is distributed to all the conditions in the second set. 예를 들어, 아래의 표현식은 AND 조건이 OR 조건 집합에 연결된 것을 보여 줍니다.For example, the following schematic representation shows an AND condition linked to a set of OR conditions:

A AND (B OR C)  

위의 표현은 둘째 조건 집합에 AND 조건이 분배되는 방법을 보여 주는 아래 표현식과 논리적으로 일치합니다.The representation above is logically equivalent to the following schematic representation, which shows how the AND condition is distributed to the second set of conditions:

(A AND B) OR (A AND C)  

분배 법칙은 쿼리 및 뷰 디자이너를 사용하는 방법에 영향을 줍니다.This distributive principle affects how you use the Query and View Designer. 예를 들어, 직급이 낮거나 중간인 직원 중에서 근무 연수가 5년이 넘는 직원을 모두 찾는다고 가정해 봅니다.For example, imagine that you are looking for all employees who have been with the company more than five years in either lower or middle-level jobs. SQL 창에서 다음 WHERE 절을 문에 입력합니다.You enter the following WHERE clause into the statement in the SQL pane:

WHERE (hire_date < '01/01/95' ) AND   
   (job_lvl = 100 OR job_lvl = 200)  

AND로 연결된 절은 OR로 연결된 두 절에 모두 적용됩니다.The clause linked with AND applies to both clauses linked with OR. OR 절에 있는 각 조건에 대해 AND 조건을 한 번씩 반복하면 이를 더 분명하게 표현할 수 있습니다.An explicit way to express this is to repeat the AND condition once for each condition in the OR clause. 다음 문은 앞의 문보다 더 분명하고 길지만 논리적으로는 동일합니다.The following statement is more explicit (and longer) than the previous statement, but is logically equivalent to it:

WHERE    (hire_date < '01/01/95' ) AND  
  (job_lvl = 100) OR   
  (hire_date < '01/01/95' ) AND   
  (job_lvl = 200)  

AND 절을 연결된 OR절에 분배하는 원칙은 포함된 개별 조건의 수에 관계없이 적용됩니다.The principle of distributing AND clauses to linked OR clauses applies no matter how many individual conditions are involved. 예를 들어, 근무 연수가 5년이 넘거나 현재 퇴직한 직원 중에서 직급이 높거나 중간인 직원을 찾는다고 가정해 봅니다.For example, imagine that you want to find higher or middle-level employees who have been with the company more than five years or are retired. 이 경우 WHERE 절은 다음과 같습니다.The WHERE clause might look like this:

WHERE   
   (job_lvl = 200 OR job_lvl = 300) AND  
   (hire_date < '01/01/95' ) OR (status = 'R')  

AND로 연결된 조건이 분배된 후 WHERE 절은 다음과 같습니다.After the conditions linked with AND have been distributed, the WHERE clause will look like this:

WHERE   
   (job_lvl = 200 AND hire_date < '01/01/95' ) OR  
   (job_lvl = 200 AND status = 'R') OR  
   (job_lvl = 300 AND hire_date < '01/01/95' ) OR  
   (job_lvl = 300 AND status = 'R')  

다수의 AND 절과 OR 절을 조건 창에 나타내는 방법How Multiple AND and OR Clauses Are Represented in the Criteria Pane

쿼리 및 뷰 디자이너는 검색 조건을 조건 창에 나타냅니다.The Query and View Designer represents your search conditions in the Criteria Pane. 그러나 AND와 OR로 연결된 여러 개의 절을 포함하는 경우 조건 창에 나타내는 방법이 예상과 다를 수도 있습니다.However, in some cases that involve multiple clauses linked with AND and OR, the representation in the Criteria Pane might not be what you expect. 또한 조건 창이나 다이어그램 창에서 쿼리를 수정하면 SQL 문이 입력한 것과 다르게 변경됩니다.In addition, if you modify your query in the Criteria Pane or Diagram Pane, you might find that your SQL statement has been changed from what you entered.

일반적으로 다음 규칙에 따라 조건 창에서 AND 절과 OR 절이 나타납니다.In general, these rules dictate how AND and OR clauses appear in the Criteria Pane:

  • AND로 연결된 모든 조건은 표 형태의 필터 열 또는 동일한 또는... 열에 나타납니다.All conditions linked with AND appear in the Filter grid column or in the same Or... column.

  • OR로 연결된 모든 조건은 별도의 또는... 열에 나타납니다.All conditions linked with OR appear in separate Or... columns.

  • AND 및 OR 절 조합의 논리적 결과가 AND가 여러 개의 OR 절에 분배되는 것이면 조건 창은 AND 절을 필요한 만큼 반복하여 이것을 명시적으로 표현합니다.If the logical result of a combination of AND and OR clauses is that the AND is distributed into several OR clauses, the Criteria Pane represents this explicitly by repeating the AND clause as many times as necessary.

예를 들어, SQL 창에 다음과 같은 검색 조건을 만들 수 있습니다. 이 경우 AND로 연결된 두 절은 OR로 연결된 셋째 절보다 우선 순위가 높습니다.For example, in the SQL pane you might create a search condition such as the following, in which two clauses linked with AND take precedence over a third one linked with OR:

WHERE (hire_date < '01/01/95' ) AND   
  (job_lvl = 100) OR   
  (status = 'R')  

쿼리 및 뷰 디자이너는 아래와 같이 조건 창에 이 WHERE 문을 나타냅니다.The Query and View Designer represents this WHERE clause in the Criteria Pane as follows:

조건 창의 OR 절 우선 순위OR clause precedence in the Criteria Pane

그러나 연결된 OR 절이 AND 절보다 우선 순위가 높으면 AND 절은 각 OR 절에 대해 반복됩니다.However, if the linked OR clauses take precedence over an AND clause, the AND clause is repeated for each OR clause. 이렇게 하면 AND 절이 각 OR 절에 분배됩니다.This causes the AND clause to be distributed to each OR clause. 예를 들어, SQL 창에서 다음과 같은 WHERE 절을 만들 수 있습니다.For example, in the SQL pane you might create a WHERE clause such as the following:

WHERE (hire_date < '01/01/95' ) AND   
  ( (job_lvl = 100) OR   
  (status = 'R') )  

쿼리 및 뷰 디자이너는 아래와 같이 조건 창에 이 WHERE 문을 나타냅니다.The Query and View Designer represents this WHERE clause in the Criteria Pane as follows:

조건 창의 여러 AND 및 OR 절Multiple AND and OR clauses in the Criteria Pane

연결된 OR 절에 데이터 열이 단 하나 포함되어 있는 경우 쿼리 및 뷰 디자이너는 AND 절을 반복할 필요가 없도록 전체 OR 절을 표 형태의 단일 셀에 넣습니다.If the linked OR clauses involve only one data column, the Query and View Designer can place the entire OR clause into a single cell of the grid, avoiding the need to repeat the AND clause. 예를 들어, SQL 창에서 다음과 같은 WHERE 절을 만들 수 있습니다.For example, in the SQL pane you might create a WHERE clause such as the following:

WHERE (hire_date < '01/01/95' ) AND   
  ((status = 'R') OR (status = 'A'))  

쿼리 및 뷰 디자이너는 아래와 같이 조건 창에 이 WHERE 문을 나타냅니다.The Query and View Designer represents this WHERE clause in the Criteria Pane as follows:

조건 창에 정의된 링크된 OR 절Linked OR clauses defined in the Criteria Pane

쿼리를 변경하면(예: 조건 창에서 값 하나를 변경) 쿼리 및 뷰 디자이너는 SQL 창에 SQL 문을 다시 만듭니다.If you make a change to the query (such as changing one of the values in the Criteria Pane), the Query and View Designer recreates the SQL statement in the SQL pane. 다시 만들어진 SQL 문은 원래 문보다는 조건 창에 표시되는 것과 비슷합니다.The recreated SQL statement will resemble the Criteria Pane display rather than your original statement. 예를 들어, 분배된 AND 절이 조건 창에 있는 경우 SQL 창에는 명시적으로 분배된 AND 절로 문이 다시 만들어집니다.For example, if the Criteria Pane contains distributed AND clauses, the resulting statement in the SQL pane will be recreated with explicit distributed AND clauses. 자세한 내용은 이 항목의 앞부분에서 설명한 "OR 절이 여러 개 있는 경우 AND가 적용되는 방법"을 참조하십시오.For details, see "How AND Works with Multiple OR Clauses" earlier in this topic.

참고 항목See Also

검색 조건 지정(Visual Database Tools)Specify Search Criteria (Visual Database Tools)