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

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

MySQL에서는 AND, OR, NOT과 같은 논리 연산자를 사용하여 조건이 적용된 뷰(View)를 생성할 수 있습니다. 뷰는 복잡한 쿼리를 저장해 두고 필요할 때마다 간편하게 조회할 수 있게 해주는 가상 테이블로, WHERE 절에 논리 연산자를 조합하면 원하는 데이터만 정확하게 필터링할 수 있습니다.

아래 예제들을 통해 각 논리 연산자가 뷰 생성에 어떻게 활용되는지 살펴보겠습니다.

AND 연산자를 사용한 뷰

논리 AND 연산자는 두 개의 표현식을 비교하여 두 표현식이 모두 참(TRUE)일 때만 참을 반환합니다. 따라서 여러 조건을 동시에 만족하는 행만 뷰에 포함시키고 싶을 때 유용합니다.

예제

기본 테이블인 Student_info에는 다음과 같은 데이터가 저장되어 있습니다.

mysql> Select * from Student_info;
+------+---------+------------+------------+
| id   | Name    | Address    | Subject    |
+------+---------+------------+------------+
| 101  | YashPal | Amritsar   | History    |
| 105  | Gaurav  | Chandigarh | Literature |
| 125  | Raman   | Shimla     | Computers  |
| 130  | Ram     | Jhansi     | Computers  |
| 132  | Shyam   | Chandigarh | Economics  |
| 133  | Mohan   | Delhi      | Computers  |
+------+---------+------------+------------+
6 rows in set (0.00 sec)

아래 쿼리는 과목(Subject)이 'Computers'이면서 주소(Address)가 'Delhi'인 학생만 포함하는 뷰를 생성합니다.

mysql> Create or Replace View Info AS select ID, Name, Address , Subject FROM Student_info WHERE (Subject = 'Computers' AND ADDRESS = 'DELHI');
Query OK, 0 rows affected (0.13 sec)

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

결과를 보면 두 조건을 모두 충족하는 Mohan 학생의 데이터 한 건만 뷰에 포함된 것을 확인할 수 있습니다.

OR 연산자를 사용한 뷰

논리 OR 연산자는 두 개의 표현식을 비교하여 최소 하나 이상의 표현식이 참일 때 참을 반환합니다. 여러 조건 중 하나라도 만족하는 행을 모두 포함시키고 싶을 때 사용합니다.

예제

아래 쿼리는 과목이 'Computers'이거나 주소가 'Amritsar'인 학생을 모두 포함하는 뷰를 생성합니다.

mysql> Create or Replace View Info AS select ID, Name, Address , Subject FROM Student_info WHERE (Subject = 'Computers' OR ADDRESS = 'Amritsar');
Query OK, 0 rows affected (0.06 sec)

mysql> Select * from Info;
+------+---------+----------+-----------+
| ID   | Name    | Address  | Subject   |
+------+---------+----------+-----------+
| 101  | YashPal | Amritsar | History   |
| 125  | Raman   | Shimla   | Computers |
| 130  | Ram     | Jhansi   | Computers |
| 133  | Mohan   | Delhi    | Computers |
+------+---------+----------+-----------+
4 rows in set (0.00 sec)

AND 연산자와 달리 두 조건 중 하나만 만족해도 결과에 포함되기 때문에, 이전 예제보다 더 많은 행이 조회되었습니다.

NOT 연산자를 사용한 뷰

NOT 연산자는 단 하나의 피연산자만 받는 유일한 논리 연산자입니다. 피연산자가 참(TRUE)이면 0을 반환하고, 거짓(FALSE)이면 1을 반환합니다. 특정 조건을 제외한 나머지 데이터를 조회하고 싶을 때 활용됩니다.

예제

아래 쿼리는 과목이 'Computers'가 아닌 학생만 포함하는 뷰를 생성합니다.

mysql> Create or Replace View Info AS select ID, Name, Address , Subject FROM Student_info WHERE Subject != 'Computers';
Query OK, 0 rows affected (0.06 sec)

mysql> Select * from info;
+------+---------+------------+------------+
| ID   | Name    | Address    | Subject    |
+------+---------+------------+------------+
| 101  | YashPal | Amritsar   | History    |
| 105  | Gaurav  | Chandigarh | Literature |
| 132  | Shyam   | Chandigarh | Economics  |
+------+---------+------------+------------+
3 rows in set (0.00 sec)

정리

MySQL 뷰 생성 시 논리 연산자를 활용하면 다음과 같은 장점이 있습니다.

  • AND: 여러 조건을 모두 만족하는 데이터만 필터링
  • OR: 여러 조건 중 하나라도 만족하는 데이터를 모두 포함
  • NOT(또는 !=): 특정 조건에 해당하지 않는 데이터만 추출

이처럼 WHERE 절에 논리 연산자를 적절히 조합하면, 자주 사용하는 복잡한 조건 검색을 뷰로 미리 정의해 두어 쿼리 작성 시간을 크게 줄이고 코드의 재사용성을 높일 수 있습니다.