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 2,641건 58 페이지
  • RSS
기술자료 목록
1501
Oracle   15977  2013-10-07 06:40  
1500
Oracle   16373  2013-10-06 05:45  
1499
Oracle   18851  2013-11-14 22:28  
1498
Oracle   15333  2013-09-25 15:12  
1497
Oracle   16575  2013-11-07 23:59  
1496
Oracle   53978  2013-10-25 16:55  
1495
Oracle   22338  2013-10-11 01:22  
1494
Oracle   15922  2013-10-24 00:08  
1493
Oracle   15919  2013-10-24 00:10  
1492
Oracle   13713  2013-10-06 19:56  
1491
Oracle   19230  2013-09-12 13:46 ~ 2017-04-01 00:00  
1490
Oracle   12738  2013-10-24 00:06  
1489
Oracle   18349  2013-10-23 23:56  
1488
Oracle   15636  2013-09-26 14:12 ~ 2015-06-26 00:00  
1487
Oracle   31868  2013-12-12 21:35  
1486
Oracle   13849  2013-11-07 22:55  
1485
Oracle   113875  2013-09-25 16:45  
열람
Oracle   16112  2013-10-11 02:37  
1483
킴스큐   19879  2013-12-23 18:34  
1482
일반   18084  2013-12-19 13:33  

검색

해피정닷컴 정보

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

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