Computer >> 컴퓨터 >  >> 프로그래밍 >> MySQL

MySQL 뷰 생성 시 논리 연산자(AND, OR, NOT) 조합 활용 방법

MySQL에서는 AND, OR, NOT과 같은 논리 연산자를 조합하여 뷰(View)를 생성할 수 있습니다. WHERE 절에서 여러 조건을 괄호로 묶어 결합하면, 단순한 필터를 넘어 훨씬 복잡하고 정교한 검색 조건을 가진 뷰를 손쉽게 만들 수 있습니다.

예제

아래 예제는 'Student_info' 테이블을 기반으로 두 개의 조건 그룹을 OR 연산자로 연결한 뷰를 생성하는 코드입니다.

  • 첫 번째 조건: 과목(Subject)이 'Computers'이고 주소(Address)가 'Delhi'인 학생
  • 두 번째 조건: 과목(Subject)이 'History'이고 주소(Address)가 'Amritsar'인 학생
mysql> CREATE OR REPLACE VIEW Info AS
    -> SELECT ID, Name, Address, Subject
    -> FROM Student_info
    -> WHERE (Subject = 'Computers' AND Address = 'Delhi')
    ->    OR (Subject = 'History' AND Address = 'Amritsar');
Query OK, 0 rows affected (0.11 sec)

mysql> SELECT * FROM Info;
+------+-------+---------+-----------+
| ID   | Name  | Address | Subject   |
+------+-------+---------+-----------+
| 133  | Mohan | Delhi   | Computers |
+------+-------+---------+-----------+
1 row in set (0.00 sec)

실행 결과를 보면, 현재 테이블에는 'Delhi'에 거주하며 'Computers'를 공부하는 학생(Mohan)만 존재하기 때문에 해당 행 하나만 뷰에 포함되었습니다. 만약 'Amritsar'에서 'History'를 공부하는 학생이 새로 추가된다면, 그 학생 역시 이 뷰를 조회할 때 자동으로 함께 나타나게 됩니다.

논리 연산자 조합 시 주의할 점

SQL에서 AND는 OR보다 연산자 우선순위가 높습니다. 따라서 괄호 없이 조건을 나열하면 의도와 다르게 조건이 해석될 수 있습니다. 위 예제처럼 각 조건 그룹을 명확하게 괄호로 묶어주면 쿼리의 의미가 분명해지고 유지보수도 쉬워집니다.

또한 NOT 연산자를 함께 활용하면 특정 조건을 제외하는 부정형 필터도 간단히 구현할 수 있습니다. 예를 들어 WHERE NOT (Subject = 'Computers')와 같이 작성하면 'Computers' 과목을 제외한 모든 데이터를 뷰에 담을 수 있습니다.