[SQL] DDL, DML

Updated:

Categories:

Tags: , ,

๐Ÿ“Œ ๊ฐœ์ธ์ ์ธ ๊ณต๊ฐ„์œผ๋กœ ๊ณต๋ถ€๋ฅผ ๊ธฐ๋กํ•˜๊ณ  ๋ณต์Šตํ•˜๊ธฐ ์œ„ํ•ด ์‚ฌ์šฉํ•˜๋Š” ๋ธ”๋กœ๊ทธ์ž…๋‹ˆ๋‹ค.
์ •ํ™•ํ•˜์ง€ ์•Š์€ ์ •๋ณด๊ฐ€ ์žˆ์„ ์ˆ˜ ์žˆ์œผ๋‹ˆ ์ฐธ๊ณ ๋ฐ”๋ž๋‹ˆ๋‹ค :๐Ÿ˜ธ
[ํ‹€๋ฆฐ ๋‚ด์šฉ์€ ๋Œ“๊ธ€๋กœ ๋‚จ๊ฒจ์ฃผ์‹œ๋ฉด ๋ณต๋ฐ›์œผ์‹ค๊ฑฐ์—์š”]

DBMS(Database management system)

: ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋ฅผ ๊ด€๋ฆฌํ•˜๊ธฐ ์œ„ํ•œ ์†Œํ”„ํŠธ์›จ์–ด ์‹œ์Šคํ…œ

  1. ๋ฐ์ดํ„ฐ ์ •์˜: ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์Šคํ‚ค๋งˆ๋ฅผ ์ƒ์„ฑ, ์ˆ˜์ •, ์‚ญ์ œํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  2. ๋ฐ์ดํ„ฐ ์กฐ์ž‘: ๋ฐ์ดํ„ฐ๋ฅผ ์‚ฝ์ž…, ์ˆ˜์ •, ์‚ญ์ œ ๋ฐ ๊ฒ€์ƒ‰ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  3. ๋ฐ์ดํ„ฐ ๋ณด์•ˆ: ๋ฐ์ดํ„ฐ ์ ‘๊ทผ ๊ถŒํ•œ์„ ๊ด€๋ฆฌํ•˜์—ฌ ๋ฏผ๊ฐํ•œ ์ •๋ณด๋ฅผ ๋ณดํ˜ธํ•ฉ๋‹ˆ๋‹ค.
  4. ๋ฐ์ดํ„ฐ ๋ฌด๊ฒฐ์„ฑ: ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๋‚ด์˜ ๋ฐ์ดํ„ฐ๊ฐ€ ์ •ํ™•ํ•˜๊ณ  ์ผ๊ด€์„ฑ์ด ์œ ์ง€๋˜๋„๋ก ํ•ฉ๋‹ˆ๋‹ค.
  5. ํŠธ๋žœ์žญ์…˜ ๊ด€๋ฆฌ: ์—ฌ๋Ÿฌ ์ž‘์—…์ด ๋™์‹œ์— ์ˆ˜ํ–‰๋  ๋•Œ ๋ฐ์ดํ„ฐ์˜ ์ผ๊ด€์„ฑ์„ ์œ ์ง€ํ•˜๊ณ , ์‹œ์Šคํ…œ ์žฅ์• ๊ฐ€ ๋ฐœ์ƒํ–ˆ์„ ๋•Œ ๋ฐ์ดํ„ฐ๋ฅผ ๋ณต๊ตฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

โœ”๏ธDatabase์— ์‚ฌ์šฉํ•˜๋Š” ์ฃผ์š” ๋ฐ์ดํ„ฐํƒ€์ž…์˜ ์ •๋ณด

๋ฐ์ดํ„ฐ ํƒ€์ž… ์„ค๋ช… ์˜ˆ์‹œ
CHAR(n) ๊ณ ์ • ๊ธธ์ด ๋ฌธ์ž์—ด (n: 1~255 generally) CHAR(10)
VARCHAR(n) ๊ฐ€๋ณ€ ๊ธธ์ด ๋ฌธ์ž์—ด (n: 1~์—ฌ๋Ÿฌ ์‹œ์Šคํ…œ์—์„œ ๋‹ค์–‘) VARCHAR(50)
DECIMAL(p, s) ์ •๋ฐ€ํ•œ ๊ณ ์ • ์†Œ์ˆ˜์  ์ˆซ์ž (p: ์ •๋ฐ€๋„, s: ์†Œ์ˆ˜์  ์ž๋ฆฟ์ˆ˜) DECIMAL(10, 2)
DATE ๋‚ ์งœ (์—ฐ, ์›”, ์ผ) DATE
TIMESTAMP ๋‚ ์งœ์™€ ์‹œ๊ฐ„ (๋ถ„ ๋‹จ์œ„ ๋˜๋Š” ๋‚˜๋…ธ์ดˆ ์ •๋ฐ€๋„๊นŒ์ง€) TIMESTAMP
BINARY LARGE OBJECT (BLOB) ํฐ ์ด์ง„ ๋ฐ์ดํ„ฐ (ํฌ๊ธฐ ์ œํ•œ์€ ์‹œ์Šคํ…œ์— ๋”ฐ๋ผ ๋‹ค๋ฆ„) BLOB
CHARACTER LARGE OBJECT (CLOB) ํฐ ํ…์ŠคํŠธ ๋ฐ์ดํ„ฐ (ํฌ๊ธฐ ์ œํ•œ์€ ์‹œ์Šคํ…œ์— ๋”ฐ๋ผ ๋‹ค๋ฆ„) CLOB

โ€‹

  • ๋ถ€๊ฐ€ ์„ค๋ช…

    CHAR(10) - 10๊ฐœ๊ฐ€ ๊ณ ์ •์ด๋ผ์„œ ๊ณ ์–‘์ด 3๊ฐœ๊ฐ€ ๋“ค์–ด๊ฐ€๋ฉด 7๊ฐœ๋Š” ๊ณต๋ฐฑ์œผ๋กœ ์ฑ„์›€.

    ๋ณดํ†ต VARCHAR(50) ๋งŽ์ด ์‚ฌ์šฉ, ๋ฌธ์ž 50๊ฐœ๊นŒ์ง€ ์‚ฌ์šฉ ๊ฐ€๋Šฅ, ๊ธธ์ด๊ฐ€ ๊ฐ€๋ณ€์ด๋ผ์„œ ๊ณ ์–‘์ด 3๊ฐœ ๋“ค์–ด๊ฐ€๋ฉด 3๊ฐœ์˜ ๊ธธ์ด๋งŒ ๊ฐ€์ง

    ๋ฌธ์ž์—ด์€ ๊ธธ์ด๊ฐ€ ์ผ์ •ํ•œ ๊ฒฝ์šฐ๊ฐ€ ๋งŽ์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์— VARCHAR ๋งŽ์ด ์‚ฌ์šฉ(๊ธธ์ด๋ฅผ ๋Š˜๋ ธ๋‹ค๊ฐ€ ์ค„์ด๋Š” ๋ˆˆ์— ์•ˆ ๋ณด์ด๋Š” ์—ญํ• ์„ ํ•˜๊ณ  ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ์„ฑ๋Šฅ ๋ฌธ์ œ๊ฐ€ ์žˆ์„ ์ˆ˜ ์žˆ์Œ

    ํ•ญ์ƒ ๋™์ผํ•œ ๋ฐ์ดํ„ฐ๊ฐ€ ๋“ค์–ด์˜ฌ ๋•Œ๋Š” CHAR๊ฐ€ ๋” ์ข‹์Œ

    = ๊ทธ ์˜ˆ๋กœ ํŠนํžˆ ํœด๋Œ€ํฐ ๋ฒˆํ˜ธ, ์ฃผ๋ฏผ๋“ฑ๋ก๋ฒˆํ˜ธ : ํ•ด์‹œํ•จ์ˆ˜ ์‚ฌ์šฉํ•ด์„œ ์•”ํ˜ธํ™”๋˜๋Š”๋ฐ ๊ธธ์ด๋Š” ๋™์ผํ•จ.

    ํ…์ŠคํŠธ ์ œ์™ธ ๋ชจ๋“  ๊ฒƒ์€ BINARY LARGE OBJECT๋กœ ํ…์ŠคํŠธ๋Š” CLOB๋กœ ์ €์žฅ.

    ์ •์ˆ˜๋Š” Int๋ž‘ long ๋Œ€์‹ ์— bigInt (tinyInt, smallInt ์žˆ๋Š”๋ฐ ๊ฑฐ์˜ ์‚ฌ์šฉํ•  ์ผ ์—†์Œ)

  • ORM

    ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์˜ ํ…Œ์ด๋ธ” ๊ฐ’์„ ๊ฐ์ฒด์ฒ˜๋Ÿผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด ORM

    : โ€˜ORM(Object Relational Mapping)โ€™์€ โ€˜๊ฐ์ฒด๋กœ ์—ฐ๊ฒฐ์„ ํ•ด์ค€๋‹คโ€™๋Š” ์˜๋ฏธ๋กœ, ์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜๊ณผ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์—ฐ๊ฒฐ ์‹œ SQL์–ธ์–ด๊ฐ€ ์•„๋‹Œ ์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜ ๊ฐœ๋ฐœ์–ธ์–ด๋กœ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋ฅผ ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•ด์ฃผ๋Š” ํˆด

    JPA - ์—”ํ„ฐํ‹ฐ๋ฅผ ๊ฐ์ฒด๋กœ ์‚ฌ์šฉํ•ด์„œ ์Šคํ”„๋ง์—์„œ ์‚ฌ์šฉ

    JPA(Java Persistence API)

    • Java ์ง„์˜์—์„œ ORM(Object-Relational Mapping) ๊ธฐ์ˆ  ํ‘œ์ค€์œผ๋กœ ์‚ฌ์šฉํ•˜๋Š” ์ธํ„ฐํŽ˜์ด์Šค ๋ชจ์Œ
    • ์ž๋ฐ” ์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜์—์„œ ๊ด€๊ณ„ํ˜• ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๋ฐฉ์‹์„ ์ •์˜ํ•œ ์ธํ„ฐํŽ˜์ด์Šค
    • ์ธํ„ฐํŽ˜์ด์Šค ์ด๊ธฐ ๋•Œ๋ฌธ์— Hibernate, OpenJPA ๋“ฑ์ด JPA๋ฅผ ๊ตฌํ˜„ํ•จ

    ํ˜„์žฌ ์žˆ๋Š” ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์— ์กด์žฌํ•˜๋Š” ๋ชจ๋“  ํ…Œ์ด๋ธ” ์ •๋ณด๋ฅผ ๋ณด๊ธฐ ์œ„ํ•œ ๋ช…๋ น์–ด : SHOW TABLES; Usersํ…Œ์ด๋ธ”์˜ ๊ตฌ์กฐ๋ฅผ ๋ณด๊ธฐ์œ„ํ•œ SQL ๋ช…๋ น์–ด : DSEC Users; (DSEC =DESCRIBE์˜ ์•ฝ์–ด)

SQL (Structured Query Language)

: ๊ด€๊ณ„ํ˜• ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๊ด€๋ฆฌ ์‹œ์Šคํ…œ(RDBMS)์—์„œ ๋ฐ์ดํ„ฐ๋ฅผ ์ •์˜, ์กฐ์ž‘, ์ œ์–ดํ•˜๊ธฐ ์œ„ํ•ด ์‚ฌ์šฉ๋˜๋Š” ํ‘œ์ค€ํ™”๋œ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด

๊ณ ์ˆ˜์ค€์–ธ์–ด(์ธ๊ฐ„์ด ์ดํ•ดํ•˜๊ธฐ ์‰ฌ์šด ์–ธ์–ด)๋ผ ํ•จ , โ†”์ €์ˆ˜์ค€์–ธ์–ด(์ปดํ“จํ„ฐ๊ฐ€ ์ดํ•ดํ•˜๊ธฐ ์‰ฌ์šด ์–ธ์–ด)

  1. โœจโœจDDL (Data Definition Language): ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์Šคํ‚ค๋งˆ๋ฅผ ์ƒ์„ฑ, ๋ณ€๊ฒฝ, ์‚ญ์ œํ•˜๊ธฐ ์œ„ํ•œ ๋ช…๋ น์–ด
    1. ๋ฐ์ดํ„ฐ ๋ฒ ์ด์Šค๋ฅผ ๋งŒ๋“ค๊ฑฐ๋‚˜ ์ง€์šฐ๊ฑฐ๋‚˜ ํ•˜๋Š” ์—ญํ• 
  2. โœจโœจDML (Data Manipulation Language): ๋ฐ์ดํ„ฐ๋ฅผ ๊ฒ€์ƒ‰, ์‚ฝ์ž…, ์ˆ˜์ •, ์‚ญ์ œํ•˜๊ธฐ ์œ„ํ•œ ๋ช…๋ น์–ด
    1. ์‹ค์ œ ๋ฐ์ดํ„ฐ๋ฅผ CRUDํ•  ๋•Œ ์‚ฌ์šฉ
  3. DCL (Data Control Language): ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์‚ฌ์šฉ์ž์˜ ๊ถŒํ•œ์„ ๊ด€๋ฆฌํ•˜๊ธฐ ์œ„ํ•œ ๋ช…๋ น์–ด๋“ค
  4. TCL (Transaction Control Language): ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ํŠธ๋žœ์žญ์…˜์„ ๊ด€๋ฆฌํ•˜๊ธฐ ์œ„ํ•œ ๋ช…๋ น์–ด ์Šคํ”„๋ง์—์„œ ํ•  ๊ฒƒ. transaction์ด ๋ญ”์ง€๋Š” ์•Œ์•„์•ผ ๋จ. - ACID ํŠน์ง•์„ ๊ฐ€์ง
    1. Transaction : ์—ฌ๋Ÿฌ๊ฐœ์˜ ์ž‘์—…์„ ํ•˜๋‚˜๋กœ ๋ฌถ์€ ์‹คํ–‰ ์œ ๋‹›, ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๊ด€์ ์—์„œ๋Š” ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์˜ ์ƒํƒœ๋ฅผ ๋ณ€ํ™˜์‹œํ‚ค๋Š” ๊ธฐ๋Šฅ์„ ์ˆ˜ํ–‰ํ•˜๊ธฐ ์œ„ํ•œ ํ•˜๋‚˜ ์ด์ƒ์˜ ์ฟผ๋ฆฌ๋ฅผ ๋ชจ์•„ ๋†“์€ ํ•˜๋‚˜์˜ ์ž‘์—… ๋‹จ์œ„
    2. ย ์งˆ์˜(query)๋ฅผ ํ•˜๋‚˜์˜ ๋ฌถ์Œ ์ฒ˜๋ฆฌํ•ด์„œ ์ค‘๊ฐ„์—ย ์‹คํ–‰์ดย ์ค‘๋‹จ๋์„ ๊ฒฝ์šฐ, ์ฒ˜์Œ๋ถ€ํ„ฐ ๋‹ค์‹œ ์‹คํ–‰ํ•˜๋Š”ย Rollback์„ ์ˆ˜ํ–‰ํ•˜๊ณ ,ย ์˜ค๋ฅ˜์—†์ด ์‹คํ–‰์„ ๋งˆ์น˜๋ฉดย commit์„ ํ•˜๋Š”ย ์‹คํ–‰ ๋‹จ์œ„๋ฅผ ์˜๋ฏธ
    3. ์ž์„ธํ•œ๊ฑด ์—ฌ๊ธฐ์„œ >[DB] ํŠธ๋žœ์žญ์…˜(Transaction)์— ๋Œ€ํ•ด์„œ ์•Œ์•„๋ณด์ž. (tistory.com)

SQL์˜ ๋Œ€ํ‘œ ๋ช…๋ น์–ด

์ข…๋ฅ˜ ์„ค๋ช… ๋Œ€ํ‘œ ๋ช…๋ น์–ด
DDL ๋ฐ์ดํ„ฐ ์ •์˜ ์–ธ์–ด CREATE, ALTER, DROP, RENAME, TRUNCATE
DML ๋ฐ์ดํ„ฐ ์กฐ์ž‘ ์–ธ์–ด SELECT, INSERT, UPDATE, DELETE
DCL ๋ฐ์ดํ„ฐ ์ œ์–ด ์–ธ์–ด GRANT, REVOKE
TCL ํŠธ๋žœ์žญ์…˜ ์ œ์–ด ์–ธ์–ด COMMIT, ROLLBACK, SAVEPOINT

๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ํ…Œ์ด๋ธ”์˜ ๊ฐœ๋…

  1. ํ–‰ : ๊ฐœ๋ณ„ ๋ ˆ์ฝ”๋“œ๋ฅผ ๋‚˜ํƒ€๋ƒ„, ํ•œ ํ–‰์˜ ํ…Œ์ด๋ธ”์€ ๋ชจ๋“  ์—ด์— ๋Œ€ํ•œ ๊ฐ’์„ ํฌํ•จ
  2. ์—ด : ํ…Œ์ด๋ธ”์—์„œ ํŠน์ • ์†์„ฑ์„ ๋‚˜ํƒ€๋ƒ„
  3. โœจ๊ธฐ๋ณธํ‚ค: ๊ณ ์œ ํ•œ ๊ฐ’์„ ๊ฐ€์ ธ์•ผ ํ•จ = ์ค‘๋ณต๋ถˆ๊ฐ€ = Null ๋ถˆ๊ฐ€ = UNIQUE
  4. โœจ์™ธ๋ž˜ํ‚ค: ๋‚ด๊ฐ€ ์ฐธ์กฐํ•˜๊ณ  ์žˆ๋Š” ํ…Œ์ด๋ธ”์˜ ๊ธฐ๋ณธ ํ‚ค๋ฅผ ๊ฐ€์ ธ์˜ด

SQL์—์„œ๋Š” MUL์ด ์™ธ๋ž˜ ํ‚ค, ๋‹ค๋ฅธ๊ณณ์—์„œ ์ฐธ๊ณ ํ•ด์„œ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค๋Š” ๋œป

DDL(Data Definition Language)

CREATE TABLE๋ฌธ

ํ…Œ์ด๋ธ” ์ด๋ฆ„ ์ƒ์„ฑ ๊ทœ์น™

  1. ์œ ํšจํ•œ ๋ฌธ์ž ์‚ฌ์šฉ: ํ…Œ์ด๋ธ” ์ด๋ฆ„์€ ์•ŒํŒŒ๋ฒณ, ์ˆซ์ž, ๋ฐ‘์ค„(_)๋กœ ๊ตฌ์„ฑ๋˜์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ํŠน์ˆ˜ ๋ฌธ์ž๋‚˜ ๊ณต๋ฐฑ์„ ์‚ฌ์šฉํ•˜์ง€ ์•Š๋Š” ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค.
  2. ์ฒซ ๊ธ€์ž: ํ…Œ์ด๋ธ” ์ด๋ฆ„์€ ์•ŒํŒŒ๋ฒณ ๋ฌธ์ž๋กœ ์‹œ์ž‘ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์ˆซ์ž๋‚˜ ๋ฐ‘์ค„๋กœ ์‹œ์ž‘ํ•˜๋Š” ์ด๋ฆ„์€ ํ”ผํ•˜์„ธ์š”.
  3. ๊ธธ์ด ์ œํ•œ: ์ผ๋ฐ˜์ ์œผ๋กœ 30์ž ์ด๋‚ด์˜ ๊ธธ์ด๋กœ ์ œํ•œ
  4. ์˜๋ฏธ ์žˆ๋Š” ์ด๋ฆ„ ์‚ฌ์šฉ: ์ถ•์•ฝ์–ดX
  5. ๋‹จ์ˆ˜/๋ณต์ˆ˜ํ˜• ์ผ๊ด€์„ฑ: ํ…Œ์ด๋ธ” ์ด๋ฆ„์— ๋‹จ์ˆ˜ํ˜• ๋˜๋Š” ๋ณต์ˆ˜ํ˜•์„ ์‚ฌ์šฉํ•  ๋•Œ ์ผ๊ด€์„ฑ์„ ์œ ์ง€
    1. ์—”ํ„ฐํ‹ฐ๋Š” ๋‹จ์ˆ˜
  6. ์˜ˆ์•ฝ์–ด ํ”ผํ•˜๊ธฐ: ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์‹œ์Šคํ…œ์—์„œ ์‚ฌ์šฉํ•˜๋Š” ์˜ˆ์•ฝ์–ด๋ฅผ ํ…Œ์ด๋ธ” ์ด๋ฆ„์œผ๋กœ ์‚ฌ์šฉํ•˜์ง€ ์•Š๋Š” ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค. ์˜ˆ์•ฝ์–ด๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด SQL ์ฟผ๋ฆฌ ์ž‘์„ฑ ์‹œ ํ˜ผ๋ž€์„ ์ดˆ๋ž˜ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

    ํ…Œ์ด๋ธ” ์ด๋ฆ„์„ ๋งŒ๋“ค ๋•Œ ์œ„์˜ ๊ทœ์น™๊ณผ ๊ถŒ์žฅ ์‚ฌํ•ญ์„ ๋”ฐ๋ฅด๋ฉด, ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๊ตฌ์กฐ๋ฅผ ๋ช…ํ™•ํ•˜๊ฒŒ ์ดํ•ดํ•˜๊ณ  ๊ด€๋ฆฌํ•˜๊ธฐ ์‰ฌ์›€,

    ํŒ€ ๋‚ด์—์„œ ์ผ๊ด€๋œ ๋ช…๋ช… ๊ทœ์น™์„ ์œ ์ง€ํ•˜๋Š” ๊ฒƒ์ด ์ค‘์š”

์ œ์•ฝ์กฐ๊ฑด (constraints)

  • ์†์„ฑ์— ์ œ์•ฝ์กฐ๊ฑด ๊ฑธ ์ˆ˜ ์žˆ์Œ.

    ์ œ์•ฝ์กฐ๊ฑด ์„ค๋ช… ์˜ˆ์‹œ
    PRIMARY KEY ํ…Œ์ด๋ธ”์˜ ๊ฐ ํ–‰์„ ์œ ์ผํ•˜๊ฒŒ ์‹๋ณ„ํ•˜๋Š” ์—ด ๋˜๋Š” ์—ด์˜ ์กฐํ•ฉ PRIMARY KEY (id)
    UNIQUE ์ง€์ •๋œ ์—ด์˜ ๋ชจ๋“  ๊ฐ’์ด ์„œ๋กœ ๋‹ค๋ฅด๊ฒŒ ์œ ์ง€๋˜์–ด์•ผ ํ•จ์„ ๋ณด์žฅ UNIQUE (email)
    FOREIGN KEY ํ•˜๋‚˜์˜ ํ…Œ์ด๋ธ”์— ์žˆ๋Š” ์—ด์ด ๋‹ค๋ฅธ ํ…Œ์ด๋ธ”์˜ PRIMARY KEY๋ฅผ ์ฐธ์กฐํ•จ์œผ๋กœ์จ ์™ธ๋ž˜ ํ‚ค ๊ด€๊ณ„ ์„ค์ • FOREIGN KEY (department_id)
    REFERENCES ย  ย 
    departments(department_id) ย  ย 
    NOT NULL ์—ด์˜ ๊ฐ’์ด ์ ˆ๋Œ€ NULL์ด ์•„๋‹ˆ์–ด์•ผ ํ•จ ย 
    ์ ˆ๋Œ€ ๋น„์–ด์žˆ์œผ๋ฉด ์•ˆ๋จ. NOT NULL ย 
  • ์˜ˆ์‹œ> ํ…Œ์ด๋ธ” ์ƒ์„ฑ

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    
      CREATE TABLE Users (
          user_id INT AUTO_INCREMENT PRIMARY KEY,
          username VARCHAR(255) NOT NULL,
          email VARCHAR(255) NOT NULL UNIQUE
      );
        
      -- ์ถœํŒ์‚ฌ ํ…Œ์ด๋ธ”
      CREATE TABLE Publishers (
          publisher_id INT AUTO_INCREMENT PRIMARY KEY,
          name VARCHAR(255) NOT NULL,
          address TEXT
      );
        
      -- ๋„์„œ ํ…Œ์ด๋ธ”
      CREATE TABLE Books (
          book_id INT AUTO_INCREMENT PRIMARY KEY,
          title VARCHAR(255) NOT NULL,
          publication_date DATE,
          publisher_id INT,
          FOREIGN KEY (publisher_id) REFERENCES Publishers(publisher_id)
      );
        
      -- ์ €์ž ํ…Œ์ด๋ธ”
      CREATE TABLE Authors (
          author_id INT AUTO_INCREMENT PRIMARY KEY,
          name VARCHAR(255) NOT NULL
      );
        
      -- ๋Œ€์ถœ ๊ธฐ๋ก ํ…Œ์ด๋ธ”
      CREATE TABLE LoanRecords (
          record_id INT AUTO_INCREMENT PRIMARY KEY,
          book_id INT,
          user_id INT,
          loan_date DATE,
          return_date DATE,
          FOREIGN KEY (book_id) REFERENCES Books(book_id),
          FOREIGN KEY (user_id) REFERENCES Users(user_id)
      );
        
      -- ๋„์„œ์™€ ์ €์ž์˜ ๋‹ค๋Œ€๋‹ค ๊ด€๊ณ„๋ฅผ ์œ„ํ•œ ํ…Œ์ด๋ธ”
      CREATE TABLE Book_Authors (
          book_id INT,
          author_id INT,
          PRIMARY KEY (book_id, author_id),
          FOREIGN KEY (book_id) REFERENCES Books(book_id),
          FOREIGN KEY (author_id) REFERENCES Authors(author_id)
      );
    

ON DELETE ์˜ต์…˜ : Cascading/Restrict/Set Null

On Delete ์˜ต์…˜์„ ์ ์ ˆํ•˜๊ฒŒ ์‚ฌ์šฉํ•˜๋ฉด ๋ฐ์ดํ„ฐ์˜ ๋ฌด๊ฒฐ์„ฑ(Integrity)์„ ๋ณด์žฅ

  1. Cascading :์ฐธ์กฐํ‚ค์˜ ๊ธฐ๋ณธํ‚ค๋ฅผ ์ง€์šฐ๋ฉด ์ฐธ์กฐํ•˜๊ณ  ์žˆ๋Š” ๋‹ค๋ฅธ ์—”ํ„ฐํ‹ฐ์˜ ์™ธ๋ž˜ ํ‚ค๋ฅผ ๋‹ค ์ง€์šฐ๋Š” ๊ฒƒ

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    
     -- ์ถœํŒ์‚ฌ ํ…Œ์ด๋ธ”
     CREATE TABLE Publishers (
         publisher_id INT AUTO_INCREMENT PRIMARY KEY,
         name VARCHAR(255) NOT NULL,
         address TEXT
     );
        
     -- ๋„์„œ ํ…Œ์ด๋ธ”
     CREATE TABLE Books (
         book_id INT AUTO_INCREMENT PRIMARY KEY,
         title VARCHAR(255) NOT NULL,
         publication_date DATE,
         publisher_id INT,
         FOREIGN KEY (publisher_id) REFERENCES Publishers(publisher_id) **ON DELETE CASCADE**
     );
    
    1. ์œ„ ์˜ˆ์‹œ ์ฝ”๋“œ์—์„œ publisher_id ์ปฌ๋Ÿผ์€ Publishers ํ…Œ์ด๋ธ”์˜ publisher_id ์ปฌ๋Ÿผ์„ ์ฐธ์กฐํ•˜๋Š” ์™ธ๋ž˜ ํ‚ค(Foreign Key)
    2. ON DELETE CASCADE ์˜ต์…˜์ด ์„ค์ •๋˜์–ด ์žˆ์œผ๋ฏ€๋กœ Publishers ํ…Œ์ด๋ธ”์˜ ๋ ˆ์ฝ”๋“œ๊ฐ€ ์‚ญ์ œ๋  ๋•Œ ํ•ด๋‹น publisher_id๋ฅผ ์ฐธ์กฐํ•˜๋Š” Books ํ…Œ์ด๋ธ”์˜ ๋ ˆ์ฝ”๋“œ๋„ ํ•จ๊ป˜ ์‚ญ์ œ
  2. Restrict : ์ฐธ์กฐ๋œ ๋ ˆ์ฝ”๋“œ๊ฐ€ ์‚ญ์ œ๋  ๋•Œ ํ•ด๋‹น ๋ ˆ์ฝ”๋“œ๋ฅผ ์ฐธ์กฐํ•˜๋Š” ๋‹ค๋ฅธ ๋ ˆ์ฝ”๋“œ๋ฅผ ์‚ญ์ œํ•˜์ง€ ์•Š์Œ

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    
     -- ์ถœํŒ์‚ฌ ํ…Œ์ด๋ธ”
     CREATE TABLE Publishers (
         publisher_id INT AUTO_INCREMENT PRIMARY KEY,
         name VARCHAR(255) NOT NULL,
         address TEXT
     );
        
     -- ๋„์„œ ํ…Œ์ด๋ธ”
     CREATE TABLE Books (
         book_id INT AUTO_INCREMENT PRIMARY KEY,
         title VARCHAR(255) NOT NULL,
         publication_date DATE,
         publisher_id INT,
         FOREIGN KEY (publisher_id) REFERENCES Publishers(publisher_id) **ON DELETE RESTRICT**
     );
    
  3. Set Null : ์ฐธ์กฐ๋œ ๋ ˆ์ฝ”๋“œ๊ฐ€ ์‚ญ์ œ๋  ๋•Œ ํ•ด๋‹น ๋ ˆ์ฝ”๋“œ๋ฅผ ์ฐธ์กฐํ•˜๋Š” ๋‹ค๋ฅธ ๋ ˆ์ฝ”๋“œ์˜ ์ปฌ๋Ÿผ ๊ฐ’์„ Null๋กœ ์„ค์ •

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    
     -- ์ถœํŒ์‚ฌ ํ…Œ์ด๋ธ”
     CREATE TABLE Publishers (
         publisher_id INT AUTO_INCREMENT PRIMARY KEY,
         name VARCHAR(255) NOT NULL,
         address TEXT
     );
        
     -- ๋„์„œ ํ…Œ์ด๋ธ”
     CREATE TABLE Books (
         book_id INT AUTO_INCREMENT PRIMARY KEY,
         title VARCHAR(255) NOT NULL,
         publication_date DATE,
         publisher_id INT NULL, -- publisher_id ์นผ๋Ÿผ์ด NULL์„ ํ—ˆ์šฉํ•˜๋„๋ก ์„ค์ •
         FOREIGN KEY (publisher_id) REFERENCES Publishers(publisher_id) **ON DELETE SET NULL
     );**
    

cascade ์˜ˆ์ œ ํ’€์–ด๋ณด๊ธฐ

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
-- ์ถœํŒ์‚ฌ ํ…Œ์ด๋ธ”
CREATE TABLE Publishers (
    publisher_id INT AUTO_INCREMENT PRIMARY KEY,
    name VARCHAR(255) NOT NULL,
    address TEXT
);

-- ๋„์„œ ํ…Œ์ด๋ธ”
	CREATE TABLE Books (
	    book_id INT AUTO_INCREMENT PRIMARY KEY,
	    title VARCHAR(255) NOT NULL,
	    publication_date DATE,
	    publisher_id INT,
	    FOREIGN KEY (publisher_id) REFERENCES Publishers(publisher_id) ON DELETE CASCADE
	);
	
INSERT INTO Publishers (name, address) VALUES ('Alpha Publishing', '123 Alpha St, New York, NY');
INSERT INTO Publishers (name, address) VALUES ('Beta Books', '234 Beta Rd, San Francisco, CA');
INSERT INTO Publishers (name, address) VALUES ('Gamma Press', '345 Gamma Blvd, Chicago, IL');
INSERT INTO Publishers (name, address) VALUES ('Delta Media', '456 Delta Ave, Los Angeles, CA');
INSERT INTO Publishers (name, address) VALUES ('Epsilon Publications', '567 Epsilon Way, Houston, TX');
INSERT INTO Publishers (name, address) VALUES ('Zeta Publishing House', '678 Zeta St, Phoenix, AZ');
INSERT INTO Publishers (name, address) VALUES ('Eta Publishing Group', '789 Eta Rd, Philadelphia, PA');
INSERT INTO Publishers (name, address) VALUES ('Theta Books', '890 Theta Blvd, San Antonio, TX');
INSERT INTO Publishers (name, address) VALUES ('Iota Press', '901 Iota Ave, San Diego, CA');
INSERT INTO Publishers (name, address) VALUES ('Kappa Media', '101 Kappa Way, Dallas, TX');

INSERT INTO Books (title, publication_date, publisher_id) VALUES ('Introduction to AI', '2022-01-15', 1);
INSERT INTO Books (title, publication_date, publisher_id) VALUES ('Advanced SQL', '2022-02-20', 2);
INSERT INTO Books (title, publication_date, publisher_id) VALUES ('Learning Python', '2023-03-25', 3);
INSERT INTO Books (title, publication_date, publisher_id) VALUES ('Web Development', '2021-04-30', 4);
INSERT INTO Books (title, publication_date, publisher_id) VALUES ('Cloud Computing Basics', '2023-05-05', 5);
INSERT INTO Books (title, publication_date, publisher_id) VALUES ('Data Structures', '2021-06-10', 6);
INSERT INTO Books (title, publication_date, publisher_id) VALUES ('Operating Systems', '2022-07-15', 7);
INSERT INTO Books (title, publication_date, publisher_id) VALUES ('Network Security', '2021-08-20', 8);
INSERT INTO Books (title, publication_date, publisher_id) VALUES ('Mobile App Development', '2022-09-25', 9);
INSERT INTO Books (title, publication_date, publisher_id) VALUES ('Machine Learning for Beginners', '2023-10-30', 10);
  • ์ฟผ๋ฆฌ๋ฌธ์€ ์ˆœ์„œ๊ฐ€ ๋ฌด์กฐ๊ฑด ์ค‘์š” !!!
  • ์œ„๋ถ€ํ„ฐ ์‹คํ–‰ํ•˜๋Š”๋ฐ ํ…Œ์ด๋ธ”์„ ๋จผ์ € ๋งŒ๋“ค๊ณ  ๋ฐ์ดํ„ฐ๋ฅผ ๋„ฃ์–ด์•ผ ํ•˜๋ฉฐ
  • Book์ด publisher๋ฅผ ์ฐธ์กฐํ•˜๊ณ  ์žˆ์œผ๋ฏ€๋กœ book์„ ๊ฐ€์žฅ ๋จผ์ € ๋งŒ๋“ค์–ด์•ผ ํ•จ.
  • casacade๋Š” ์ถœํŒ์‚ฌ ๋ฐ์ดํ„ฐ์—์„œ 10๋ฒˆ์„ ์ง€์šธ ๊ฒฝ์šฐ book์ด ์ฐธ์กฐํ•˜๊ณ  ์žˆ๋Š” 10๋ฒˆ์˜ ๋ฐ์ดํ„ฐ๋„ ์ง€์›Œ์ง.

  • 10๋ฒˆ ํด๋ฆญ, ๋งˆ์šฐ์Šค์˜ค๋ฅธ์ชฝ- Edit - ๋กœ์šฐ ์‚ญ์ œ๋ฅผ ๋ˆŒ๋Ÿฌ 10๋ฒˆ์„ ์‚ญ์ œ ํ›„ ์•„๋ž˜ Save ๋ฒ„ํŠผ ๋ˆŒ๋Ÿฌ์ค€๋‹ค. (๊ทธ๋ƒฅ Deleteํ•˜๊ณ  SAVE ๋ˆŒ๋Ÿฌ๋„ ๋จ)

  • ์ƒˆ๋กœ๊ณ ์นจ ๋ˆ„๋ฅด๋ฉด books์™€ publishers ๋ชจ๋‘ 10๋ฒˆ์ด ์‚ญ์ œ๋˜์–ด ์žˆ์Œ

ALTER๋ฌธ: ALTER TABLE/ALTER INDEX

  • ๊ธฐ์กด์˜ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๊ฐ์ฒด๋ฅผ ์ˆ˜์ •ํ•˜๋Š”๋ฐ ์‚ฌ์šฉ
  • ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์˜ ๊ตฌ์กฐ๋ฅผ ์œ ์ง€ํ•˜๋ฉด์„œ ์—…๋ฐ์ดํŠธ ๋ฐ ์ˆ˜์ • ๊ฐ€๋Šฅ
  • ALTER ๋ฌธ์„ ์‚ฌ์šฉํ•˜์—ฌ ํ…Œ์ด๋ธ”, ์ธ๋ฑ์Šค, ์‹œํ€€์Šค, ๋ทฐ ๋“ฑ์˜ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๊ฐ์ฒด๋ฅผ ๋ณ€๊ฒฝ๊ฐ€๋Šฅ
  • ALTER ๋ฌธ์˜ ์ฃผ์š” ์‚ฌ์šฉ ์‚ฌ๋ก€
    • ํ…Œ์ด๋ธ”์— ์—ด ์ถ”๊ฐ€, ์ˆ˜์ •, ์‚ญ์ œํ•˜๊ธฐ
    • ์ œ์•ฝ ์กฐ๊ฑด ์ถ”๊ฐ€, ์ˆ˜์ •, ์‚ญ์ œํ•˜๊ธฐ
    • ์ธ๋ฑ์Šค ์ƒํƒœ ๋ณ€๊ฒฝํ•˜๊ธฐ (ํ™œ์„ฑํ™” ๋˜๋Š” ๋น„ํ™œ์„ฑํ™”)
    • ์‹œํ€€์Šค์˜ ์‹œ์ž‘๊ฐ’, ์ฆ๊ฐ€๊ฐ’, ์ตœ๋Œ€๊ฐ’ ๋“ฑ ๋ณ€๊ฒฝํ•˜๊ธฐ
    • ๋ทฐ ์ •์˜ ๋ณ€๊ฒฝํ•˜๊ธฐ
      1. ALTER TABLE - ๊ธฐ์กด ํ…Œ์ด๋ธ” ์ˆ˜์ • : ์—ด ์ถ”๊ฐ€ , ์—ด ์‚ญ์ œ, ์—ด ๋ฐ์ดํ„ฐ ํƒ€์ž… ๋ณ€๊ฒฝ, ์ œ์•ฝ์กฐ๊ฑด์„ ์ถ”๊ฐ€/์‚ญ์ œ/์ˆ˜์ • ๋“ฑ
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    
      -- ์—ด ์ถ”๊ฐ€
      ALTER TABLE Users ADD phone_number VARCHAR(20) NOT NULL;
        
      -- ์—ด ์‚ญ์ œ
      ALTER TABLE Books DROP COLUMN publication_date;
        
      -- ๋ฐ์ดํ„ฐ ํƒ€์ž… ๋ณ€๊ฒฝ
      ALTER TABLE Authors
      MODIFY name TEXT NOT NULL;
        
      -- ์ œ์•ฝ ์กฐ๊ฑด ์ถ”๊ฐ€
      ALTER TABLE Users
      **ADD CONSTRAINT** unique_username UNIQUE (username);
      //์ œ์•ฝ์กฐ๊ฑด(unique) ์ถ”๊ฐ€ 
        
      ALTER TABLE Users **DROP CONSTRAINT** unique_username;
      //์ œ์•ฝ์กฐ๊ฑด(unique) ์‚ญ์ œ
        
      -- ์ œ์•ฝ ์กฐ๊ฑด ์‚ญ์ œ
      ALTER TABLE Books
      DROP FOREIGN KEY fk_publisher_id;
    
  1. ALTER INDEX - ๊ธฐ์กด ์ธ๋ฑ์Šค ์ˆ˜์ •

    1
    2
    3
    4
    5
    6
    7
    8
    9
    
        
     -- ์ธ๋ฑ์Šค ๋น„ํ™œ์„ฑํ™”
     ALTER TABLE Books
     DISABLE INDEX idx_title;
        
     -- ์ธ๋ฑ์Šค ํ™œ์„ฑํ™”
     ALTER TABLE Books
     ENABLE INDEX idx_title;
        
    

DROP TABLE, TRUNCATE TABLE, RENAME

  1. DROP TABLE : ํ…Œ์ด๋ธ”์„ ์™„์ „ํžˆ ์‚ญ์ œํ•˜๋Š” ๋ฐ ์‚ฌ์šฉ

    1
    
     DROP TABLE Books;
    
  2. RENAME : ํ…Œ์ด๋ธ”์˜ ์ด๋ฆ„์„ ๋ณ€๊ฒฝ, ํ…Œ์ด๋ธ”์˜ ๊ตฌ์กฐ๋‚˜ ๋ฐ์ดํ„ฐ์— ์˜ํ–ฅ์„ ์ฃผ์ง€ ์•Š๋Š”๋‹ค.

    1
    
     RENAME Table Books TO Book;
    

    ํ•œ๋ฒˆ์— ๋ฐ”๊ฟ€ ์ˆ˜ ์žˆ์Œ.

  3. TRUNCATE TABLE : ๋ชจ๋“  ๋ฐ์ดํ„ฐ๋ฅผ ๋น ๋ฅด๊ฒŒ ์‚ญ์ œ, ํ…Œ์ด๋ธ”์˜ ๊ตฌ์กฐ, ์ธ๋ฑ์Šค, ์ œ์•ฝ ์กฐ๊ฑด ๋“ฑ์€ ๊ทธ๋Œ€๋กœ ์œ ์ง€

    1
    
     TRUNCATE TABLE Books;
    
    • ์ณ๋ณด๊ธฐ~!

      1
      2
      3
      4
      5
      6
      7
      8
      9
      10
      11
      12
      13
      14
      15
      16
      17
      18
      19
      20
      21
      22
      23
      24
      25
      26
      27
      28
      29
      30
      31
      32
      33
      34
      35
      36
      37
      38
      39
      40
      
         ์ถœํŒ์‚ฌ ํ…Œ์ด๋ธ”
        CREATE TABLE Publishers (
            publisher_id INT AUTO_INCREMENT PRIMARY KEY,
            name VARCHAR(255) NOT NULL,
            address TEXT
        );
              
        -- ๋„์„œ ํ…Œ์ด๋ธ”
        	CREATE TABLE Books (
        	    book_id INT AUTO_INCREMENT PRIMARY KEY,
        	    title VARCHAR(255) NOT NULL,
        	    publication_date DATE,
        	    publisher_id INT,
        	    FOREIGN KEY (publisher_id) REFERENCES Publishers(publisher_id)
        	);
              	
        INSERT INTO Publishers (name, address) VALUES ('Alpha Publishing', '123 Alpha St, New York, NY');
        INSERT INTO Publishers (name, address) VALUES ('Beta Books', '234 Beta Rd, San Francisco, CA');
        INSERT INTO Publishers (name, address) VALUES ('Gamma Press', '345 Gamma Blvd, Chicago, IL');
        INSERT INTO Publishers (name, address) VALUES ('Delta Media', '456 Delta Ave, Los Angeles, CA');
        INSERT INTO Publishers (name, address) VALUES ('Epsilon Publications', '567 Epsilon Way, Houston, TX');
        INSERT INTO Publishers (name, address) VALUES ('Zeta Publishing House', '678 Zeta St, Phoenix, AZ');
        INSERT INTO Publishers (name, address) VALUES ('Eta Publishing Group', '789 Eta Rd, Philadelphia, PA');
        INSERT INTO Publishers (name, address) VALUES ('Theta Books', '890 Theta Blvd, San Antonio, TX');
        INSERT INTO Publishers (name, address) VALUES ('Iota Press', '901 Iota Ave, San Diego, CA');
        INSERT INTO Publishers (name, address) VALUES ('Kappa Media', '101 Kappa Way, Dallas, TX');
              
        INSERT INTO Books (title, publication_date, publisher_id) VALUES ('Introduction to AI', '2022-01-15', 1);
        INSERT INTO Books (title, publication_date, publisher_id) VALUES ('Advanced SQL', '2022-02-20', 2);
        INSERT INTO Books (title, publication_date, publisher_id) VALUES ('Learning Python', '2023-03-25', 3);
        INSERT INTO Books (title, publication_date, publisher_id) VALUES ('Web Development', '2021-04-30', 4);
        INSERT INTO Books (title, publication_date, publisher_id) VALUES ('Cloud Computing Basics', '2023-05-05', 5);
        INSERT INTO Books (title, publication_date, publisher_id) VALUES ('Data Structures', '2021-06-10', 6);
        INSERT INTO Books (title, publication_date, publisher_id) VALUES ('Operating Systems', '2022-07-15', 7);
        INSERT INTO Books (title, publication_date, publisher_id) VALUES ('Network Security', '2021-08-20', 8);
        INSERT INTO Books (title, publication_date, publisher_id) VALUES ('Mobile App Development', '2022-09-25', 9);
        INSERT INTO Books (title, publication_date, publisher_id) VALUES ('Machine Learning for Beginners', '2023-10-30', 10);
              
        //์ƒ๊ธฐ ์ฝ”๋“œ ๋ชจ๋‘ ์ž‘์„ฑ ํ›„ ๋”ฐ๋กœ ์‹คํ–‰
        TRUNCATE TABLE Books;
      
  4. DROP TABLE๊ณผ TRUNCATE TABLE์˜ ์ฐจ์ด์ 

    • ๋ณต๊ตฌ ๊ฐ€๋Šฅ์„ฑ: DROP TABLE์€ ํ…Œ์ด๋ธ” ์ž์ฒด๋ฅผ ์‚ญ์ œํ•˜๋ฏ€๋กœ ๋ณต๊ตฌํ•  ์ˆ˜ ์—†์Œ.

      TRUNCATE TABLE์€ ํ…Œ์ด๋ธ”์˜ ๋ฐ์ดํ„ฐ๋งŒ ์‚ญ์ œํ•˜๋ฏ€๋กœ ํ…Œ์ด๋ธ” ๊ตฌ์กฐ๋Š” ๋ณต๊ตฌ ๊ฐ€๋Šฅ

    • ์˜ํ–ฅ ๋ฐ›๋Š” ๊ฐ์ฒด: DROP TABLE์€ ํ…Œ์ด๋ธ”๊ณผ ๊ด€๋ จ๋œ ์ธ๋ฑ์Šค, ์ œ์•ฝ ์กฐ๊ฑด, ํŠธ๋ฆฌ๊ฑฐ, ๊ถŒํ•œ ๋“ฑ ๋ชจ๋“  ๊ฐ์ฒด๋ฅผ ์‚ญ์ œํ•ฉ๋‹ˆ๋‹ค. TRUNCATE TABLE์€ ์˜ค์ง ๋ฐ์ดํ„ฐ๋งŒ ์‚ญ์ œํ•˜๊ณ , ๋‹ค๋ฅธ ๊ฐ์ฒด๋Š” ๊ทธ๋Œ€๋กœ ๋‘ก๋‹ˆ๋‹ค.
    • ์†๋„: TRUNCATE TABLE์€ ํ…Œ์ด๋ธ”์˜ ๋ชจ๋“  ๋ฐ์ดํ„ฐ๋ฅผ ๋น ๋ฅด๊ฒŒ ์‚ญ์ œํ•˜๋Š” ๋ฐ ๋ฐ˜ํ•ด, DROP TABLE์€ ํ…Œ์ด๋ธ” ์ž์ฒด๋ฅผ ์‚ญ์ œํ•˜๋ฏ€๋กœ ์‹œ๊ฐ„์ด ๋‹ค์†Œ ๊ฑธ๋ฆด ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
    • ํŠธ๋žœ์žญ์…˜ ๋ฐ ๋กค๋ฐฑ: TRUNCATE TABLE์€ ํŠธ๋žœ์žญ์…˜์„ ์‚ฌ์šฉํ•˜์ง€ ์•Š์œผ๋ฉฐ ๋กค๋ฐฑ์ด ๋ถˆ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค. ๋ฐ˜๋ฉด, DROP TABLE์€ ํŠธ๋žœ์žญ์…˜์„ ์‚ฌ์šฉํ•˜๋ฉฐ ๋กค๋ฐฑ์ด ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค(๋‹จ, ์˜ค๋ผํด์—์„œ๋Š” ๋กค๋ฐฑ์ด ๋ถˆ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค).
    • ์šฉ๋„: DROP TABLE์€ ํ…Œ์ด๋ธ”์„ ์™„์ „ํžˆ ์ œ๊ฑฐํ•  ๋•Œ ์‚ฌ์šฉ๋˜๋ฉฐ, TRUNCATE TABLE์€ ํ…Œ์ด๋ธ”์˜ ๋ฐ์ดํ„ฐ๋งŒ ๋น ๋ฅด๊ฒŒ ์‚ญ์ œํ•˜๋ ค๋Š” ๊ฒฝ์šฐ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค.

DML(Data Manipulation Language):

๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๋‚ด์˜ ๋ฐ์ดํ„ฐ๋ฅผ ์กฐ์ž‘ํ•˜๋Š” ๋ฐ ์‚ฌ์šฉ๋˜๋Š” SQL ๊ตฌ๋ฌธ์˜ ํ•œ ๋ถ€๋ถ„

DML์˜ ์ฃผ์š”๊ตฌ๋ฌธ SELECT, INSERT, UPDATE, DELETE

SELECT

  • ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์—์„œ ๋ฐ์ดํ„ฐ๋ฅผ ์กฐํšŒ(๊ฒ€์ƒ‰)ํ•˜๋Š” ๋ฐ ์‚ฌ์šฉ

  • ํŠน์ • ํ…Œ์ด๋ธ”์—์„œ ์›ํ•˜๋Š” ์—ด(column)๊ณผ ํ–‰(row)์„ ์„ ํƒํ•˜์—ฌ ๊ฒฐ๊ณผ๋ฅผ ๋ฐ˜ํ™˜

    1
    2
    3
    4
    5
    6
    7
    8
    9
    
      SELECT username, email FROM Users;
        
      --๋ชจ๋“  ์ €์ž์˜ ์ด๋ฆ„ ์ถœ๋ ฅ:
        
      SELECT name FROM Authors;
        
      --๋ชจ๋“  ๋Œ€์ถœ ๊ธฐ๋ก์˜ ๋Œ€์ถœ ๋‚ ์งœ์™€ ๋ฐ˜๋‚ฉ ์˜ˆ์ • ๋‚ ์งœ ์ถœ๋ ฅ
        
      SELECT loan_date, return_date FROM LoanRecords;
    

๊ธฐ๋ณธ ์‚ฌ์šฉ๋ฒ•๊ณผ DISTINCT, ๋ฌธ์ž์—ด ์—ฐ๊ฒฐ ์—ฐ์‚ฐ์ž ||, ๊ทธ๋ฆฌ๊ณ  ๋ณ„์นญ(alias) ์ง€์ •

  1. ๊ธฐ๋ณธ ์‚ฌ์šฉ๋ฒ•

    1
    
     SELECT column_name1, column_name2, ... FROM table_name;
    
  2. DISTINCT
    1. DISTINCT ํ‚ค์›Œ๋“œ๋Š” ์ค‘๋ณต๋œ ๊ฐ’์„ ์ œ๊ฑฐํ•˜๊ณ  ๊ณ ์œ ํ•œ ๊ฐ’๋งŒ ์กฐํšŒํ•˜๋ ค๋Š” ๊ฒฝ์šฐ
    1
    2
    3
    4
    
     SELECT DISTINCT column_name FROM table_name;
        
     //์˜ˆ๋ฅผ ๋“ค์–ด **Authors**ํ…Œ์ด๋ธ”์—์„œ ๊ณ ์œ ํ•œ ๊ฐ’๋งŒ ์กฐํšŒ
     //SELECT DISTINCT name FROM Authors;
    
  3. ๋ฌธ์ž์—ด ์—ฐ๊ฒฐ ์—ฐ์‚ฐ์ž ||: || ์—ฐ์‚ฐ์ž๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋ฌธ์ž์—ด์„ ์—ฐ๊ฒฐ

    1
    2
    3
    
        
     SELECT column_name1 || ' ' || column_name2 AS new_column_name FROM table_name;
        
    
  4. ๋ณ„์นญ์ง€์ •(alias)
    1. SELECT ๋ฌธ์—์„œ ๋ณ„์นญ(alias)์„ ์‚ฌ์šฉํ•˜๋ฉด ์—ด ์ด๋ฆ„์ด๋‚˜ ํ‘œํ˜„์‹์— ๋‹ค๋ฅธ ์ด๋ฆ„์„ ์ง€์ •๊ฐ€๋Šฅ

      1
      2
      
              
       SELECT column_name AS alias_name FROM table_name;
      
    2. Users ํ…Œ์ด๋ธ”์—์„œ username ์—ด์„ ์ด๋ฆ„์ด๋ผ๋Š” ๋ณ„์นญ์œผ๋กœ ์กฐํšŒํ•˜๋ ค๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์ž‘์„ฑ

      1
      2
      3
      4
      
              
       SELECT username AS ์ด๋ฆ„ FROM Users;
              
       SELECT username AS un FROM Users;
      

INSERT

๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์— ์ƒˆ๋กœ์šด ๋ฐ์ดํ„ฐ๋ฅผ ์ถ”๊ฐ€ํ•˜๋Š” ๋ฐ ์‚ฌ์šฉ

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
--์‚ฌ์šฉ์ž ํ…Œ์ด๋ธ”์— ์ƒˆ๋กœ์šด ์‚ฌ์šฉ์ž ์ถ”๊ฐ€:

INSERT INTO Users (username, email)
VALUES ('alice', 'alice@example.com');

--์ถœํŒ์‚ฌ ํ…Œ์ด๋ธ”์— ์ƒˆ๋กœ์šด ์ถœํŒ์‚ฌ ์ถ”๊ฐ€:
INSERT INTO Publishers (name, address)
VALUES ('ABC Publishing', '123 Main Street');

--๋„์„œ ํ…Œ์ด๋ธ”์— ์ƒˆ๋กœ์šด ๋„์„œ ์ถ”๊ฐ€:
INSERT INTO Books (title, publication_date, publisher_id)
VALUES ('The Book Thief', '2005-11-01', 1);

--์ €์ž ํ…Œ์ด๋ธ”์— ์ƒˆ๋กœ์šด ์ €์ž ์ถ”๊ฐ€:

INSERT INTO Authors (name)
VALUES ('Markus Zusak');

ํŠน์ • ํ…Œ์ด๋ธ”์˜ ํ–‰(row)์— ๊ฐ’์„ ์ง€์ •ํ•˜์—ฌ ์‚ฝ์ž… ๊ฐ€๋Šฅ- ๋‹จ์ผ ํ–‰ ์‚ฝ์ž… ๋ฐ ๋‹ค์ค‘ ํ–‰ ์‚ฝ์ž….

  1. ๋‹จ์ผ ํ–‰ ์‚ฝ์ž…

    1
    2
    3
    4
    5
    6
    
     INSERT INTO table_name (column1, column2, column3, ...)
     VALUES (value1, value2, value3, ...);
        
     //**able_name**์€ ๋ฐ์ดํ„ฐ๋ฅผ ์‚ฝ์ž…ํ•˜๋ ค๋Š” ํ…Œ์ด๋ธ”์˜ ์ด๋ฆ„์ด๊ณ , 
     //**column1, column2, column3, ...**์€ ๊ฐ’์„ ์‚ฝ์ž…ํ•˜๋ ค๋Š” ํ…Œ์ด๋ธ”์˜ ์—ด(column) 
     //**value1, value2, value3, ...**์€ ํ•ด๋‹น ์—ด์— ์‚ฝ์ž…ํ•  ๊ฐ’
    

    ์˜ˆ์‹œ

    1
    2
    3
    
     --๋„์„œ ํ…Œ์ด๋ธ”์— ์ƒˆ๋กœ์šด ๋„์„œ ์ถ”๊ฐ€:
     INSERT INTO Books (title, publication_date, publisher_id)
     VALUES ('The Book Thief', '2005-11-01', 1);
    
  2. ๋‹ค์ค‘ ํ–‰ ์‚ฝ์ž…
    1. ํ•œ ๋ฒˆ์— ์—ฌ๋Ÿฌ ํ–‰์„ ํ…Œ์ด๋ธ”์— ์‚ฝ์ž…
    2. ํ…Œ์ด๋ธ”์— ๋Œ€๋Ÿ‰์˜ ๋ฐ์ดํ„ฐ๋ฅผ ์‚ฝ์ž…ํ•  ๋•Œ ํšจ์œจ์ ์ž…๋‹ˆ๋‹ค.
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    
     INSERT INTO Users (username, email)
     VALUES ('kimlucky', 'kimlucky@example.com'),
            ('vanilla', 'vanilla@example.com'),
            ('kimlatte', 'kimlatte@example.com');
        
     INSERT INTO Publishers (name, address)
     VALUES ('ABC Publishing', '123 Main Street'),
            ('DEF Press', '456 Elm Street');
        
     INSERT INTO Books (title, publication_date, publisher_id)
     VALUES ('The Book Thief', '2005-11-01', 1),
            ('Pride and Prejudice', '1813-01-28', 2);
        
     INSERT INTO Authors (name)
     VALUES ('Markus Zusak'),
            ('Jane Austen');
        
     INSERT INTO LoanRecords (book_id, user_id, loan_date)
     VALUES (1, 1, '2024-04-30'),
            (2, 2, '2024-04-29');
        
     INSERT INTO Book_Authors (book_id, author_id)
     VALUES (1, 1),
            (2, 2);
    
  3. INSERT INTO SELECT
    1. ๋‹ค๋ฅธ ํ…Œ์ด๋ธ”์—์„œ ์„ ํƒํ•œ ๋ฐ์ดํ„ฐ๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ํ–‰์„ ์‚ฝ์ž…ํ•˜๋Š” ๋ฐฉ๋ฒ•

      1
      2
      3
      4
      
       INSERT INTO table_name1 (column1, column2, column3, ...)
       SELECT column1, column2, column3, ...
       FROM table_name2
       WHERE condition;
      
    2. ์˜ˆ์ œ

      1
      2
      3
      4
      5
      6
      7
      8
      9
      10
      11
      
       -- ๋ชจ๋“  ์‚ฌ์šฉ์ž ์ด๋ฆ„๊ณผ ์ด๋ฉ”์ผ์„ 'New Users' ํ…Œ์ด๋ธ”์— ๋ณต์‚ฌ:
              
       CREATE TABLE NewUsers (
           user_id INT AUTO_INCREMENT PRIMARY KEY,
           username VARCHAR(255) NOT NULL,
           email VARCHAR(255) NOT NULL UNIQUE
       );
              
       INSERT INTO NewUsers (username, email)
       SELECT username, email
       FROM Users;
      
      • ๊ฒฐ๊ณผ

        Users

        โ€‹

        Newusers

        โ€‹

    3. ์ฃผ์˜์‚ฌํ•ญ

      1. NOT NULL ์ œ์•ฝ ์กฐ๊ฑด์ด ์žˆ๋Š” ์—ด์—๋Š” NULL ๊ฐ’์„ ์‚ฝ์ž…ํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค. ๋ฐ˜๋“œ์‹œ ๊ฐ’์„ ์ œ๊ณตํ•ด์•ผ ํ•จ

      2. ๊ธฐ๋ณธ ํ‚ค(primary key) ๋˜๋Š” ๊ณ ์œ  ํ‚ค(unique key) ์ œ์•ฝ ์กฐ๊ฑด์ด ์žˆ๋Š” ์—ด์— ์ค‘๋ณต ๊ฐ’์„ ์‚ฝ์ž…ํ•˜๋ ค๊ณ  ํ•˜๋ฉด ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒ

      3. ์™ธ๋ž˜ ํ‚ค(foreign key) ์ œ์•ฝ ์กฐ๊ฑด์ด ์žˆ๋Š” ์—ด์— ์กด์žฌํ•˜์ง€ ์•Š๋Š” ์ฐธ์กฐ ๊ฐ’์„ ์‚ฝ์ž…ํ•˜๋ ค๊ณ  ํ•˜๋ฉด ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒ


UPDATE

UPDATE๋ฌธ์€ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์˜ ๊ธฐ์กด ๋ฐ์ดํ„ฐ๋ฅผ ์ˆ˜์ •ํ•˜๋Š” ๋ฐ ์‚ฌ์šฉ

ํŠน์ • ํ…Œ์ด๋ธ”์—์„œ ํ–‰(row)๊ณผ ์—ด(column)์„ ์„ ํƒํ•˜์—ฌ ๊ฐ’์„ ๋ณ€๊ฒฝ

1
2
3
4
5
6
7
8
9
//๊ธฐ๋ณธ๊ตฌ๋ฌธ
UPDATE table_name
SET column1 = value1, column2 = value2, ...
WHERE condition;

//**table_name**์€ ๋ฐ์ดํ„ฐ๋ฅผ ์ˆ˜์ •ํ•˜๋ ค๋Š” ํ…Œ์ด๋ธ”์˜ ์ด๋ฆ„์ด๊ณ ,
 **column1, column2, ...**์€ ๊ฐ’์„ ์ˆ˜์ •ํ•˜๋ ค๋Š” ํ…Œ์ด๋ธ”์˜ ์—ด(column)
 **value1, value2, ...**์€ ํ•ด๋‹น ์—ด์— ์ˆ˜์ •ํ•  ๊ฐ’
 ๋งˆ์ง€๋ง‰์œผ๋กœ **condition**์€ ํŠน์ • ํ–‰์„ ์„ ํƒํ•˜๋Š” ์กฐ๊ฑด
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
--ํŠน์ • ์‚ฌ์šฉ์ž์˜ ์ด๋ฉ”์ผ ๋ณ€๊ฒฝ:

UPDATE Users
SET email = 'newemail@example.com'
WHERE user_id = 1;

--ํŠน์ • ๋„์„œ์˜ ์ถœํŒ ๋‚ ์งœ ๋ณ€๊ฒฝ:

UPDATE Books
SET publication_date = '2006-01-01'
WHERE book_id = 1;

-- ๋ชจ๋“  ๋Œ€์ถœ ๊ธฐ๋ก์˜ ๋ฐ˜๋‚ฉ ๋‚ ์งœ๋ฅผ ํ˜„์žฌ ๋‚ ์งœ๋กœ ๋ณ€๊ฒฝ:

UPDATE LoanRecords
SET return_date = CURRENT_DATE;

์ฃผ์˜์‚ฌํ•ญ

  1. WHERE ์ ˆ์„ ์‚ฌ์šฉํ•˜์—ฌ ํŠน์ • ํ–‰์„ ์„ ํƒํ•˜์ง€ ์•Š์œผ๋ฉด, ํ…Œ์ด๋ธ”์˜ ๋ชจ๋“  ํ–‰์ด ์—…๋ฐ์ดํŠธ

    1
    
     **update** users **set** username=**'kimlucky'**
    

  2. NOT NULL ์ œ์•ฝ ์กฐ๊ฑด์ด ์žˆ๋Š” ์—ด์— NULL ๊ฐ’์„ ์„ค์ •ํ•˜๋ ค๊ณ  ํ•˜๋ฉด ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒ
  3. ๊ธฐ๋ณธ ํ‚ค(primary key) ๋˜๋Š” ๊ณ ์œ  ํ‚ค(unique key) ์ œ์•ฝ ์กฐ๊ฑด์ด ์žˆ๋Š” ์—ด์— ์ค‘๋ณต ๊ฐ’์„ ์„ค์ •ํ•˜๋ ค๊ณ  ํ•˜๋ฉด ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒ
  4. ์™ธ๋ž˜ ํ‚ค(foreign key) ์ œ์•ฝ ์กฐ๊ฑด์ด ์žˆ๋Š” ์—ด์— ์กด์žฌํ•˜์ง€ ์•Š๋Š” ์ฐธ์กฐ ๊ฐ’์„ ์„ค์ •ํ•˜๋ ค๊ณ  ํ•˜๋ฉด ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒ

UPDATE๋ฌธ์„ ์‚ฌ์šฉํ•  ๋•Œ ๋‹ค์–‘ํ•œ ์—ฐ์‚ฐ์ž์™€ ํ•จ์ˆ˜๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๊ฐ’์„ ๊ณ„์‚ฐํ•˜๊ฑฐ๋‚˜ ์กฐ์ž‘ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด, ๊ธฐ์กด ๊ฐ’์— ์ˆซ์ž๋ฅผ ๋”ํ•˜๊ฑฐ๋‚˜ ๋นผ๊ฑฐ๋‚˜, ๋ฌธ์ž์—ด์„ ์—ฐ๊ฒฐํ•˜๊ฑฐ๋‚˜, ๋‚ ์งœ๋ฅผ ๋ณ€๊ฒฝํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์˜ˆ์‹œ)

1
2
3
4
5
6
7
8
9
10
11
-- ํŠน์ • ์‚ฌ์šฉ์ž์˜ ๋‚˜์ด๋ฅผ 1 ์ฆ๊ฐ€์‹œํ‚ค๊ธฐ:

UPDATE Users
SET age = age + 1
WHERE user_id = 1;

-- ํŠน์ • ๋„์„œ์˜ ์ถœํŒ ์—ฐ๋„๋ฅผ 2023์œผ๋กœ ๋ณ€๊ฒฝ:

UPDATE Books
SET publication_year = 2023
WHERE book_id = 1;

DELETE

  • ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์—์„œ ๋ฐ์ดํ„ฐ๋ฅผ ์‚ญ์ œํ•˜๋Š” ๋ฐ ์‚ฌ์šฉ
  • ํŠน์ • ํ…Œ์ด๋ธ”์—์„œ ํ–‰(row)์„ ์„ ํƒํ•˜์—ฌ ์‚ญ์ œ ๊ฐ€๋Šฅ
1
2
3
4
5
6
7
8
9
10
11
12
13
--ํŠน์ • ์‚ฌ์šฉ์ž ์‚ญ์ œ:

DELETE FROM Users
WHERE user_id = 1;

--์‚ฌ์šฉ์ž ํ…Œ์ด๋ธ”์—์„œ ํŠน์ • ์‚ฌ์šฉ์ž ์‚ญ์ œํ•˜๊ธฐ:
DELETE FROM Users WHERE username = 'john_doe';

--๋„์„œ ํ…Œ์ด๋ธ”์—์„œ ํŠน์ • ๋„์„œ ์‚ญ์ œํ•˜๊ธฐ:
DELETE FROM Books WHERE title = 'Sample Book';

--์ถœํŒ์‚ฌ ํ…Œ์ด๋ธ”์—์„œ ์ฃผ์†Œ๊ฐ€ ๋ถˆ๋ถ„๋ช…ํ•œ ์ถœํŒ์‚ฌ ์‚ญ์ œํ•˜๊ธฐ:
DELETE FROM Publishers WHERE address IS NULL;
1
null ํ• ๋•Œ =null ์•„๋‹ˆ๊ณ  iS NULL;

์ฃผ์˜์‚ฌํ•ญ

  1. WHERE ์ ˆ์„ ์‚ฌ์šฉํ•˜์—ฌ ํŠน์ • ํ–‰์„ ์„ ํƒํ•˜์ง€ ์•Š์œผ๋ฉด, ํ…Œ์ด๋ธ”์˜ ๋ชจ๋“  ํ–‰์ด ์‚ญ์ œ๋จ์ด ๊ฒฝ์šฐ, TRUNCATE๋ฌธ์„ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด ๋” ํšจ์œจ์ 
  2. ์‚ญ์ œ๋œ ๋ฐ์ดํ„ฐ๋Š” ๋ณต๊ตฌํ•  ์ˆ˜ ์—†์œผ๋ฏ€๋กœ, DELETE๋ฌธ์„ ์‚ฌ์šฉํ•˜๊ธฐ ์ „์— ๋ฐ์ดํ„ฐ๋ฅผ ๋ฐฑ์—…ํ•˜๊ฑฐ๋‚˜ ๋ฐ์ดํ„ฐ๋ฅผ ๋ณต๊ตฌํ•  ์ˆ˜ ์žˆ๋Š” ๋ฐฉ๋ฒ•์„ ๊ณ ๋ คํ•˜๊ธฐ
  3. ์™ธ๋ž˜ ํ‚ค(foreign key) ์ œ์•ฝ ์กฐ๊ฑด์œผ๋กœ ์ธํ•ด ์ฐธ์กฐ ๋ฌด๊ฒฐ์„ฑ์ด ๊นจ์งˆ ๊ฒฝ์šฐ, ํ•ด๋‹น ํ–‰์„ ์‚ญ์ œํ•  ์ˆ˜ ์—†์Œ. ์ด ๊ฒฝ์šฐ, ์ฐธ์กฐํ•˜๋Š” ํ–‰์„ ๋จผ์ € ์‚ญ์ œํ•˜๊ฑฐ๋‚˜ ์™ธ๋ž˜ ํ‚ค ์ œ์•ฝ ์กฐ๊ฑด์„ ์ˆ˜์ •ํ•ด์•ผ ํ•จ

    • DELETE FROM ๊ณผ TRUNCATE TABLE์˜ ์ฐจ์ด

      ์ฐจ์ด DELETE FROM TRUNCATE
      ์ž‘๋™๋ฐฉ์‹ WHERE ์ ˆ์„ ์‚ฌ์šฉํ•˜์ง€ ์•Š์œผ๋ฉด ํ…Œ์ด๋ธ”์˜ ๋ชจ๋“  ํ–‰์„ ํ•˜๋‚˜์”ฉ ์‚ญ์ œ ์ด ๊ฒฝ์šฐ, ๊ฐ ํ–‰์˜ ์‚ญ์ œ์— ๋Œ€ํ•œ ๋กœ๊ทธ๊ฐ€ ๊ธฐ๋ก๋˜๊ณ , ํŠธ๋ฆฌ๊ฑฐ๊ฐ€ ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ์Œ. ํ…Œ์ด๋ธ”์˜ ๋ชจ๋“  ๋ฐ์ดํ„ฐ๋ฅผ ํ•œ ๋ฒˆ์— ์‚ญ์ œํ•˜๋ฉฐ, ๋กœ๊ทธ๋ฅผ ๋‚จ๊ธฐ์ง€ ์•Š๊ณ  ํ…Œ์ด๋ธ”์„ ์ดˆ๊ธฐ ์ƒํƒœ๋กœ ์žฌ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค. ํŠธ๋ฆฌ๊ฑฐ๋ฅผ ๋ฐœ์ƒX
      ์„ฑ๋Šฅ ๊ฐœ๋ณ„์ ์œผ๋กœ ์‚ญ์ œํ•˜๋ฏ€๋กœ, ํ…Œ์ด๋ธ”์ด ํฐ ๊ฒฝ์šฐ ์‹คํ–‰ ์†๋„๊ฐ€ ๋А๋ฆด ์ˆ˜ ์žˆ์Œ ํ•œ ๋ฒˆ์— ์‚ญ์ œํ•˜๋ฏ€๋กœ, ์‹คํ–‰ ์†๋„๊ฐ€ ๋น ๋ฅด๊ณ  ํšจ์œจ์ 
      ์‚ฌ์šฉ์‚ฌ๋ก€ ํŠน์ • ์กฐ๊ฑด(WHERE์ ˆ)์„ ๋งŒ์กฑํ•˜๋Š” ํ–‰์„ ์‚ญ์ œํ•  ๋•Œ ์‚ฌ์šฉ ํ…Œ์ŠคํŠธ ๋ฐ์ดํ„ฐ๋ฅผ ์‚ญ์ œํ•˜๊ฑฐ๋‚˜ ์ž„์‹œ ํ…Œ์ด๋ธ”์˜ ๋ฐ์ดํ„ฐ๋ฅผ ์ดˆ๊ธฐํ™”ํ•  ๋•Œ ์‚ฌ์šฉ
      ์‹ค๋ฌด ํŠน์ • ๋‚ ์งœ ์ด์ „์˜ ํ…Œ์ŠคํŠธ ๋ฐ์ดํ„ฐ๋ฅผ ์‚ญ์ œ ํ•˜๋ฃจ์— ํ•œ ๋ฒˆ์”ฉ ์ž„์‹œ ๋ฐ์ดํ„ฐ๋ฅผ ์‚ญ์ œํ•ด์•ผ ํ•˜๋Š” ์‹œ๋‚˜๋ฆฌ์˜ค

      DELETE FROM ์‹ค๋ฌด์— ๋Œ€ํ•œ ์˜ˆ์ œ [2022-05-01 ์ด์ „ ๋ฐ์ดํ„ฐ ์‚ญ์ œ]

      1
      2
      
        DELETE FROM LoanRecords
        WHERE loan_date < '2022-05-01';
      

      DELETE ์ „

      โ€‹

      DELETE ํ›„

      โ€‹

Database ์นดํ…Œ๊ณ ๋ฆฌ ๋‚ด ๋‹ค๋ฅธ ๊ธ€ ๋ณด๋Ÿฌ๊ฐ€๊ธฐ

Leave a comment