[SQLite] sqlite 테이블생성 (create table) example
SQLite 사용법 관련 목차
1. [SQLite]-sqlite 소개 -Serverless-Database
2. [SQLite]-SQLite_관리-Commands
3. [SQLite] sqlite 테이블 생성 - create table
4. [SQLite] Sqlite transaction - ACID개념
5. [SQLite] [SQLite] Sqlite transaction 처리문 작성 - BEGIN TRANSACTION
6.[SQLite] date형식 timestamp를 이용하여 날짜 표현하기
7.[SQLite] SQLite 윈도우-리눅스 설치하기
SQLite 에서 create table !
SQLite에서 새 테이블을 생성하려면 다음 과 같이 CREATE TABLE 구문을 사용하여 SQL문을 작성합니다.
CREATE TABLE [IF NOT EXISTS] [schema_name].table_name (
column_1 data_type PRIMARY KEY,
column_2 data_type NOT NULL,
column_3 data_type DEFAULT 0,
table_constraints
) [WITHOUT ROWID];
CREATE TABLE 구문을 사용하여 SQL문 작성법
1. CREATE TABLE 키워드 뒤에 생성하려는 테이블의 이름을 지정합니다 . sqlite_테이블명 은 SQLite의 내부 사용을 위해 예약어로 되어 있으므로 사용할 수 없습니다 .
2. IF NOT EXISTS새로운 테이블이 존재하지 않는 경우 옵션을 사용하여 새 테이블을 만듭니다. IF NOT EXISTS 옵션을 사용하지 않고 이미 존재하는 테이블을 생성하려고 하면 오류가 발생합니다.
3. 선택적으로 schema_name을 사용하여 새 테이블이 속하는 스키마그룹을 지정합니다. 스키마는 기본 데이터베이스, temp 데이터베이스 또는 연결된 데이터베이스가 될 수 있습니다.
4. 테이블의 컬럼 목록을 지정합니다. 각 열에는 컬럼 이름, 데이터 유형 및 열 제약 조건이 있습니다. SQLite는 PRIMARY KEY, UNIQUE, NOT NULL및 CHECK열 등의 제약 조건을 지원합니다.
5. PRIMARY KEY, FOREIGN KEY, UNIQUE, CHECK 등의 제약 조건과 같은 테이블 제약 조건을 지정합니다.
6. WITHOUT ROWID 옵션을 선택적으로 사용합니다 .
rowid는 기본적으로 테이블의 행마다 rowid, oid또는_rowid_열 이라고 하는 암시적 열이 있습니다. ROWID는 rowid테이블 내부의 행을 고유하게 식별하는 64비트 부호 있는 정수 키를 저장합니다. SQLite가 rowid 열을 생성하는 것을 원하지 않으면 WITHOUT ROWID옵션을 지정합니다.
rowid열 을 포함하는 테이블을 'rowid 테이블'이라고 합니다. 이 WITHOUT ROWID옵션은 SQLite 3.8.2 이상에서만 사용할 수 있습니다.
SQLite CREATE TABLE examples
SQLite를 사용하여 연락처를 관리하는 테이블을 작성 해야 한다고 가정합니다.
각 테이블의 구성 내용으로
이름, 성, 이메일, 핸드폰 등을 포함하는 연락처를 테이블로 구성합니다.
이때 이메일과 전화가 고유해야 한다는 것입니다. 또한 각 연락처는 하나 이상의 그룹에 속하며 각 그룹에는 0개 또는 여러 개의 연락처가 있을 수 있습니다.
이와 같은 요구 사항을 기반으로 세 가지 테이블을 만들었습니다.
다음 데이터베이스 다이어그램은 테이블 contacts, groups, contacts groups 등의 테이블을 관계도를 구성합니다.
- contacts연락처 정보를 저장 하는 테이블입니다.
- groups그룹 정보를 저장 하는 테이블입니다.
- contact_groups연락처와 그룹 간의 관계를 저장하는 테이블입니다 .
contacts table
CREATE TABLE contacts (
contact_id INTEGER PRIMARY KEY,
first_name TEXT NOT NULL,
last_name TEXT NOT NULL,
email TEXT NOT NULL UNIQUE,
phone TEXT NOT NULL UNIQUE
);
contacts 테이블 의 contact_id기본 키입니다 .
기본 키는 하나의 열로 구성되어 있으므로 열 제약 조건을 사용할 수 있습니다.
last_name TEXT NOT NULL 과 같이 빈 값을 입력 받지 않도록 하고,
email TEXT NOT NULL UNIQUE 으로
이메일과 전화는 고유하므로 UNIQUE각 열에 대한 제약 조건을 사용합니다.
group table
CREATE TABLE groups (
group_id INTEGER PRIMARY KEY,
name TEXT NOT NULL
);
groups 테이블은 두 개의 열로 매우 간단합니다. group_id및 name. group_id열은 기본 키 열을 구성 합니다.
contact_groups table
CREATE TABLE contact_groups(
contact_id INTEGER,
group_id INTEGER,
PRIMARY KEY (contact_id, group_id),
FOREIGN KEY (contact_id)
REFERENCES contacts (contact_id)
ON DELETE CASCADE
ON UPDATE NO ACTION,
FOREIGN KEY (group_id)
REFERENCES groups (group_id)
ON DELETE CASCADE
ON UPDATE NO ACTION
);
보통 RDB(관계형 데이터베이스)는 테이블과 테이블간의 관계를 Reference Key 또는 테이블로 표현이 되는데 contacts_groups 테이블은 contacts 와 groups 간의 관계로 형성되는 데이터를 나타냅니다.
이때 두 테이블에서 사용 하는 주요 키가 관계형 테이블의 PRIMARY KEY로 구성 됩니다.
contact_groups 테이블에는 contact_id, group_id 두개의 열로 구성된 기본 키가 있습니다 .
(contact_id는 contacts 테이블과 group_id는 groups 테이블과 관계를 가지고 있습니다)
테이블 기본 키 제약 조건을 추가하려면 다음 구문을 사용합니다.
PRIMARY KEY (contact_id, group_id)
FOREIGN KEY (contact_id)
contact_id를 contacts 테이블의 참조키로 설정 했습니다.
따라서 FOREIGN KEY제약 조건을 사용하여 각 열에 대한 외래 키를 정의합니다.
FOREIGN KEY (contact_id)
REFERENCES contacts (contact_id)
ON DELETE CASCADE
ON UPDATE NO ACTION
FOREIGN KEY (group_id)
REFERENCES groups (group_id)
ON DELETE CASCADE
ON UPDATE NO ACTION
이와 같이 FOREIGN KEY 제약 조건까지 보았습니다..
아래를 참고하여 상세 내용을 참고 바랍니다.
SQLite 사용법 관련 목차
1. [SQLite]-sqlite 소개 -Serverless-Database
2. [SQLite]-SQLite_관리-Commands
3. [SQLite] sqlite 테이블 생성 - create table
4. [SQLite] Sqlite transaction - ACID개념
5. [SQLite] [SQLite] Sqlite transaction 처리문 작성 - BEGIN TRANSACTION
6.[SQLite] date형식 timestamp를 이용하여 날짜 표현하기
7.[SQLite] SQLite 윈도우-리눅스 설치하기
'BigData' 카테고리의 다른 글
[초보] SQL 기초 모음 - SELECT(1) (0) | 2022.08.06 |
---|---|
[SQLite] SQLite Commands (0) | 2022.08.04 |
[SQLite] sqlite 소개 - Serverless Database (0) | 2022.08.04 |
(표준)개인식별정보 와 비식별 ISO/IEC 20889 privacy framework (0) | 2022.06.24 |
데이터 메시 (Data mesh) 원칙과 전략 정리 (0) | 2022.04.30 |
Python - KoNLPy 형태소 분석기 비교 (Komoran, Okt, Kkma) (0) | 2021.09.15 |
[꿀팁] 쉽게 설명하는 데이터베이스 설계 (1) (0) | 2021.04.12 |