"이 포스팅은 쿠팡 파트너스 활동의 일환으로, 이에 따른 일정액의 수수료를 제공받습니다."
👨💻 안녕하세요, 윌리 프로젝트의 윌리 입니다.
SQLite3 의 인덱스 필드에 NULL 을 허용하려면 어떻게 해야 하는지 간략히 알아보았습니다.
질문 >
SQLite3 의 인덱스 필드에 NULL 을 허용하려면 어떻게 해야 하나요?
답변 >
SQLite에서 INDEX 필드(즉, 인덱스를 적용할 열)에 NULL 값을 허용하려면 별도의 설정 없이 기본적으로 허용됩니다. SQLite의 B-Tree 인덱스는 NULL 값을 저장할 수 있습니다.
다만, 아래와 같은 경우 NULL 값이 제한될 수 있습니다.
1. UNIQUE INDEX와 NULL 값
- SQLite에서는 UNIQUE INDEX가 적용된 필드에 NULL 값을 여러 개 저장할 수 있습니다.
- 이는 NULL이 "동일하지 않음"으로 간주되기 때문입니다.
CREATE TABLE users (
id INTEGER PRIMARY KEY,
email TEXT UNIQUE -- UNIQUE INDEX 적용
);
INSERT INTO users (email) VALUES (NULL); -- 허용됨
INSERT INTO users (email) VALUES (NULL); -- 허용됨 (다른 NULL로 취급)
2. PRIMARY KEY 인덱스와 NULL 값
- INTEGER PRIMARY KEY는 NULL을 허용하지 않습니다.
- 하지만 일반 PRIMARY KEY에 대해서는 NULL을 허용합니다.
CREATE TABLE test1 (
id INTEGER PRIMARY KEY, -- NULL 허용 안됨
name TEXT
);
INSERT INTO test1 (id, name) VALUES (NULL, 'Alice'); -- 오류 발생!
CREATE TABLE test2 (
id INTEGER,
name TEXT,
PRIMARY KEY (id) -- NULL 허용
);
INSERT INTO test2 (id, name) VALUES (NULL, 'Bob'); -- 정상 동작
3. INDEX 생성 시 NULL 값 허용
별도의 설정 없이 CREATE INDEX를 사용하면 NULL 값도 인덱싱됩니다.
CREATE TABLE products (
id INTEGER PRIMARY KEY,
category TEXT
);
CREATE INDEX idx_category ON products (category);
INSERT INTO products (category) VALUES (NULL), ('Electronics'), (NULL), ('Books');
- 위 테이블에서 category 필드는 NULL을 포함할 수 있으며, 인덱스 idx_category에도 NULL 값이 저장됩니다.
- SELECT * FROM products WHERE category IS NULL; 쿼리도 인덱스를 사용할 수 있습니다.
4. NULL을 제외한 인덱스 만들기
만약 NULL 값을 인덱스에서 제외하려면 파셜 인덱스(Partial Index) 를 사용할 수 있습니다.
CREATE INDEX idx_category_not_null ON products (category) WHERE category IS NOT NULL;
- 이렇게 하면 category 값이 NULL이 아닌 행만 인덱스에 포함됩니다.
결론
✅ SQLite의 일반 INDEX는 NULL 값을 허용합니다.
✅ UNIQUE INDEX는 NULL 값을 중복 저장할 수 있습니다.
✅ INTEGER PRIMARY KEY는 NULL을 허용하지 않습니다.
✅ NULL 값을 제외한 인덱스를 만들려면 WHERE column IS NOT NULL 조건을 사용하면 됩니다.
🎬 유튜브 채널 🎬
위로그@WiLog
📢 안녕하세요, 위로그@WiLog 시청자 여러분, 저는 윌리(Willee) 입니다. 📢 위로그@WiLog 는 자기계발을 목적으로 하는 채널 입니다. 📢 오늘도 즐겁게~ 자신을 위한 계발을 함께 해보아요~ d^_^b 📌
www.youtube.com
🎬 치지직 채널 🎬
위로그 채널 - CHZZK
지금, 스트리밍이 시작됩니다. 치지직-
chzzk.naver.com
'컴퓨터' 카테고리의 다른 글
👨💻 [AWS] AWS 의 S3 서비스를 잘 이용하려면 어떻게 해야 하나요? (0) | 2025.03.24 |
---|---|
👨💻 [DB] DB 에서 Index 의 역할과 장단점은 어떻게 되나요? (0) | 2025.03.11 |
👨💻 [AWS] s3fs-fuse 지원하는 리눅스 최소 버전은 어떻게 되나요? (0) | 2025.03.06 |
👨💻 [AWS] AWS 의 스토리지 서비스를 리눅스 서버에 저장장치로 연결해서 사용하는 방법은 어떻게 되나요? (0) | 2025.03.06 |
👨💻 [Synergy] Synergy 에서 서버, 클라이언트가 연결이 잘되어 있이지만, 키보드/마우스가 다른 컴퓨터로 이동하지 않고, 로그에 locked to screen 이란 내용이 있으면, 어떻게 처리해야 하나요? (0) | 2025.02.12 |