Computer >> 컴퓨터 >  >> 프로그래밍 >> SQL Server

SQL Server에서 AND 조건과 OR 조건 결합하는 방법

SQL Server에서 AND 조건과 OR 조건 결합하기

이 글에서는 SQL Server(Transact-SQL)에서 AND 조건OR 조건을 함께 사용하는 방법을 소개합니다.

AND 조건과 OR 조건은 각각 별도의 튜토리얼로도 다루지만, 실무에서는 이 두 조건을 조합하여 SELECT, INSERT, UPDATE, DELETE 문과 함께 사용하는 경우가 훨씬 많습니다.

두 조건을 결합할 때 가장 중요한 점은 괄호(Parentheses)를 사용해야 한다는 것입니다. 괄호를 통해 데이터베이스가 각 조건을 평가하고 실행할 순서를 정확히 알 수 있기 때문입니다.

AND 조건과 OR 조건을 결합하는 기본 문법

WHERE '조건 1'
AND '조건 2'
...
OR '조건 n';

매개변수 설명

조건 1, 조건 2 … 조건 n

레코드가 최종적으로 선택될지 여부를 판단하기 위해 평가되는 조건들을 의미합니다.

참고 사항

  1. AND와 OR 조건을 사용하면 하나의 쿼리에서 여러 개의 조건을 동시에 검사할 수 있습니다.
  2. 실행 순서는 괄호에 의해 결정되므로, 괄호 사용을 잊지 말아야 합니다.
  3. SQL에서는 일반적으로 AND 연산자가 OR 연산자보다 먼저 평가되므로, 원하는 논리를 명확히 하려면 괄호로 우선순위를 지정하는 것이 좋습니다.

예제 1 – SELECT 문

SELECT *
FROM nhanvien
WHERE (ho = 'Anderson' AND ten = 'Sarah')
OR (nhanvien_id = 75);

이 쿼리는 성(ho)이 'Anderson'이고 이름(ten)이 'Sarah'인 직원 또는 직원 ID(nhanvien_id)가 75인 직원을 모두 조회합니다. 괄호가 조건의 평가 순서를 결정한다는 점에 유의하세요.

예제 2 – SELECT 문 (복잡한 조합)

SELECT nhanvien_id, ho, ten
FROM nhanvien
WHERE (ho = 'Smith')
OR (ho = 'Anderson' AND ten = 'Sarah')
OR (nhanvien_id > 1000 AND bang = 'California');

이 예제에서는 다음 세 가지 경우 중 하나에 해당하는 직원의 ID, 성, 이름이 결과로 반환됩니다.

  • 성이 'Smith'인 경우
  • 성이 'Anderson'이고 이름이 'Sarah'인 경우
  • 직원 ID가 1000보다 크고 주(bang)가 'California'인 경우

예제 3 – INSERT 문

INSERT INTO danhba
(ho, ten)
SELECT ho, ten
FROM nhanvien
WHERE (ho = 'Johnson' OR ho = 'Anderson')
AND nhanvien_id > 54;

이 예제는 성이 'Johnson' 또는 'Anderson'이면서 직원 ID가 54보다 큰 직원들의 성과 이름 데이터를 주소록(danhba) 테이블에 삽입합니다. OR 조건이 괄호로 묶여 있으므로, 두 성 중 하나에 해당하고 ID 조건까지 만족해야 삽입됩니다.

예제 4 – UPDATE 문

UPDATE nhanvien
SET ho = 'TBD'
WHERE nhanvien_id <= 2000
AND (bang = 'California' OR bang = 'Arizona');

이 쿼리는 직원 ID가 2000 이하이면서 거주 주가 'California' 또는 'Arizona'인 직원의 성(ho)을 'TBD'로 변경합니다. 여기서도 OR 부분을 괄호로 묶어 AND 조건과의 관계를 명확히 했습니다.

예제 5 – DELETE 문

DELETE FROM nhanvien
WHERE bang = 'California'
AND (ho = 'Johnson' OR ten = 'Joe');

DELETE 문에서 AND와 OR 조건을 결합한 이 예제는 주가 'California'이면서 성이 'Johnson'이거나 이름이 'Joe'인 모든 레코드를 테이블에서 삭제합니다.

마무리

AND와 OR 조건을 결합하면 매우 유연한 데이터 필터링이 가능하지만, 괄호 없이 작성하면 의도와 다른 결과가 나올 수 있습니다. 특히 UPDATE나 DELETE처럼 데이터가 변경되는 문장에서는 항상 먼저 SELECT 문으로 조건을 검증한 후 실행하는 습관을 들이는 것이 안전합니다.