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
νλλ λ°μ΄ν°λ² μ΄μ€μμ μλ κ΄λ¦¬λλ―λ‘, μ¬μ©μλ λ μ½λμ κ³ μ μ±μ μ κ²½ μΈ νμκ° μμ΅λλ€.