The NULL value - null 값
한번 노벨상에 대한 데이터를 저장하는 테이블을 만든다고 상상 해 보겠습니다.
우리는 이러한 컬럼 (열) 을 정의 할 것 입니다.
year | field | winner's name | winner's birth year |
---|
하지만, 몇몇 승자들은 생년월일이 정의되지 않았습니다.
예를 들어, 2012 년에 노벨 평화상을 받은 유럽 연합의 사람들을 말할 수 있습니다.
여러 사람이 받았기 때문에 정의되지 않는다고 말하는 것 같기도 하다.
여기에 0 과 같은 특별한 값을 이 Cell에 넣고 싶지만, 실수로 이끌 가능성이 있습니다.
이러한 예시를 위해서, SQL은 특별한 값을 가지고 있습니다. :: NULL
이 주제에서 NULL을 어떻게 사용하는지 배울 겁니다.
NULL value - NULL 값
NULL 은 SQL 에서 주로 알려지지 않았거나, 정의되지 않은 데이터 값을 가르킵니다.
이 값은 0 그리고 " 값과 혼동되지 않습니다.
" 는 빈 문자열을 의미하는데, 빈 값을 의미하기 위해 NULL 값을 사용하라는 의미가 담겨있다.
수학적, 혹은 문자열 표현식과 피연산자 사이의 NULL 은 이 표현식을 NULL 로 평가합니다.
예를 들어, 2 + 2 * NULL
== NULL
입니다.
NULL 값은 컬럼의 어떠한 타입에라도 저장 될 수 있습니다.
하지만, 소프트웨어 엔지니어가 CREATE TABLE
구문에 NOT NULL
제한을 걸 수도 있는데,
이는 컬럼이 NULL을 저장하지 못한다고 표기하는 것입니다.
예를 들어, 밑의 코드에 따르면 winner_birth_year
컬럼만이 NULL 을 담을 수 있습니다.
CREATE TABLE winners(
year INTEGER NOT NULL,
field VARCHAR(20) NOT NULL,
winner_name VARCHAR(100) NOT NULL,
winner_birth_year INTEGER
);
Comparisons with NULL - NULL 과 비교해보기
NULL 값은 기본적으로 값이 표현되지 않는다 라는 의미입니다.
이 점 때문에, NULL 과의 비교는 TRUE
와 FALSE
가 될 수 없습니다.
하지만, 항상 세 번째 논리적 결과가 있는데, 이는 UNKNOWN
입니다.
이는 사실 불린 타입의 NULL 값 이기도 하며, 몇몇 데이터 관리 시스템이 특별한 UNKNOWN 값을 구별하지 않습니다.
예를 들어, 밑의 각각의 비교식의 결과는 UNKNOWN
입니다.
NULL = 1
NULL <> 1
NULL > 1
NULL = '1'
NULL = NULL
어떠한 것도 NULL 과 같을 수는 없습니다. 심지어 NULL 과 NULL 은 같지 않습니다.
우리는 어떻게 표현식, 혹은 값이 null 인지 아닌지 확인 할 수 있을까요?
SQL은 특수 조건자를 지원합니다. : IS NULL
그리고 IS NOT NULL
예를 들어, 밑에 있는 두 개의 쿼리들은 TRUE
결과를 반환합니다.
SELECT 0+NULL IS NULL; # 0 + NULL 은 NULL 이다.
SELECT '' IS NOT NULL; # '' 문자열 리터럴은 NULL 이 아니다.
밑의 쿼리는 FALSE
로 평가됩니다.
SELECT NULL IS NOT NULL;
SELECT 1-1 IS NULL;
TRUE, FALSE, and UNKNOWN - 참, 거짓, 언노운
UNKNOWN 피연산자가 있는 논리 연산자에서는,
피연산자가 UNKNOWN 인지에 따라 결과가 UNKNOWN 입니다.
피연산자가 UNKNOWN 이라면, 결과값이 UNKNOWN 이 나올 수 있는 상황이 만들어진다.
따라서, 비교식과 대조적으로, 논리 표현식의 결과는 UNKNOWN 이 아닌 다른 것이 될 수 있습니다.
심지어 하나의 피연산자가 UNKNOWN 인 상황에서도.
밑의 예제를 한 번 고려 해 봅시다.
(NULL = 1) AND TRUE
의 결과는 UNKNOWN 입니다.
만약 양 쪽의 피연산자가 TRUE 라면, 결과는 TRUE 입니다.
(NULL = 1) OR TRUE
의 결과는 TRUE 입니다.
적어도 하나의 피연산자가 TRUE라면, 결과는 TRUE 이다.
Conclustion - 결론
이제 당신은 실제로 값이 없을 때, 데이터를 어떻게 작업 할 것인지 알게 되었고,
필요한 곳에 NULL 값을 사용하는 것을 알게 되었습니다.
SQL 에서의 NULL 값의 키 포인트를 다시 말해 봅시다.
NULL
은 SQL 에서 몇몇 데이터 값을 가르키기 위해 사용되는데, unknown 혹은 undefined 입니다.- 컬럼 (속성, 열) 에
NULL
값을 담지 않기 위해NOT NULL
제약을 표기합니다. - 표현식이나 값이 null 인지 아닌지 체크하기 위해
IS NULL
그리고IS NOT NULL
을 사용합니다.
'Hyperskill - 컴퓨터 CS 및 영어 독해 > Introducing to SQL' 카테고리의 다른 글
Basic INSERT statement - 기초적인 INSERT 문법 (0) | 2024.04.15 |
---|---|
Special WHERE operators - 특별한 WHERE 연산자 (1) | 2024.04.15 |
Logic and comparison expressions - 로직, 비교 표현식 (1) | 2024.04.12 |
SELECT FROM statement - SELECT FROM 구문 (0) | 2024.04.10 |
Basic SELECT statement - 기초적인 SELECT 구문 (0) | 2024.04.09 |