1. NULL
정의되지 않은 값.
빈 값 대신 '미정 값'을 부여할 사용
NULL 을 값으로 가질 수 있는가 | |
PK | 불가능 |
FK | 가능 |
UK | 가능 |
2. NOT NULL 제약 조건
1) 추가
ALTERTABLE 테이블명 MODIFY 컬럼명 NOT NULL;
2) 삭제
ALTER TABLE 테이블명 MODIFY 컬럼명 NULL;
3. NULL 의 조건식
NULL 은 = 을 사용하여 비교할 수 없다.
따라서 아래의 조건식을 사용하여 NULL 값을 비교한다.
컬럼명 IS NULL;
컬럼명 IS NOT NULL;
4. 데이터 조회 시 NULL 값을 다른 값으로 바꾸어 조회하는 방법
NVL, NVL2 를 사용하면 SELECT 쿼리문을 사용하여 데이터를 조회할 때,
NULL 값을 다른 값으로 변경하여 조회할 수 있다.
(데이터를 직접 수정하거나 변경하는 것은 아님)
-- NULL 값 대신 다른 값으로 변경 후 조회
NVL(컬럼명, '값');
NVL2(컬럼명, 'NULL 이 아닐 때 값', 'NULL 일 때 값');
📌 NVL 예시
아래 쿼리문을 실행시키면 MEMBER_ID 행에서 NULL 값을 가지고 있는 것들은
NULL 대신 -1 으로 바뀌어 조회횐다.
SELECT BOOK_ID, BOOK_NAME, BOOK_GENRE,
NVL(MEMBER_ID, -1)
FROM TBL_BOOK;
📌 NVL2 예시
그렇다면 이번엔 NVL2 를 사용해보자.
NVL2을 사용하면
- NULL 이 아닐 때 보여질 값
- NULL 일 때 보여질 값
이렇게 두 개를 분리하여 보여줄 수 있다.
아래의 쿼리문을 실행시켜
NULL 이 아닐 때엔 대여 중, NULL 일 땐 대여 가능 으로 뜨도록 해보자.
SELECT BOOK_ID, BOOK_NAME, BOOK_GENRE,
NVL2(MEMBER_ID, '대여 중', '대여 가능') "대여 가능 여부"
FROM TBL_BOOK;
'📁 Language > 🛢️ SQL' 카테고리의 다른 글
[SQL] 정규화 (0) | 2024.03.22 |
---|---|
[SQL] ON DELETE CASCADE - PK를 참조 중인 FK행 자동 삭제 (0) | 2024.03.22 |
[SQL] 시퀀스(Sequence) (0) | 2024.03.22 |
[SQL] 관계를 맺은 테이블의 DML (0) | 2024.03.21 |
[SQL] 모델링(기획) 단계 메모 (0) | 2024.03.21 |