Null 값
Null 값은 값을 알 수 없다는 의미입니다. Null 값은 빈 값이나 0과는 다르며 2개의 Null 값이 서로 같다고 할 수는 없습니다. 2개의 Null 값을 비교하거나 Null과 다른 값을 비교하면 각각의 Null 값을 알 수 없으므로 unknown이 반환됩니다.
Null 값은 대개 데이터를 알 수 없거나 해당 사항이 없거나 나중에 추가됨을 나타냅니다. 예를 들어 고객이 주문할 당시 고객의 중간 이름을 알 수 없는 경우도 있습니다.
다음은 Null에 관한 설명입니다.
- 쿼리에서 Null 값을 검사하려면 WHERE 절에서 IS NULL이나 IS NOT NULL을 사용합니다.
- SQL Server Management Studio 코드 편집기에 쿼리 결과가 나타나면 결과 집합에서 null 값이 **(null)**로 표시됩니다.
- null 값은 INSERT 또는 UPDATE 문에서 NULL을 명시적으로 입력하거나 INSERT 문에서 해당 열을 제외시키거나 ALTER TABLE 문을 사용하여 기존 테이블에 새 열을 추가할 때 열에 입력됩니다.
- 테이블의 행을 다른 행과 구별하는 데 필요한 정보(예: 기본 키)에는 Null 값을 사용할 수 없습니다.
프로그램 코드에서 특정 계산이 유효한(Null이 아닌) 데이터가 있는 행에서만 수행되도록 하여 Null 값을 검사할 수 있습니다. 예를 들어 열에 Null이 아닌 데이터가 있을 때만 주민 등록 번호 열을 인쇄하는 보고서가 있을 수 있습니다. NULL 열이 포함되면 결과가 틀려지는 계산(예: 평균)도 있으므로 계산을 수행할 때는 Null 값을 없애야 합니다.
Null 값이 데이터에 저장될 수 있지만 사용자가 자신의 데이터에 Null 값이 나타나는 것을 원하지 않는다면 Null을 없애거나 Null을 다른 값으로 변환하는 쿼리 및 데이터 수정 문을 만들어야 합니다.
중요: |
---|
유지 관리에 대한 필요성 및 기존 쿼리나 보고서에 대한 영향을 최소화하려면 Null 값 사용을 최소화해야 합니다. Null 값이 영향을 미치지 않도록 쿼리와 데이터 수정 문을 작성하십시오. |
데이터, 논리 연산자, 비교 연산자에 Null 값이 포함되어 있으면 TRUE 또는 FALSE 대신 UNKNOWN이라는 결과가 반환될 수 있습니다. 이와 같이 세 가지 결과를 가져오는 논리는 대부분 응용 프로그램에서 오류의 원인이 됩니다. 다음은 Null 값을 비교 연산한 결과를 정리한 표입니다.
다음 표에서는 2개의 부울 피연산자에 AND 연산자를 적용한 결과를 보여 줍니다.
AND | TRUE | UNKNOWN | FALSE |
---|---|---|---|
TRUE |
TRUE |
UNKNOWN |
FALSE |
UNKNOWN |
UNKNOWN |
UNKNOWN |
FALSE |
FALSE |
FALSE |
FALSE |
FALSE |
다음 표에서는 2개의 부울 피연산자에 OR 연산자를 적용한 결과를 보여 줍니다.
OR | TRUE | UNKNOWN | FALSE |
---|---|---|---|
TRUE |
TRUE |
TRUE |
TRUE |
UNKNOWN |
TRUE |
UNKNOWN |
UNKNOWN |
FALSE |
TRUE |
UNKNOWN |
FALSE |
다음 표에서는 부울 연산자에 NOT 연산자를 적용한 결과를 보여 줍니다.
NOT 연산자를 적용할 부울 식 | 결과 |
---|---|
TRUE |
FALSE |
UNKNOWN |
UNKNOWN |
FALSE |
TRUE |
SQL-92 표준은 Null 값 여부를 검사하는 IS NULL 및 IS NOT NULL 키워드를 도입했습니다.
IS NULL 연산자를 적용할 부울 식 | 결과 | IS NOT NULL 연산자를 적용할 부울 식 | 결과 |
---|---|---|---|
TRUE |
FALSE |
TRUE |
TRUE |
NULL |
TRUE |
NULL |
FALSE |
FALSE |
FALSE |
FALSE |
TRUE |
Transact-SQL도 Null 처리를 위한 확장 기능을 제공합니다. ANSI_NULLS 옵션이 off로 설정된 경우 NULL = NULL과 같은 Null 값 간의 비교는 TRUE이고, NULL과 다른 데이터 값을 비교하면 FALSE가 됩니다.
참고 항목
개념
관련 자료
AND(Transact-SQL)
NOT(Transact-SQL)
CREATE TABLE(Transact-SQL)
OR(Transact-SQL)
ISNULL(Transact-SQL)
WHERE(Transact-SQL)