null의 특성 및 null 체크함수 > 기술자료 | 해피정닷컴

null의 특성 및 null 체크함수 > 기술자료

본문 바로가기

사이트 내 전체검색

null의 특성 및 null 체크함수 > 기술자료

Oracle null의 특성 및 null 체크함수

페이지 정보


본문

null 의 특징은...


1. sum, count 등 집합함수나 연산시 null과의 연산은 null 이 됩니다.
즉, null 인 컬럼값에 100을 더하면 100이 되는게 아니라 null 이 됩니다.
select null + 100 from dual 의 결과는 null 이 됩니다.
null은 알 수 없는 값이기 때문에 '알지 못하는 값' 과의 연산은  '알지못하는값' 이 됩니다.
그리고 select count(salary) from emp 등에서 만약 salary 에 null 값이 들어있다면 null인 경우는 빼고 count를 합니다.

따라서 개발자들은 이러한 null 값 때문에 연산을 하거나 avg, sum등을 구할때 결과가 나오지 않는
상황을 경험하고는 null 공포증을 가지게 됩니다. 그래서 nvl을 남발하게 되는거구요.

따라서 위의 경우와 같이 EMP(사원) 테이블의 연봉(salary)같이 연산이 예상되는 숫자형 같은 경우는 특히 주의하여 DB 설계자가 'not null default 0' 로 셋팅해주는 것이 좋습니다.


2. NOT NULL로 설정하면 오라클이 내부적으로 인덱스를 생성해서 관리하나요? 그럼 업무로직상 반드시 값을 가지고있어야 하는 필드를 NOT NULL로 설정하면 INSERT/UPDATE할때 인덱스를 관리하는 시간때문에 속도가 느려지나요?
--> 오라클에서 색인(B*Tree) 구성시 null은 빠집니다.
만약 where 조건에서   salary is null 이라는 조건으로 들어오면 null 은 색인 구성에서 빠지므로 이 조건은 색인을 활용할 수가 없게 됩니다.
NOT NULL 설정되었다고 인덱스하고는 관계가 무관합니다.


3. 업무로직상 반드시 값을 가지고있어야 하는 필드는 NOT NULL로 하는게 좋은가요? 아니면 INSERT할때 NULL여부를 검사해서 INSERT하는게 좋은가요?
-> NOT NULL이 더 좋습니다. 이는 차후 이 컬럼절에 대하여 정렬(조건절 제외)을 하였을 경우 일반 인덱스를 주면은 SORT영역없이 인덱스를 사용하여 성능에 상당한 영향을 줍니다. NULL은 인덱스에 값이 없기 때문에 정렬(조건절제외)시  인덱스를 사용못합니다.


nvl : 컬럼값이 null일 때, 다른 값으로 바꾸는 기능입니다
nvl 컬럼은 기본적으로 두개의 데이터 타입이 같아야 합니다 .

last_no 컬럼이 숫자이면
nvl( last_no , 0)

last_no 컬럼이 문자이면
nvl( last_no , '0') 이렇게 해주시면 됩니다 .


자료출처
http://bluejames77.blog.me/80004276310
http://database.sarang.net/?inc=read&aid=17004&criteria=oracle

댓글목록

등록된 댓글이 없습니다.


Total 36건 2 페이지
  • RSS
기술자료 목록
16
Oracle   18848  2013-11-14 22:28  
15
Oracle   15329  2013-09-25 15:12  
14
Oracle   16572  2013-11-07 23:59  
13
Oracle   53963  2013-10-25 16:55  
12
Oracle   22325  2013-10-11 01:22  
11
Oracle   15920  2013-10-24 00:08  
10
Oracle   15917  2013-10-24 00:10  
9
Oracle   13702  2013-10-06 19:56  
8
Oracle   19225  2013-09-12 13:46 ~ 2017-04-01 00:00  
7
Oracle   12736  2013-10-24 00:06  
6
Oracle   18349  2013-10-23 23:56  
5
Oracle   15634  2013-09-26 14:12 ~ 2015-06-26 00:00  
4
Oracle   31858  2013-12-12 21:35  
3
Oracle   13839  2013-11-07 22:55  
2
Oracle   113872  2013-09-25 16:45  
열람
Oracle   16109  2013-10-11 02:37  

검색

해피정닷컴 정보

회사소개 회사연혁 협력사 오시는길 서비스 이용약관 개인정보 처리방침

회사명: 해피정닷컴   대표: 정창용   전화: 070-7600-3500   팩스: 042-670-8272
주소: (34368) 대전시 대덕구 대화로 160 대전산업용재유통단지 1동 222호
개인정보보호책임자: 정창용   사업자번호: 119-05-36414
통신판매업신고: 제2024-대전대덕-0405호 [사업자등록확인]  
Copyright 2001~2024 해피정닷컴. All Rights Reserved.