조건 창에서 검색 조건 결합 규칙(Visual Database Tools)
적용 대상:SQL Server
원하는 수의 AND 및 OR 연산자와 연결된 검색 조건을 포함하는 쿼리를 만들 수 있습니다. AND 및 OR 절이 조합된 쿼리는 복잡해질 수 있으므로, 쿼리를 실행할 때 이러한 쿼리가 해석되는 방식과 이러한 쿼리가 조건 창 및 SQL 창에 어떻게 나타나는지를 이해하는 것이 유용합니다.
메모
하나의 AND 또는 OR 연산자만 포함하는 검색 조건에 대한 자세한 내용은 한 열에 대한 여러 검색 조건 지정(Visual Database Tools)여러 열에 대한 여러 검색 조건 지정(Visual Database Tools)참조하세요.
아래에서 다음 정보를 찾을 수 있습니다.
둘 다 포함된 쿼리에서 AND 및 OR의 우선 순위입니다.
AND 및 OR 절의 조건이 논리적으로 서로 관련되는 방식
AND 및 OR를 모두 포함하는 조건 창 쿼리에서 쿼리 및 뷰 디자이너가 나타내는 방식입니다.
아래 토론을 이해하는 데 도움이 되도록 hire_date
, job_lvl
및 status
열이 포함된 employee
테이블로 작업한다고 상상해 보세요. 이 예제에서는 직원이 회사에서 근무한 기간(즉, 직원의 고용 날짜), 직원이 수행하는 작업 유형(작업 수준) 및 직원의 상태(예: 사용 중지)와 같은 정보를 알아야 한다고 가정합니다.
AND 및 OR의 우선 순위
쿼리가 실행되면 먼저 AND와 연결된 절을 평가한 다음 OR로 연결된 절을 평가합니다.
메모
NOT 연산자는 AND 및 OR보다 우선합니다.
예를 들어, 회사에서 5년 이상 근무한 직원 또는 고용 날짜와 관계없이 중간 수준의 일자리를 가진 직원을 찾으려면 다음과 같은 WHERE 절을 작성할 수 있습니다.
WHERE
hire_date < '01/01/95' AND
job_lvl = 100 OR
job_lvl = 200
OR보다 AND의 기본 우선 순위를 재정의하려면 SQL 창의 특정 조건에 괄호를 배치할 수 있습니다. 괄호 안의 조건은 항상 먼저 평가됩니다. 예를 들어 하위 또는 중간 수준의 작업에서 5년 이상 회사에 근무한 모든 직원을 찾으려면 다음과 같은 WHERE 절을 생성할 수 있습니다.
WHERE
hire_date < '01/01/95' AND
(job_lvl = 100 OR job_lvl = 200)
팁
명확성을 위해 기본 우선 순위에 의존하는 대신 AND 및 OR 절을 결합할 때 항상 괄호를 포함하는 것이 좋습니다.
여러 OR 절과 함께 작동하는 AND의 기능
AND 및 OR 절이 결합된 경우 어떻게 관련되는지 이해하면 쿼리 및 뷰 디자이너에서 복잡한 쿼리를 구성하고 이해하는 데 도움이 될 수 있습니다.
AND를 사용하여 여러 조건을 연결하는 경우 AND와 연결된 첫 번째 조건 집합이 두 번째 집합의 모든 조건에 적용됩니다. 즉, AND와 다른 조건에 연결된 조건이 두 번째 집합의 모든 조건에 분산됩니다. 예를 들어 다음 개략적인 표현은 OR 조건 집합에 연결된 AND 조건을 보여 있습니다.
A AND (B OR C)
위의 표현은 AND 조건이 두 번째 조건 집합에 분산되는 방법을 보여 주는 다음 도식 표현과 논리적으로 동일합니다.
(A AND B) OR (A AND C)
이 분산 원칙은 쿼리 및 뷰 디자이너를 사용하는 방법에 영향을 줍니다. 예를 들어 하위 또는 중간 수준의 작업에서 5년 이상 회사에 근무한 모든 직원을 찾고 있다고 가정해 보겠습니다. SQL 창의 문에 다음 WHERE 절을 입력합니다.
WHERE (hire_date < '01/01/95' ) AND
(job_lvl = 100 OR job_lvl = 200)
AND와 연결된 절은 OR과 연결된 두 절에 모두 적용됩니다. 이를 표현하는 명시적 방법은 OR 절의 각 조건에 대해 AND 조건을 한 번 반복하는 것입니다. 다음 문은 이전 문보다 더 명시적이고 길지만 논리적으로 동일합니다.
WHERE (hire_date < '01/01/95' ) AND
(job_lvl = 100) OR
(hire_date < '01/01/95' ) AND
(job_lvl = 200)
연결된 OR 절에 AND 절을 배포하는 원칙은 관련된 개별 조건 수에 관계없이 적용됩니다. 예를 들어 회사에 5년 이상 근무했거나 퇴직한 상위 또는 중간 수준의 직원을 찾고자 하는 경우를 가정해 보겠습니다. WHERE 절은 다음과 같을 수 있습니다.
WHERE
(job_lvl = 200 OR job_lvl = 300) AND
(hire_date < '01/01/95' ) OR (status = 'R')
AND와 연결된 조건이 배포된 후 WHERE 절은 다음과 같습니다.
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 절을 나타내는 방법
쿼리 및 뷰 디자이너는 조건 창검색 조건을 나타냅니다. 그러나 AND 및 OR와 연결된 여러 절이 포함된 경우 조건 창의 표현이 예상과 다를 수 있습니다. 또한 조건 창 또는 다이어그램 창쿼리를 수정하는 경우 입력한 것과 SQL 문이 변경된 것을 확인할 수 있습니다.
일반적으로 이러한 규칙은 조건 창에 AND 및 OR 절이 표시되는 방식을 지정합니다.
AND로 연결된 모든 조건은 필터 그리드 열이나 같은 또는... 열에 나타납니다.
OR와 관련된 모든 조건은 별도의 또는... 열에 나타납니다.
AND 및 OR 절 조합의 논리적 결과가 AND가 여러 OR 절에 분산되어 있는 경우 조건 창은 필요에 따라 AND 절을 여러 번 반복하여 이를 명시적으로 나타냅니다.
예를 들어 SQL 창에서 AND와 연결된 두 절이 OR과 연결된 세 번째 절보다 우선하는 다음과 같은 검색 조건을 만들 수 있습니다.
WHERE (hire_date < '01/01/95' ) AND
(job_lvl = 100) OR
(status = 'R')
쿼리 및 뷰 디자이너는 다음과 같이 조건 창에서 이 WHERE 절을 나타냅니다.
조건 창에서 OR 절의 우선순위조건 창에서 OR 절의 우선순위
그러나 연결된 OR 절이 AND 절보다 우선하는 경우 AND 절은 각 OR 절에 대해 반복됩니다. 이렇게 하면 AND 절이 각 OR 절에 배포됩니다. 예를 들어 SQL 창에서 다음과 같은 WHERE 절을 만들 수 있습니다.
WHERE (hire_date < '01/01/95' ) AND
( (job_lvl = 100) OR
(status = 'R') )
쿼리 및 뷰 디자이너는 다음과 같이 조건 창에서 이 WHERE 절을 나타냅니다.
연결된 OR 절에 하나의 데이터 열만 포함된 경우 쿼리 및 뷰 디자이너는 전체 OR 절을 그리드의 단일 셀에 배치할 수 있으므로 AND 절을 반복할 필요가 없습니다. 예를 들어 SQL 창에서 다음과 같은 WHERE 절을 만들 수 있습니다.
WHERE (hire_date < '01/01/95' ) AND
((status = 'R') OR (status = 'A'))
쿼리 및 뷰 디자이너는 다음과 같이 조건 창에서 이 WHERE 절을 나타냅니다.
쿼리를 변경하는 경우(예: 조건 창의 값 중 하나를 변경) 쿼리 및 뷰 디자이너는 SQL 창에서 SQL 문을 다시 만듭니다. 다시 생성된 SQL 문은 원래 문이 아닌 조건 창 표시와 유사합니다. 예를 들어 조건 창에 분산 AND 절이 포함된 경우 SQL 창의 결과 문은 명시적 분산 AND 절을 사용하여 다시 만들어집니다. 자세한 내용은 이 항목의 앞부분에 있는 "AND가 여러 OR 절과 함께 작동하는 방식"을 참조하세요.
참고 항목
검색 조건 지정 (Visual Database Tools)