MariaDB / Tutorial / 연산자 / 논리 연산자
MariaDB의 논리 연산자에 대하여 알아보겠습니다. 예제로 사용하는 테이블은 아래의 데이터를 가진 T_2이라는 테이블입니다. 각 열의 데이터 형식은 다음과 같습니다.
- C_1 : 정수
- C_2 : 문자
+----+------+------+ | ID | C_1 | C_2 | +----+------+------+ | 1 | 1 | A | | 2 | 2 | B | | 3 | 3 | C | | 4 | 0 | NULL | | 5 | NULL | A | | 6 | 1 | B | | 7 | 2 | C | | 8 | 3 | NULL | | 9 | 1 | C | | 10 | NULL | NULL | +----+------+------+
AND
여러 조건을 동시에 만족시키는 데이터를 찾을 때 AND 연산자를 사용합니다. AND 대신 &&를 사용해도 됩니다.
- C_1의 값이 1이고 C_2의 값이 A이면 1을 반환합니다.
SELECT *, C_1 = 1 AND C_2 = 'A' AS R FROM T_2 ;
+----+------+------+------+ | ID | C_1 | C_2 | R | +----+------+------+------+ | 1 | 1 | A | 1 | | 2 | 2 | B | 0 | | 3 | 3 | C | 0 | | 4 | 0 | NULL | 0 | | 5 | NULL | A | NULL | | 6 | 1 | B | 0 | | 7 | 2 | C | 0 | | 8 | 3 | NULL | 0 | | 9 | 1 | C | 0 | | 10 | NULL | NULL | NULL | +----+------+------+------+
OR
여러 조건 중 적어도 하나를 만족시키는 데이터를 찾을 때 OR 연산자를 사용합니다. OR 대신 ||를 사용해도 됩니다.
- C_1의 값이 1 또는 C_2의 값이 A이면 1을 반환합니다.
SELECT *, C_1 = 1 OR C_2 = 'A' AS R FROM T_2 ;
+----+------+------+------+ | ID | C_1 | C_2 | R | +----+------+------+------+ | 1 | 1 | A | 1 | | 2 | 2 | B | 0 | | 3 | 3 | C | 0 | | 4 | 0 | NULL | NULL | | 5 | NULL | A | 1 | | 6 | 1 | B | 1 | | 7 | 2 | C | 0 | | 8 | 3 | NULL | NULL | | 9 | 1 | C | 1 | | 10 | NULL | NULL | NULL | +----+------+------+------+
XOR
XOR은 OR과 비슷하나 조건을 동시에 만족시키는 것을 제외합니다.
- C_1의 값이 1 또는 C_2의 값이 A이면서, C_1의 값이 1이고 C_2의 값이 A가 아니면 1을 반환합니다.
SELECT *, C_1 = 1 XOR C_2 = 'A' AS R FROM T_2 ;
+----+------+------+------+ | ID | C_1 | C_2 | R | +----+------+------+------+ | 1 | 1 | A | 0 | | 2 | 2 | B | 0 | | 3 | 3 | C | 0 | | 4 | 0 | NULL | NULL | | 5 | NULL | A | NULL | | 6 | 1 | B | 1 | | 7 | 2 | C | 0 | | 8 | 3 | NULL | NULL | | 9 | 1 | C | 1 | | 10 | NULL | NULL | NULL | +----+------+------+------+
NOT
NOT은 주어진 조건을 충족하지 않은 것을 찾을 때 사용합니다.
- C_1의 값이 1이 아니면 1을 반환합니다.
SELECT *, NOT C_1 = 1 AS R FROM T_2 ;
+----+------+------+------+ | ID | C_1 | C_2 | R | +----+------+------+------+ | 1 | 1 | A | 0 | | 2 | 2 | B | 1 | | 3 | 3 | C | 1 | | 4 | 0 | NULL | 1 | | 5 | NULL | A | NULL | | 6 | 1 | B | 0 | | 7 | 2 | C | 1 | | 8 | 3 | NULL | 1 | | 9 | 1 | C | 0 | | 10 | NULL | NULL | NULL | +----+------+------+------+
논리 연산자 여러 번 사용
논리 연산자를 여러 번 사용해야 하는 경우, 괄호를 이용하여 조건 묶음을 만듭니다.
- C_1의 값이 1 또는 C_2의 값이 A이면서, C_1이 NULL이 아니면 1을 반환합니다.
SELECT *, ( C_1 = 1 OR C_2 = 'A' ) AND ( C_1 IS NOT NULL ) AS R FROM T_2 ;
+----+------+------+------+ | ID | C_1 | C_2 | R | +----+------+------+------+ | 1 | 1 | A | 1 | | 2 | 2 | B | 0 | | 3 | 3 | C | 0 | | 4 | 0 | NULL | NULL | | 5 | NULL | A | 0 | | 6 | 1 | B | 1 | | 7 | 2 | C | 0 | | 8 | 3 | NULL | NULL | | 9 | 1 | C | 1 | | 10 | NULL | NULL | 0 | +----+------+------+------+