SQLite - 제약 조건: 데이터 통합 가이드

안녕하세요, 미래의 데이터베이스 마법사 여러분! 오늘 우리는 SQLite 제약 조건의 세계에 foot로 들어갈 흥미로운 여정을 시작할 것입니다. 프로그래밍에 처음 도전하는 분이라면 걱정하지 마세요 - 저는 친절한 가이드로서 단계별로 모든 것을 설명해 드릴 것입니다. 이 튜토리얼을 마치면, 데이터를 프로처럼 제약할 수 있을 것입니다!

SQLite - Constraints

제약 조건이란?

먼저, 제약 조건에 대해 이야기해 보겠습니다. 상상해 보세요. 카드 집을 만들고 싶어요. 안정적이기를 바라시죠? 데이터베이스의 제약 조건은 카드 집이 무너지지 않도록 유지하는 규칙과 같습니다. 그들은 데이터가 일관성 있고 신뢰할 수 있도록 보장합니다.

제약 조건의 유형

SQLite는 여러 가지 제약 조건을 제공합니다. 흥미로운 예제들로 각각 탐구해 보겠습니다!

1. NOT NULL 제약 조건

NOT NULL 제약 조건은 클럽의 경비원과 같습니다 - 데이터베이스에 빈 값을 허용하지 않습니다.

CREATE TABLE students (
id INTEGER PRIMARY KEY,
name TEXT NOT NULL,
age INTEGER NOT NULL
);

이 예제에서, 우리는 학생들을 위한 테이블을 만듭니다. nameage 필드는 비워 두지 않아야 합니다. 이름이나 나이 없이 학생을 추가하려고 하면, SQLite는 친절하게(하지만 단호하게) 거부합니다.

2. DEFAULT 제약 조건

DEFAULT 제약 조건은 엄마가 점심을 싸주는 것과 같습니다 - 잊어버리면 기본 옵션으로 대체해 줍니다.

CREATE TABLE orders (
id INTEGER PRIMARY KEY,
product TEXT NOT NULL,
quantity INTEGER DEFAULT 1,
order_date TEXT DEFAULT CURRENT_DATE
);

여기서, 주문 시 수량을 지정하지 않으면 기본적으로 1개로 간주합니다. 날짜를 추가하지 않으면 오늘 날짜를 사용합니다.

3. UNIQUE 제약 조건

UNIQUE 제약 조건은 교실에서 좌석 번호를 할당하는 것과 같습니다 - 두 학생이 같은 좌석을 가질 수 없습니다.

CREATE TABLE users (
id INTEGER PRIMARY KEY,
username TEXT UNIQUE,
email TEXT UNIQUE
);

이렇게 하면 두 사용자가 같은 사용자 이름이나 이메일 주소를 가질 수 없습니다. 중복 계정을 방지하는 데 완벽합니다!

4. PRIMARY KEY 제약 조건

PRIMARY KEY 제약 조건은 각 학생에게 고유한 ID 카드를 주는 것과 같습니다. 이는 UNIQUE 제약 조건의 특별한 유형으로, NULL이 될 수 없습니다.

CREATE TABLE books (
isbn TEXT PRIMARY KEY,
title TEXT NOT NULL,
author TEXT NOT NULL
);

이 예제에서, 각 책은 고유한 ISBN을 가지고 있으며, 이는 식별자로 사용됩니다.

5. CHECK 제약 조건

CHECK 제약 조건은 선생님이 숙제를 확인하는 것과 같습니다 - 데이터가 특정 조건을 만족하는지 확인합니다.

CREATE TABLE employees (
id INTEGER PRIMARY KEY,
name TEXT NOT NULL,
age INTEGER CHECK(age >= 18),
salary REAL CHECK(salary > 0)
);

이렇게 하면 모든 직원이 최소 18세 이상이고 급여가 양수인지 확인합니다. 아동 노동이나 무료 인턴십은 없습니다!

6. FOREIGN KEY 제약 조건

FOREIGN KEY 제약 조건은 퍼즐 조각을 연결하는 것과 같습니다 - 관련 데이터를 기반으로 테이블을 연결합니다.

CREATE TABLE orders (
id INTEGER PRIMARY KEY,
customer_id INTEGER,
product TEXT NOT NULL,
FOREIGN KEY (customer_id) REFERENCES customers(id)
);

이 제약 조건은 orders 테이블의 모든 customer_idcustomers 테이블의 id와 일치해야 합니다.

제약 조건 수정

occasionally, you might need to change your constraints. Let's look at how to do that.

제약 조건 추가

기존 테이블에 제약 조건을 추가하려면 ALTER TABLE 명령을 사용할 수 있습니다:

ALTER TABLE students ADD CONSTRAINT age_check CHECK(age > 0);

이렇게 하면 모든 나이가 양수인지 확인하는 제약 조건을 추가합니다.

제약 조건 제거

SQLite에서 제약 조건을 제거하는 것은 약간 복잡합니다. 제약 조건이 없는 새로운 테이블을 만들고,旄旧 테이블을 제거한 후 새로운 테이블을 다시 이름을 지정하는 과정을 거쳐야 합니다:

-- Step 1: 제약 조건이 없는 새로운 테이블 생성
CREATE TABLE new_students AS SELECT * FROM students;

-- Step 2:旄旧 테이블 제거
DROP TABLE students;

-- Step 3: 새로운 테이블 이름을 다시 지정
ALTER TABLE new_students RENAME TO students;

제약 조건 메서드

제약 조건을 사용할 수 있는 메서드를 요약한 표입니다:

메서드 설명
NOT NULL 열이 NULL 값을 가질 수 없도록 보장
DEFAULT 열에 기본 값을 제공
UNIQUE 열의 모든 값이 다를 것을 보장
PRIMARY KEY 데이터베이스 테이블의 각 행/레코드를 고유하게 식별
CHECK 열의 모든 값이 특정 조건을 만족하도록 보장
FOREIGN KEY 다른 테이블의 행/레코드를 고유하게 식별

결론

축하합니다! SQLite 제약 조건의 기초 과정을 마친 것입니다. 제약 조건은 친구입니다 - 데이터를 깨끗하고 일관성 있고 신뢰할 수 있게 유지하는 데 도움을 줍니다. 데이터베이스 세계로의 여정을 계속하면서, 이 제약 조건들이 데이터 통합을 유지하는 데 귀중한 도구가 될 것입니다.

항상 데이터가 따라야 할 규칙을 생각하고, 제약 조건을 사용하여 그 규칙을 강제하십시오. 데이터베이스에 나쁜 데이터가 입력되는 것을 방지하는 것은 나중에 데이터를 정리하는 것보다 훨씬 쉽습니다!

계속 연습하고, 호기심을 유지하며, 행복하게 코딩하세요! ??

Credits: Image by storyset