2013년 1월 31일 목요일

[펌] Null의 정의

출처 : http://www.cyworld.com/sumgimyo/2963624


Null
행이 특정 열에 대한 데이터 값이 없다면, 값은 null이 됩니다. null 값은 이용할 수 없거나, 지정되지 않았거나, 알 수 없거나 또는 적용할 수 없는 값입니다. null 값은 Ø이나 공백과는 다릅니다. Ø은 숫자이며 공백은 문자입니다. 열이 NOT NULL로 정의되지 않았거나, 열이 생성될 때 PRIMARY KEY로 정의되지 않았다면, 어떤 데이터형의 열은 null 값을 포함할 수 있습니다. EMP 테이블의 COMM 열에서 오직 SALESMAN 만이 보너스를 받을 수 있음을 주목하십시오. 다른 종업원은 보너스가 없습니다. null 값은 그러한 사실을 나타냅니다. 판매원 Turner는 보너스를 받지 않습니다. 그의 보너스는 null이 아니라 Ø임을 주목하십시오.

Q1) Null 공백하고는 다르다는데... Null 공백하고는 다르다는데 그럼 페이지에서 comm이라는 칼럼에 아무것도 없는것이 NUll이라면 공백은 어떻게 표현하나요?

A) Null 공백은 엄연히 다릅니다. Null 값이 없음을 의미 하므로 공백과는 다릅니다. 그런데 문제는 결과값을 화면상에 표현할때 공백과 Null 구분없이 모두 공백으로 표현된다는 것입니다. 그이유는 Null 화면상에 표현을 할때 기본값으로 공백으로 표현을 하도록 설정이 되어 있어 그렇습니다. 이와같이 Null 화면상에 표현되는 것이 공백으로 표현될 뿐이지 공백과는 엄연히 다릅니다. 하지만 다음과 같이 하면 Null 화면상에 표현을 할때 기본값인 공백이 아닌 다른 값으로 변경이 가능합니다.
SQL> set null NULL(
표현하고자 하는 어떠한 문자도 가능)

Q2) 널값과 스페이스값이 어떻게 다른지요? 널값과 스페이스값이 어떻게 다른지요?

A) 어떤 컬럼이 널값을 가진다는 것은 row 데이터베이스에 저장될 해당 컬럼 자리에 아무것도 저장되지 않는다는 의미입니다. , 저장공간도 차지하지 않으며 이때 값의 길이는 0 됩니다. 그러나 스페이스값을 가질 경우에는 공백문자에 해당하는 값이 데이터베이스에 공간을 차지하고 저장되며 값의 길이도 저장한 공백문자개수만큼으로 기록됩니다.

Q3) Null 대해서... Select 하는 컬럼에 결과 값이 Null 입니다. 설명하시길 Null 아무것도 표시되지 않는다고 하셨는데... 제가 해본 결과는 Null 이라고 표시가 되거든요. 그건 그런가요?

A) SQL*Plus에는 검색한 데이터를 출력할 null 값을 어떻게 출력할 것인가를 설정하는 환경변수 null 있습니다. 환경변수에 무엇이 설정되어 있느냐에 따라 null 값의 출력형태가 달라집니다. 보통 null 환경변수는 "(공문자열) 설정되어 있기 때문에 조회 결과에서 null 아무것도 표시되지 않는 것입니다. 만일 현재 null 값을 같는 컬럼이 'Null'이라고 출력된다면 환경변수 값이 'Null'이라는 문자열로 설정되어 있을 것입니다. 아래와 같은 방법으로 확인하신 , 값을 다시 ' 변경해주시면 null 값에 아무것도 표시되지 않도록 하실 있습니다.

SQL> show null
null "Null"
SQL> set null " --
단일 따옴표 두개로 표현한 공문자열입니다.
SQL> show null
null ""
SQL>

Q4) insert에서 null값인경우 ... 저는 일반적으로 insert문에서 null값인경우 ' 사용하고 있습니다. '(공백)인경우 space 차지하고, null인경우는 space 차지하지 않는다고 하는데 어떤걸 사용하는게 바람직한건지 알고싶습니다.

A) NULL 알수 없는 , 미정(未定) 값이므로 blank와는 분명히 구분되는 값입니다. 바람직한 사용법은 시스템 분석/설계 단계에서 정의된 내용을 따르는 것이며 일방적으로 단정할 수는 없습니다. 단순히 space만을 고려한다면 NULL blank보다 바람직하다고 있겠습니다.

댓글 없음:

댓글 쓰기