SQLite์์ AUTOINCREMENT
์ PRIMARY KEY
๋ ์๋ก ๋ค๋ฅธ ๊ฐ๋
์ด์ง๋ง, ๋ฐ์ดํฐ๋ฒ ์ด์ค ํ
์ด๋ธ์์ ๊ณ ์ ์๋ณ์๋ฅผ ์์ฑํ๋ ๋ฐ ํจ๊ป ์ฌ์ฉ๋ฉ๋๋ค. ์ด ๋ ๊ฐ๋
์ ์ฃผ์ ์ฐจ์ด์ ๊ณผ ์ฐ๊ด์ฑ์ ์ดํด๋ณด๊ฒ ์ต๋๋ค.
๋จผ์ AUTOINCREMENT
ํ๋๋ ์ฃผ๋ก ๋ฐ์ดํฐ์ ๊ณ ์ ์ฑ๊ณผ ์๋ณ์ฑ์ ์ ์งํ๋ ๋ฐ ์ค์ ์ ๋๋ฉฐ, ์ด๋ ๋ฐ์ดํฐ ๋ฌด๊ฒฐ์ฑ์ ๋ณด์ฅํ๋ ๋ฐ ์ค์ํฉ๋๋ค.
CREATE TABLE example (
id INTEGER PRIMARY KEY AUTOINCREMENT,
name TEXT
);
PRIMARY KEY
๋ ๋ฐ์ดํฐ ๋ฌด๊ฒฐ์ฑ์ ๋ณด์ฅํ๊ธฐ ์ํด ๊ฐ ํ์ ๊ณ ์ ํ๊ฒ ์๋ณํ๋ ๋ฐ ์ฌ์ฉ๋๋ ๋ฐ๋ฉด, AUTOINCREMENT
๋ ๊ฐ์ด ์๋์ผ๋ก ์ฆ๊ฐํ๋ ํน์ํ ๋ฐฉ๋ฒ์
๋๋ค.
AUTOINCREMENT
๋ ์ฃผ๋ก ๊ธฐ๋ณธ ํค์ ์ ์ฉ๋๋ฉฐ, ํ
์ด๋ธ์ ์๋ก์ด ํ์ด ์ถ๊ฐ๋ ๋๋ง๋ค ๊ณ ์ ํ ์ซ์๋ฅผ ์๋์ผ๋ก ์์ฑํฉ๋๋ค.
SQLite์์๋ INTEGER PRIMARY KEY
์ปฌ๋ผ์ด ์๋์ผ๋ก autoincrementing ์์ฑ์ ๊ฐ์ต๋๋ค. ๋ช
์์ ์ผ๋ก AUTOINCREMENT
ํค์๋๋ฅผ ์ฌ์ฉํ์ง ์์๋, SQLite๋ INTEGER PRIMARY KEY
์ปฌ๋ผ์ ๋ํด ์๋ ์ฆ๊ฐ ๊ธฐ๋ฅ์ ์ ๊ณตํฉ๋๋ค. ํ์ง๋ง AUTOINCREMENT
ํค์๋๋ฅผ ๋ช
์์ ์ผ๋ก ์ถ๊ฐํ๋ฉด, SQLite๋ ์ซ์๋ฅผ ์ฌ์ฌ์ฉํ์ง ์๊ณ ํญ์ ์ด์ ๋ณด๋ค ๋์ ์ซ์๋ฅผ ์์ฑํฉ๋๋ค.
PRIMARY KEY
์ AUTOINCREMENT
๋ ํจ๊ป ์ฌ์ฉ๋ ๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค ํ
์ด๋ธ์์ ๊ฐ ํ์ ๊ณ ์ ํ๊ณ ์์ฐจ์ ์ผ๋ก ์๋ณํ๋ ๋ฐ ๋งค์ฐ ํจ๊ณผ์ ์
๋๋ค.
ํ ์ด๋ธ ์คํค๋ง ์์์ ๋๋ค.
######### CREATE 'video', 'channel' table in videos.db #########
def create_tables_videosDB():
with sqlite3.connect('videos.db') as connection:
cursor = connection.cursor()
# channel ํ
์ด๋ธ
cursor.execute("""
CREATE TABLE channel (
cid INTEGER PRIMARY KEY AUTOINCREMENT,
channel_id TEXT
)
""")
connection.commit()
# video ํ
์ด๋ธ
cursor.execute("""
CREATE TABLE video (
vid INTEGER PRIMARY KEY AUTOINCREMENT,
cid INTEGER,
video_id TEXT,
title TEXT,
link TEXT,
FOREIGN KEY (cid) REFERENCES channel(cid)
)
""")
connection.commit()
๊ทธ๋ฆฌ๊ณ ์๋์ ์ฟผ๋ฆฌ๋ video
ํ
์ด๋ธ๊ณผ channel
ํ
์ด๋ธ์ cid
๋ฅผ ๊ธฐ์ค์ผ๋ก ๊ฒฐํฉํ์ฌ, ๋ ํ
์ด๋ธ์ ๊ด๋ จ ๋ฐ์ดํฐ๋ฅผ ํจ๊ป ์กฐํํ ์ ์๊ฒ ํฉ๋๋ค. ์ด๋ฌํ ๋ฐฉ์์ผ๋ก ๋ฐ์ดํฐ๋ฒ ์ด์ค์์ ํ
์ด๋ธ ๊ฐ์ ๊ด๊ณ๋ฅผ ์ ์ํ๊ณ ๋ฐ์ดํฐ๋ฅผ ํจ๊ณผ์ ์ผ๋ก ๊ด๋ฆฌํ ์ ์์ต๋๋ค.
SELECT *
FROM video
INNER JOIN channel ON video.cid = channel.cid;
์ฐธ๊ณ ๋ก INSERT
์ฐ์ฐ์์ vid
์ cid
์ ๊ฐ์ AUTOINCREMENT
ํ๋๋ ์ง์ ์ฌ์ฉ๋์ง ์์ต๋๋ค. INSERT
์ฐ์ฐ์ ํ ๋, ์ด๋ฌํ ํ๋๋ ๋ณดํต ์๋ต๋๋ฉฐ, ๋ฐ์ดํฐ๋ฒ ์ด์ค ์์คํ
์ด ์๋์ผ๋ก ๊ฐ์ ํ ๋นํฉ๋๋ค. ์๋ฅผ ๋ค์ด, channel
ํ
์ด๋ธ์ ์๋ก์ด ๋ ์ฝ๋๋ฅผ ์ถ๊ฐํ ๋๋ cid
๊ฐ์ ์ง์ ํ์ง ์๊ณ channel_id
๋ง ์ง์ ํฉ๋๋ค.
INSERT INTO channel (channel_id) VALUES ('channel123');
์ด ๊ฒฝ์ฐ, cid
๋ ์๋์ผ๋ก ์์ฑ๋๋ ๊ณ ์ ๋ฒํธ๋ฅผ ๋ฐ๊ฒ ๋ฉ๋๋ค. AUTOINCREMENT
ํ๋๋ ์ฃผ๋ก ๋ฐ์ดํฐ๋ฒ ์ด์ค ๋ด๋ถ์์ ๊ฐ ๋ ์ฝ๋๋ฅผ ์ ์ผํ๊ฒ ์๋ณํ๋ ๋ฐ ์ฌ์ฉ๋๋ฉฐ, ์ฌ์ฉ์๊ฐ ์ง์ ๊ด๋ฆฌํ ํ์๊ฐ ์์ต๋๋ค.
AUTOINCREMENT
ํ๋๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ฐ์ฐ์์ ๋ค์๊ณผ ๊ฐ์ด ์ฌ์ฉ๋ฉ๋๋ค:
์ฌ์ฉ๋๋ ์ฐ์ฐ: SELECT
, JOIN
, DELETE
๊ฐ ๋ ์ฝ๋์ ๊ณ ์ ์๋ณ์๋ก ์ฌ์ฉ๋์ด, ๋ฐ์ดํฐ ์กฐํ๋ ๋ค๋ฅธ ํ
์ด๋ธ๊ณผ์ ๊ด๊ณ๋ฅผ ๋ช
ํํ๊ฒ ํฉ๋๋ค.
์ฌ์ฉ๋์ง ์๋ ์ฐ์ฐ: INSERT
, UPDATE
INSERT
์ฐ์ฐ ์ AUTOINCREMENT
ํ๋๋ ์ผ๋ฐ์ ์ผ๋ก ์๋ต๋ฉ๋๋ค. ๋ฐ์ดํฐ๋ฒ ์ด์ค ์์คํ
์ด ์๋์ผ๋ก ๊ณ ์ ๊ฐ์ ํ ๋นํ๋ฏ๋ก, ๊ฐ๋ฐ์๊ฐ ์ง์ ์ง์ ํ ํ์๊ฐ ์์ต๋๋ค.
์ด๋ฌํ ๋ฐฉ์์ ๋ฐ์ดํฐ ๋ฌด๊ฒฐ์ฑ์ ๋ณด์ฅํ๊ณ ๋ฐ์ดํฐ ๊ด๋ฆฌ๋ฅผ ๊ฐ์ํํ๋ ๋ฐ ๋์์ด ๋ฉ๋๋ค. AUTOINCREMENT
ํ๋๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค์์ ์๋ ๊ด๋ฆฌ๋๋ฏ๋ก, ์ฌ์ฉ์๋ ๋ ์ฝ๋์ ๊ณ ์ ์ฑ์ ์ ๊ฒฝ ์ธ ํ์๊ฐ ์์ต๋๋ค.