Secret Poten

#16.SELECT 기초 &2 :NULL은 뭘까? 본문

오라클 데이터베이스[11gR2](#1~

#16.SELECT 기초 &2 :NULL은 뭘까?

potentail 2017. 11. 25. 12:39

이번 포스팅에서는 SELECT 를할때 NULL값은 어떻게 처리가 되는지 포스팅 해보겠습니다.


먼저 NULL의 사전적 의미로는..


아무 가치 없는, 無(없을무) 정도로 해석이 됩니다.


즉 아무런 값도 없는값을 NULL값이라고 합니다.

그냥 일반 프로그래밍을 할때도 이 null값은 프로그래밍을 하기에있어 가장큰 변수입니다.

아무것도 아닌 이 null값때문에 소스코드가 꼬이거나 여러가지 문제가 있게되죠.


데이터베이스에서도 이 null값은 골칫덩이입니다.



1. 오라클 데이터베이스에서 null값을 SELECT하면 어떻게 표시가 될까?

가장먼저 위에서 설명드렸듯 null값은 아무것도 없는 값을 의미합니다.

프로그래밍과는 다르게 null은 아무것도 없습니다.

즉 0 ≠ null 입니다.


그러면 바로 SELECT를 사용하여 null값을 검색해보죠.


  • sqlplus scott/tiger


emp테이블이 있는 scott으로 접속합니다.


  • SELECT * FROM emp;


쿼리 결과값이 나왔습니다.

여기서 null값을 찾아보도록 하죠.


제가 위에서 적어둔것처럼 null값은 아무것도 없는 값입니다.

즉 0이랑 null이랑 같지 않다는 것이죠.


그러면 null값은 어디에 있는걸까요?



여러분들이 생각하신 답이랑 맞다면 COMM컬럼에 아무것도 없는 칸들이 null값으로 채워져 있습니다.


그리고 제가 별표를 달아둔 0을 보시면 아시겠지만 0이랑 null은 엄연히 다르단것을 나타내줍니다.

헷갈리신 분들을 위해 간단하게 말씀을 드리자면

0은 사칙연산이 가능하지만 null은 되지 않는다는 것이겠지요.


ex > 0+1 = 1

 ? + 5 = ???


즉 나도 모르는 값에다가 뭔가를 더하거나 빼거나 자체가 안된다는 것이죠.


¿ 그렇다면 null값이 있는 컬럼에 사칙연산을 하면 어떻게 되나요?


여기서 궁금증을 가지셨다면 꽤나 포인트가 맞는것 같습니다.

먼저 핵심을 말씀드리자면 "오류"는 뜨지않습니다.

하지만 null값에 무슨짓을 하여도 null값입니다.

(함수를 이용하여 null값을 다른값으로 치환한다면 가능하지만 기본적으로 null값에 사칙연산은 null입니다)


  • SELECT empno,ename,sal,comm*12 AS "COMM",comm FROM emp;


보시면 아시겠지만 comm에다가 12를 곱하였을때

값이 있었던 레코드에는 정상적으로 값이 증가하였지만 null값이 들어가있는 레코드에는 아무런 변화가 없었습니다.

이때 null값을 0으로 바꿔서 사칙연산을 하고싶다면 함수를 사용하여서 연산이 가능하긴 합니다.


NULL값에 유의를 하며 SQL을 사용합시다.


(Youtube) Secret Poten : http://goo.gl/ENeBOR

(Youtube) Secret Poten AE : http://goo.gl/qasbWH


그외 궁금한점은

공지사항을 잘보시고 오픈채팅으로 물어봐주시면 감사하겠습니다

공지사항 바로가기


-HardWare SetUp-

CPU : Intel i7-6700k(OC)

RAM : Samsung DDR4 8GB X 4 (32GB)

HDD : Seagate 1TB X 3 (3TB HDD), Seagate 4TB =Total 7TB

SSD : SanDisk SSD 256GB

VGA : Asus GTX1080 8GB(OC)

MB : Asus Z170-A STCOM

Case : Thermaltake Core X9

PSU : Micronics Performance II HV 850W Bronze

ODD : LG BH16NS55 (Blu-ray ODD)

Other : PSIONIC Custom Water Cooler (CPU set), LED Cooler (EA 8), Scarlett 6i6, MXL990



Comments