본문 바로가기
IT/SQL 기초강좌 (PostgreSQL)

12강 SQL이 뭐지? PostgreSQL : NULL and IS NULL operator

by DoitSQL 2022. 12. 16.
728x90

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을 참조합니다. 

 

PostgreSQL Tutorial - Learn PostgreSQL from Scratch

Welcome to the PostgreSQLTutorial.com website! This PostgreSQL tutorial helps you understand PostgreSQL quickly. You’ll master PostgreSQL very fast through many practical examples and apply the knowledge in developing applications using PostgreSQL. If yo

www.postgresqltutorial.com

실습용 테이블에 대해서는 3강을 참조하세요.

 

3강 SQL이 뭐지? 도구들을 설치해보자. ( PostgreSQL, HeidiSQL )

지난 시간까지 SQL이 뭔지 대충 감을 잡는 시간을 가졌습니다. 이번 시간에는 본격적인 SQL을 공부하기 위해서 도구들을 설치해 보겠습니다. 1. PostgreSQL 설치 ( Windows10 64bit 기준) 2. HeidiSQL 설치 3.

doitsql.tistory.com


Do it! SQL을 찾아 주셔서 감사합니다. 여러분의 댓글이 큰 힘이 됩니다.

 

728x90

댓글