0Pricing
Coding Interview Prep · 강의

AND와 OR의 우선순위 및 괄호 사용

면접관이 질문에 심어 두는 가장 흔한 필터링 오류를 알아봅니다.

AND와 OR의 우선순위 및 괄호 사용은(는) CoddyKit의 무료 Coding Interview Prep 강의입니다. 이것은 4개 중 1번째 강의입니다. 아래에서 전체 강의를 무료로 읽을 수 있으며, 내장 코드 에디터와 24/7 AI 튜터와 함께 브라우저에서 직접 실습할 수 있습니다. 이 강의는 Coding Interview Prep 학습 경로의 일부이며, 진행 상황이 웹과 CoddyKit 앱에 동기화됩니다. Coding Interview Prep 강의에는 총 4개의 강의가 포함되어 있습니다.

면접관이 심어 놓은 함정

면접에서 가장 흔한 필터링 오류는 얼핏 보면 올바르게 보입니다. 다음과 같은 요청을 받았다고 해 보겠습니다. 고객 5의 보류 중이거나 배송 완료된 주문을 찾으십시오. 한 지원자가 WHERE에서 AND와 OR를 함께 사용하고 추가 행을 반환합니다.

왜일까요? AND가 OR보다 더 강하게 결합하기 때문입니다. 데이터베이스는 모든 AND 쌍을 먼저 평가한 다음 OR를 평가합니다. 이 레슨에서는 이 규칙을 반사적으로 적용할 수 있게 하여 이 문제로 점수를 잃지 않도록 합니다.

한 문장으로 보는 연산자 우선순위

모든 SQL 방언에서 논리 연산자는 다음 순서로 결합합니다. NOT이 먼저이고, 그다음 AND, 마지막이 OR입니다.

  • NOT의 우선순위가 가장 높습니다
  • AND는 중간입니다
  • OR의 우선순위가 가장 낮습니다

따라서 A OR B AND C는 A OR (B AND C)로 해석하며, (A OR B) AND C로는 절대 해석하지 않습니다. 면접관은 여러분이 이 점을 잊기를 기대합니다.

잘못된 쿼리

다음은 고객 5이면서 상태가 보류 중이거나 배송 완료인 경우를 찾기 위해 지원자가 작성한 쿼리입니다. 맞아 보이지만 잘못되었습니다.

AND가 더 강하게 결합하므로 SQL은 이를 (customer_id = 5 AND status = 'pending') OR status = 'shipped'로 해석합니다. 두 번째 분기에는 고객 필터가 전혀 없으므로 모든 고객의 배송 완료 주문을 반환합니다.

SELECT *
FROM orders
WHERE customer_id = 5
  AND status = 'pending'
  OR status = 'shipped';

해결 방법: 괄호

고객 필터가 두 상태 모두에 적용되도록 OR 분기를 괄호로 감싸십시오. 괄호는 우선순위를 재정의하고 의도를 명확하게 합니다.

이제 SQL은 그룹화된 OR을 먼저 평가한 다음 customer_id = 5를 전체 그룹에 적용합니다. 선임 검토자는 우선순위가 이미 올바르게 작동하는 경우에도 오로지 가독성을 위해 괄호를 추가합니다.

SELECT *
FROM orders
WHERE customer_id = 5
  AND (status = 'pending' OR status = 'shipped');

진리표 따라가기

고객 9의 배송 완료 주문을 하나 예로 들어 잘못된 버전을 추적해 보겠습니다.

  • customer_id = 5는 거짓입니다
  • status = 'pending'는 거짓입니다
  • false AND false는 거짓입니다
  • false OR (status = 'shipped' is true)는 참입니다

이 행은 고객 5의 행이 아닌데도 반환됩니다. 구체적인 행 하나를 소리 내어 추적해 보는 것이 면접관이 정확히 확인하려는 부분입니다.

NOT이 가장 강하게 결합합니다

NOT은 바로 뒤에 오는 조건에만 적용됩니다. 따라서 NOT status = 'open' AND priority = 'high'는 (NOT status = 'open') AND priority = 'high'를 의미합니다.

전체 조건을 부정하려는 경우에는 반드시 괄호를 사용해야 합니다. NOT (status = 'open' AND priority = 'high')는 드모르간의 법칙에 따라 status <> 'open' OR priority <> 'high'와 같습니다.

SELECT *
FROM tickets
WHERE NOT (status = 'open' AND priority = 'high');

세 가지 조건을 사용하는 예

(전자제품 또는 가전제품)이면서 재고가 있는 제품을 찾습니다. 괄호가 없으면 재고 필터가 가전제품에만 적용됩니다.

아래의 그룹화된 쿼리는 읽기 쉽습니다. 두 범주 중 하나를 선택한 다음 재고를 요구합니다. 기억할 규칙은 다음과 같습니다. 쿼리에서 AND와 OR를 함께 사용하면 거의 항상 OR 그룹 주위에 괄호가 필요합니다.

SELECT *
FROM products
WHERE (category = 'electronics' OR category = 'appliances')
  AND in_stock = true;

더 깔끔한 대안인 IN

같은 열에 OR를 길게 이어 쓰면 오류가 발생하기 쉽고 장황합니다. 이를 명확하고 괄호도 필요 없는 IN으로 바꾸세요.

아래 쿼리는 이전 쿼리와 정확히 같지만 수정 과정에서 망가뜨리기 어렵습니다. 면접관은 이 리팩터링을 통해 지원자가 정확성과 가독성을 모두 이해하고 있다는 점을 확인할 수 있기 때문에 좋게 평가합니다.

SELECT *
FROM products
WHERE category IN ('electronics', 'appliances')
  AND in_stock = true;

계산된 필터에서의 우선순위

산술과 논리가 섞일 때도 우선순위가 적용됩니다. price * 1.2 > 100 OR discount = 0 AND active = true에서는 비교와 산술이 먼저 처리되고, 그다음 AND, 마지막으로 OR가 처리됩니다.

따라서 이는 (price * 1.2 > 100) OR ((discount = 0) AND (active = true))로 읽힙니다. 확신이 서지 않을 때는 압박 속에서 우선순위 표를 외우려 하지 말고 모든 그룹에 괄호를 넣으세요.

현장에서 답하는 방법

면접관이 AND/OR가 섞인 필터를 보여 주며 이것은 무엇을 반환하나요?라고 물으면 다음 세 가지를 하세요.

  • 우선순위 규칙을 말합니다. AND가 OR보다 먼저 처리됩니다
  • 쿼리에 괄호를 다시 넣어 실제 그룹화를 소리 내어 설명합니다
  • 오류를 드러내는 행 하나를 추적합니다

그런 다음 올바르게 괄호를 넣은 버전을 제시하세요. 이 순서로 답하면 시니어 수준의 엄밀함을 보여 줍니다.

방어적인 습관

전문가의 습관은 다음과 같습니다. 항상 모든 OR 그룹에 괄호를 넣으세요. 문자 두 개만 추가하면 오류 유형 전체와 코드 검토 의견을 없앨 수 있습니다.

코드 검토자가 필터가 올바른지 확인하기 위해 머릿속으로 우선순위를 계산하게 해서는 안 됩니다. 그룹화를 눈에 보이게 만드세요. 중복되는 구문이 모두에게 좋은 스타일로 인정되는 몇 안 되는 경우 중 하나입니다.

SELECT order_id, status
FROM orders
WHERE customer_id = 5
  AND (status = 'pending' OR status = 'shipped');

빠른 확인

답하기 전에 우선순위 규칙을 먼저 생각해 보세요.

요약

핵심 내용:

  • 논리 연산자의 우선순위는 NOT, 그다음 AND, 그다음 OR입니다
  • AND/OR가 섞인 필터에는 거의 항상 OR 그룹 주위에 괄호가 필요합니다
  • 괄호가 빠지면 결과 범위가 조용히 넓어져 필터 하나가 통째로 빠지는 경우가 많습니다
  • 한 열에 길게 이어진 OR를 IN으로 바꾸세요
  • 현장에서 답할 때는 규칙을 말하고, 괄호를 다시 넣고, 행 하나를 추적한 다음 수정하세요

우선순위가 이미 의도와 일치하더라도 항상 OR 그룹에 괄호를 넣으세요.

자주 묻는 질문

“AND와 OR의 우선순위 및 괄호 사용” 강의는 무료인가요?

네 — “AND와 OR의 우선순위 및 괄호 사용” 전체 내용을 이 웹사이트에서 무료로 읽을 수 있습니다. 인터랙티브하게 실습하려면(내장 코드 에디터와 24/7 AI 튜터), CoddyKit PRO로 업그레이드하면 Coding Interview Prep 강의 전체를 잠금 해제할 수 있습니다. Coding Interview Prep 강의에는 총 4개의 강의가 포함되어 있습니다.

“AND와 OR의 우선순위 및 괄호 사용”에서 뭘 배우나요?

면접관이 질문에 심어 두는 가장 흔한 필터링 오류를 알아봅니다. 브라우저에서 직접 실행하는 실습 코드로 Coding Interview Prep을(를) 배우며, 24/7 AI 튜터가 강의를 진행하면서 질문에 답변해줍니다.

Coding Interview Prep을(를) 시작하는 데 경험이 필요한가요?

사전 경험은 필요하지 않습니다. CoddyKit의 Coding Interview Prep은(는) 초급자부터 고급 학습자까지를 위해 구성되어 있으므로, 여기서 시작하거나 처음부터 시작할 수 있으며 자신의 속도대로 진행할 수 있습니다. 이것은 4개 중 1번째 강의입니다.

“AND와 OR의 우선순위 및 괄호 사용” 강의는 얼마나 걸리나요?

대부분의 CoddyKit 강의는 약 5~10분이 소요됩니다. 각 강의는 간결하고 인터랙티브하여 꾸준한 진행이 가능하며, 웹과 앱에서 중단한 부분부터 바로 시작할 수 있습니다.

이 Coding Interview Prep 강의에서 코드를 작성하고 실행할 수 있나요?

네. 모든 Coding Interview Prep 강의에는 내장 코드 에디터가 포함되어 있으므로, 브라우저에서 바로 실제 코드를 작성하고 실행한 후 즉시 AI 피드백을 받을 수 있습니다 — 로컬 설정이 필요 없습니다.

이 강의의 모든 강의

  1. AND와 OR의 우선순위 및 괄호 사용
  2. BETWEEN, IN과 포함 경계
  3. LIKE, 와일드카드와 이스케이프
  4. 계산된 값으로 필터링하기
← Coding Interview Prep(으)로 돌아가기