12강 SQL이 뭐지? PostgreSQL : NULL and IS NULL operator
PostgreSQL
SQL이 뭐지? 12강 시작합니다.
이번 강의에서는
▶ NULL
▶ IS NULL operator
에 대해서 알아보겠습니다.
NULL 및 IS NULL 연산자 소개
데이터베이스에서 NULL은 누락된 정보 또는 적용되지 않는 정보를 의미합니다. NULL은 값이 아니므로 숫자 또는 문자열과 같은 다른 값과 비교할 수 없습니다.
NULL을 값과 비교하면 항상 알 수 없는 결과를 의미하는 NULL이 됩니다.
또한 NULL은 NULL과 같지 않으므로 다음 식을 통해 NULL을 반환합니다.
NULL = NULL -> NULL
연락처의 이름, 성, 전자 메일 및 전화번호를 저장하는 연락처 테이블이 있다고 가정합니다. 연락처를 녹음할 때 연락처의 전화번호를 모를 수 있습니다.
이 문제를 해결하려면 전화 열을 null 가능 열로 정의하고 연락처 정보를 저장할 때 전화 열에 NULL을 삽입합니다.
이 강의의 실습을 위해 conctacts 테이블을 만듭니다.
이후 강의에서 새 테이블을 만드는 방법에 대해 알아봅니다.
지금은 아래의 문을 실행하여 contacts 테이블을 작성하기만 하면 됩니다.
CREATE TABLE contacts(
id INT GENERATED BY DEFAULT AS IDENTITY
, first_name VARCHAR(50) NOT NULL
, last_name VARCHAR(50) NOT NULL
, email VARCHAR(255) NOT NULL
, phone VARCHAR(15)
, PRIMARY KEY (id)
)
;
COMMIT; -- COMMIT, ROLLBACK에 대해서는 추후강의
CREATE TABLE 문을 실행하는 동안 오류가 발생하면 PostgreSQL 버전에서
'GENERATED BY DEFAULT AS IDENTITY'
구문을 지원하지 않을 수 있습니다. 이 경우 다음 명령문을 사용할 수 있습니다.
CREATE TABLE contacts(
id SERIAL
, first_name VARCHAR(50) NOT NULL
, last_name VARCHAR(50) NOT NULL
, email VARCHAR(255) NOT NULL
, phone VARCHAR(15)
, PRIMARY KEY (id)
)
;
COMMIT; -- COMMIT, ROLLBACK에 대해서는 추후강의
테이블 생성을 확인하시고 다음 쿼리를 실행해주세요.
INSERT INTO contacts(first_name, last_name, email, phone)
VALUES ('John','Doe','john.doe@example.com',NULL)
, ('Lily','Bush','lily.bush@example.com','(408-234-2764)')
;
COMMIT; -- COMMIT, ROLLBACK에 대해서는 추후강의
테이블에 INSERT 된 행을 확인한 후 실습을 진행합니다.
실습 1
전화 번호가 없는 연락처를 찾으려면 다음과 같은 문장을 생각해 낼 수 있습니다.
SELECT id
, first_name
, last_name
, email
, phone
FROM contacts
WHERE phone = NULL
;
위 쿼리는 행을 반환하지 않습니다. WHERE 절의 phone = NULL이라는 표현이 항상 false를 반환하기 때문입니다.
NULL은 비교하면 항상 NULL을 반환합니다.
전화 열에 NULL이 있더라도 NULL = NULL이라는 표현은 false를 반환합니다. NULL은 그 자체로도 어떤 값과도 같지 않기 때문입니다.
값이 NULL인지 확인하려면 IS NULL 연산자를 대신 사용합니다.
value IS NULL
값이 NULL이면 true를 반환하고 그렇지 않으면 false를 반환합니다.
실습 2
따라서 전화 열에 저장된 전화 번호가 없는 연락처를 가져오려면 대신 다음 문장을 사용합니다.
SELECT id
, first_name
, last_name
, email
, phone
FROM contacts
WHERE phone IS NULL
;
PostgreSQL IS NOT NULL operator
값이 NULL이 아닌지 확인하려면 IS NOT NULL 연산자를 사용합니다.
value IS NOT NULL
값이 NULL이 아니면 true를 반환하고 값이 NULL이면 false를 반환합니다.
실습 1
예를 들어 전화 번호가 있는 연락처를 찾으려면 다음 문장을 사용합니다.
SELECT
id,
first_name,
last_name,
email,
phone
FROM
contacts
WHERE
phone IS NOT NULL;
이 강의에서는 PostgreSQL의 값이 NULL인지 여부를 확인하는 IS NULL 또는 IS NOT NULL 연산자를 사용하는 방법에 대해 배웠습니다.
지금까지 학습한 내용이 생각대로 구현이 되는지 쿼리를 스스로 많이 만들어 보시기 바랍니다.
반복적으로 해보는 것이 SQL에 익숙해지는 지름길입니다.
다음 강의에서 만나요.
본 강의는 PostgreSQL Tutorial을 참조합니다.
실습용 테이블에 대해서는 3강을 참조하세요.
Do it! SQL을 찾아 주셔서 감사합니다. 여러분의 댓글이 큰 힘이 됩니다. |
'IT > SQL 기초강좌 (PostgreSQL)' 카테고리의 다른 글
14강 SQL이 뭐지? PostgreSQL Join (4) | 2022.12.16 |
---|---|
13강 SQL이 뭐지? PostgreSQL Table Aliases (2) | 2022.12.16 |
11강 SQL이 뭐지? PostgreSQL : LIKE, ILIKE operator (2) | 2022.12.16 |
10강 SQL이 뭐지? PostgreSQL : BETWEEN operator (5) | 2022.12.15 |
9강 SQL이 뭐지? PostgreSQL : IN에 대해서 (2) | 2022.12.15 |
댓글