PostgreSQL | PostgreSQL 기본 구성 | 논리 연산자 사용(AND, OR, NOT)
PostgreSQL에서는 논리 연산자로 AND, OR, NOT의 세 가지가 준비되어 있다. 여기에서는 논리 연산자의 사용법에 대해 설명한다.
※ PostgreSQL에서 참이거나 거짓을 나타내는 값이 무엇인가에 대해서는 “논리 값 데이터 형식(boolean)“을 참조하도록 한다.
논리곱 (AND)
AND는 논리곱이다. 좌변과 우변이 TRUE, FALSE, NULL이었을 때, 어떻게 판단되는지는 다음 목록을 보도록 하자.
TRUE AND TRUE -> TRUE
TRUE AND FALSE -> FALSE
TRUE AND NULL -> NULL
FALSE AND FALSE -> FALSE
FALSE AND NULL -> FALSE
NULL AND NULL -> NULL
전체 표현식이 TRUE가 되는 것은 좌변과 우변이 모두 TRUE 인 경우 뿐이다. 또한 TRUE AND NULL
이 NULL
인데 비해 FALSE AND NULL
은 FALSE
가 되는 점에 주의한다.
–
그럼 실제로 해보도록 하자. 다음과 같은 테스트 테이블을 만든다.
mydb=# create table test(flag1 boolean, flag2 boolean);
CREATE TABLE
mydb=#
다음과 같은 데이터를 테이블에 추가한다.
mydb=# insert into test values (TRUE, TRUE), (TRUE, FALSE), (TRUE, NULL), (FALSE, FALSE), (FALSE, NULL), (NULL, NULL);
INSERT 0 6
mydb=# select * from test;
flag1 | flag2
-------+-------
t | t
t | f
t |
f | f
f |
|
(6개 행)
그러고 SELECT 명령을 사용하여 논리곱으로 좌변과 우변의 값에 의해 전체가 어떻게 판단되는지를 해보자.
mydb=# select flag1, flag2, flag1 and flag2 as "flag1 and flag2" from test;
flag1 | flag2 | flag1 and flag2
-------+-------+-----------------
t | t | t
t | f | f
t | |
f | f | f
f | | f
| |
(6개 행)
이것으로 좌변과 우변의 값에 의해 논리곱 결과가 어떻게 되지는 알 수 있다.
논리합(OR)
OR은 논리합입니다. 좌변과 우변이 TRUE, FALSE, NULL이었을 때, 어떻게 판단되는지는 다음 목록을 보도록 하자.
TRUE OR TRUE -> TRUE
TRUE OR FALSE -> TRUE
TRUE OR NULL -> TRUE
FALSE OR FALSE -> FALSE
FALSE OR NULL -> NULL
NULL OR NULL -> NULL
좌변과 우변의 적어도 어느 하나가 TRUE 인 경우 전체 표현식이 TRUE이다. 또한 TRUE OR NULL
이 TRUE
인 반면 FALSE AND NULL
은 NULL
이 되는 점에주의한다.
–
그럼 실제로 해보도록 하자. 다음의 같이 논리곱으로 사용한 테이블을 그대로 사용하여 SELECT 명령을 사용하여 논리합의 좌변과 우변에 의해 어떻게 판단되는지 해보자.
mydb=# select flag1, flag2, flag1 or flag2 as "flag1 or flag2" from test;
flag1 | flag2 | flag1 or flag2
-------+-------+----------------
t | t | t
t | f | t
t | | t
f | f | f
f | |
| |
(6개 행)
이것으로 좌변과 우변의 값에 의해 논리합 결과가 어떻게 되지는 알 수 있다.
부정 (NOT)
NOT 연산자는 부정이다. 우변이 TRUE, FALSE, NULL이었을 때, 어떻게 판단되는지는 다음 목록을 보도록 하자.
NOT TRUE -> FALSE
NOT FALSE -> TRUE
NOT NULL -> NULL
우변이 TRUE이면 FALSE가 되고, 우변이 FALSE이면 TRUE가 된다. 또한 NOT NULL은 NULL이 된다.
–
그럼 실제로 해보도록 하자. 다음과 같은 테스트 테이블을 만든다.
mydb=# create table test2( flag boolean);
CREATE TABLE
mydb=#
다음과 같은 데이터를 테이블에 추가한다.
mydb=# insert into test2 values (TRUE),(FALSE),(NULL);
INSERT 0 3
mydb=#
그러면 SELECT 명령을 사용하여 부정의 우변의 값에 의해 결과가 어떻게 판단되는지를 해보자.
mydb=# select flag, not flag as "not flag" from test2;
flag | not flag
------+----------
t | f
f | t
|
(3개 행)
이것으로 우변의 값에 의해 부정의 결과가 어떻게 되지는 알 수 있다.
–
여기까지 PostgreSQL에서 제공되는 논리 연산자의 사용법에 대해 설명하였다.