SQLite에서 테이블을 생성하는 SQL 문법은 무엇인가요?
_____A: 기본 구문은 다음과 같습니다.
CREATE TABLE [IF NOT EXISTS] <테이블명> (
<컬럼명1> <데이터타입> [제약조건],
<컬럼명2> <데이터타입> [제약조건],
…
[, 테이블제약조건 …]
);
2. Q: IF NOT EXISTS 옵션은 무엇을 하나요?
A: 같은 이름의 테이블이 이미 존재할 때 오류를 피하고 생성 과정을 무시합니다.
예) CREATE TABLE IF NOT EXISTS users (id INTEGER PRIMARY KEY, name TEXT);
3. Q: 컬럼 정의 시 지정할 수 있는 데이터타입은 어떤 것이 있나요?
A: SQLite는 엄격한 타입 체계가 없고, Storage Class 중심입니다. 대표적인 타입 선언 예시는:
• INTEGER – 정수 저장
• REAL – 부동소수점 저장
• TEXT – 텍스트 저장
• BLOB – 바이너리 데이터 저장
• NUMERIC – 숫자/날짜/부울 저장
※ 타입 선언은 권고사항이며, SQLite는 입력값의 타입을 유연하게 저장합니다.
4. Q: 컬럼에 제약조건을 추가하려면 어떻게 하나요?
A:
• PRIMARY KEY – 기본키 지정
• UNIQUE – 유일값 제약
• NOT NULL – 널 값 금지
• CHECK(조건) – 임의 조건 검사
• DEFAULT 값 – 기본값 지정
예) age INTEGER NOT NULL DEFAULT 0, email TEXT UNIQUE
5. Q: PRIMARY KEY와 AUTOINCREMENT 사용법은?
A:
• PRIMARY KEY만 지정하면 자동으로 ROWID를 기본키로 사용합니다.
• INTEGER PRIMARY KEY AUTOINCREMENT를 쓰면 키가 재사용되지 않고, 이전 최대값 +1로 고유하게 증가합니다.
예) id INTEGER PRIMARY KEY AUTOINCREMENT
6. Q: 테이블 수준의 제약조건(테이블제약)은 어떻게 하나요?
A: 컬럼 리스트 뒤에 쉼표로 구분해 작성합니다.
• 복합 PRIMARY KEY
• FOREIGN KEY
• CHECK
예) PRIMARY KEY(col1, col2), FOREIGN KEY(user_id) REFERENCES users(id)
7. Q: FOREIGN KEY를 사용하려면 어떤 설정이 필요한가요?
1) 외래키 제약 활성화: PRAGMA foreign_keys = ON;
2) 테이블 정의:
CREATE TABLE orders (
id INTEGER PRIMARY KEY,
user_id INTEGER,
FOREIGN KEY(user_id) REFERENCES users(id) ON DELETE CASCADE
);
8. Q: TEMPORARY TABLE은 무엇이고 어떻게 만드나요?
A: 세션(연결) 종료 시 자동 삭제되는 임시 테이블입니다.
CREATE TEMPORARY TABLE temp_data (key TEXT, value TEXT);
9. Q: WITHOUT ROWID 옵션은 언제 사용하나요?
A:
• 기본키가 복합키이거나 ROWID가 불필요할 때 사용
• 데이터 저장 공간 절약 및 검색 성능 향상 가능
예) CREATE TABLE example(id1 INTEGER, id2 INTEGER, data TEXT, PRIMARY KEY(id1,id2)) WITHOUT ROWID;
10. Q: 실제 예제는 어떻게 작성되나요?
A:
-- 사용자 테이블 생성
CREATE TABLE IF NOT EXISTS users (
id INTEGER PRIMARY KEY AUTOINCREMENT,
name TEXT NOT NULL,
email TEXT UNIQUE NOT NULL,
age INTEGER DEFAULT 18,
created_at TEXT DEFAULT (datetime('now','localtime'))
);
-- 주문 테이블 생성 (외래키 포함)
PRAGMA foreign_keys = ON;
CREATE TABLE IF NOT EXISTS orders (
order_id INTEGER PRIMARY KEY,
user_id INTEGER NOT NULL,
amount REAL CHECK(amount>0),
order_date TEXT DEFAULT (date('now')),
FOREIGN KEY(user_id) REFERENCES users(id) ON DELETE CASCADE
);
11. Q: CREATE TABLE 오류가 발생하면 어떻게 확인하나요?
A:
• 테이블명/컬럼명 중복 확인
• 괄호·쉼표 위치 오류 검사
• 외래키 참조 대상 테이블 및 컬럼 존재 여부 확인
• PRAGMA foreign_keys 설정 확인
이 명령어는 데이터베이스 내에 새로운 테이블을 생성하는 데 사용되며, 테이블의 이름과 각 열(column)의 데이터 타입 및 제약 조건을 지정할 수 있습니다.
아래에서 SQLite에서 테이블을 생성하는 기본적인 문법과 예제를 자세히 설명하겠습니다.
기본 문법 ```sql CREATE TABLE [IF NOT EXISTS] table_name ( column1 datatype [constraints], column2 datatype [constraints], ... ); ``` - CREATE TABLE : 테이블을 생성하는 명령어입니다.
- IF NOT EXISTS : 선택 사항으로, 지정된 이름의 테이블이 이미 존재하는 경우 오류를 발생시키지 않고 아무 작업도 수행하지 않습니다.
- table_name : 생성할 테이블의 이름입니다.
테이블 이름은 고유해야 하며, SQLite의 규칙을 따라야 합니다.
- column1, column2, ... : 테이블에 포함될 열의 이름입니다.
각 열은 고유한 이름을 가져야 합니다.
- datatype : 각 열에 저장될 데이터의 유형을 정의합니다.
SQLite는 다양한 데이터 유형을 지원합니다.
일반적인 데이터 유형으로는 `INTEGER`, `REAL`, `TEXT`, `BLOB`, `NUMERIC` 등이 있습니다.
- constraints : 선택 사항으로, 열에 대한 제약 조건을 정의합니다.
예를 들어, `PRIMARY KEY`, `NOT NULL`, `UNIQUE`, `DEFAULT` 등의 제약 조건을 사용할 수 있습니다.
데이터 타입 SQLite에서 지원하는 주요 데이터 타입은 다음과 같습니다: - INTEGER : 정수형 데이터 - REAL : 실수형 데이터 - TEXT : 문자열 데이터 - BLOB : 이진 데이터 - NUMERIC : 숫자형 데이터 (정수 또는 실수) 제약 조건 제약 조건은 데이터의 무결성을 유지하기 위해 사용됩니다.
주요 제약 조건은 다음과 같습니다: - PRIMARY KEY : 테이블의 각 행을 고유하게 식별하는 열로, 반드시 유일해야 하며 NULL 값을 가질 수 없습니다.
- FOREIGN KEY : 다른 테이블의 기본 키를 참조하는 열로, 데이터의 관계를 정의합니다.
- NOT NULL : 해당 열에 NULL 값을 허용하지 않습니다.
- UNIQUE : 해당 열의 모든 값이 유일해야 합니다.
- DEFAULT : 열에 값이 제공되지 않을 경우 사용할 기본값을 정의합니다.
예제 다음은 SQLite에서 `users`라는 테이블을 생성하는 예제입니다.
이 테이블은 사용자 정보를 저장하며, 각 사용자에 대한 ID, 이름, 이메일, 가입 날짜를 포함합니다.
```sql CREATE TABLE IF NOT EXISTS users ( id INTEGER PRIMARY KEY AUTOINCREMENT, name TEXT NOT NULL, email TEXT NOT NULL UNIQUE, created_at DATETIME DEFAULT CURRENT_TIMESTAMP ); ``` - `id`: 사용자 ID로, 자동 증가하는 정수형 기본 키입니다.
- `name`: 사용자 이름으로, NULL 값을 허용하지 않는 문자열입니다.
- `email`: 사용자 이메일로, NULL 값을 허용하지 않으며, 유일해야 합니다.
- `created_at`: 사용자가 가입한 날짜로, 기본값으로 현재 타임스탬프를 사용합니다.
결론 SQLite에서 테이블을 생성하는 과정은 간단하지만, 데이터의 구조와 무결성을 정의하는 데 매우 중요합니다.
`CREATE TABLE` 문법을 통해 필요한 데이터 타입과 제약 조건을 적절히 설정함으로써, 데이터베이스의 효율성과 안정성을 높일 수 있습니다.
작성자:
최하준 [비회원]
| 작성일자: 1년 전
2024-11-09 09:01:49
조회수: 170 | 댓글: 0 | 좋아요: 0 | 싫어요: 0
조회수: 170 | 댓글: 0 | 좋아요: 0 | 싫어요: 0
내용이 부정확하다면 싫어요를 클릭해주세요.