๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
[๊ฐœ๋ฐœ] Practice/SQL Database

[SQL / Database] ํ…Œ์ด๋ธ” ๋งŒ๋“ค๊ธฐ & ๋ฐ์ดํ„ฐ ํƒ€์ž… ์•Œ์•„๋ณด๊ธฐ

by Connecting-the-dots 2023. 5. 26.
728x90
๋ฐ˜์‘ํ˜•

๐Ÿ’ก ํ…Œ์ด๋ธ” ๋งŒ๋“ค๊ธฐ & ๋ฐ์ดํ„ฐ ํƒ€์ž… ์•Œ์•„๋ณด๊ธฐ

๐Ÿ’œ DBeaver ๋กœ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๋ฐ ํ…Œ์ด๋ธ” ๋งŒ๋“ค๊ธฐ

๐Ÿค ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์ถ”๊ฐ€ํ•˜๊ธฐ

  • DBeaver ์—์„œ ํ…Œ์ด๋ธ”์„ ๋งŒ๋“ค๊ธฐ ์ „์— ๋จผ์ € MySQL Workbench ๋ฅผ ํ†ตํ•ด MySQL ์„œ๋ฒ„๋ฅผ ์‹คํ–‰ํ•ด์•ผ ํ•œ๋‹ค.
  • ์ด์ œ DBeaver ์˜ Database Navigator ์ฐฝ์—์„œ Databases ๋ฅผ ์šฐํด๋ฆญ ํ›„ Create New Database ๋ผ๋Š” ํ•ญ๋ชฉ์„ ํด๋ฆญํ•œ๋‹ค.
  • Create database ์ฐฝ์ด ์—ด๋ฆฌ๋ฉด Database name ์„ ์„ค์ •ํ•œ ํ›„ ํ™•์ธ ๋ฒ„ํŠผ์„ ํด๋ฆญํ•˜๋ฉด Databases ํ•˜์œ„ ํ•ญ๋ชฉ์œผ๋กœ ์ƒˆ๋กœ ์„ค์ •ํ•œ Database name ์„ ๊ฐ€์ง„ DB ๊ฐ€ ์ƒ์„ฑ๋œ ๊ฒƒ์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค.
    (๋‚˜์˜ ๊ฒฝ์šฐ Database name ์„ Mart ๋กœ ์„ค์ •ํ•˜์˜€๊ธฐ์— ์œ„์™€ ๊ฐ™์ด Mart DB ๊ฐ€ ์ƒ์„ฑ๋œ ๊ฒƒ์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค.)

๐Ÿค ํ…Œ์ด๋ธ” ๋งŒ๋“ค๊ธฐ

  • ์ƒ์„ฑ๋œ DB ์˜ ํ•˜์œ„๋ชฉ๋ก์„ ๋ณด๋ฉด Tables ๋ผ๋Š” ํ•ญ๋ชฉ์ด ์žˆ๋Š”๋ฐ, ์ด๋ฅผ ์šฐํด๋ฆญ ํ•œ ํ›„ Create New Table ์„ ํด๋ฆญํ•œ๋‹ค.
  • ๊ทธ๋Ÿฌ๋ฉด ์šฐ์ธก์— NewTable ์ด๋ผ๋Š” ํƒญ์ด ์—ด๋ฆฌ๋ฉด์„œ ์œ„์™€ ๊ฐ™์€ ํ™”๋ฉด์ด ๋‚˜์˜ค๋Š”๋ฐ, ๋ฐ์ดํ„ฐ๋ฅผ ๊ธฐ๋กํ•˜๋ ค๋ฉด ์ปฌ๋Ÿผ๋ถ€ํ„ฐ ๋งŒ๋“ค์–ด์•ผ ํ•œ๋‹ค. 
  • ์ปฌ๋Ÿผ์€ ์‰ฝ๊ฒŒ ๋งํ•˜์ž๋ฉด ํ…Œ์ด๋ธ”์˜ ์„ธ๋กœ์ค„(์—ด)์„ ์˜๋ฏธํ•œ๋‹ค.
  • ํ™”๋ฉด ๋‚ด์—์„œ ์šฐํด๋ฆญ ํ›„  Create New Column ํ•ญ๋ชฉ์„ ํด๋ฆญํ•œ ํ›„, ์œ„ ์ฐฝ์—์„œ ์ปฌ๋Ÿผ๋ช…๊ณผ ์†์„ฑ์„ ์„ค์ •ํ•˜๋Š” ๊ฒƒ์ด ๊ฐ€๋Šฅํ•˜๋‹ค.
  •  ๋‚˜์˜ ๊ฒฝ์šฐ products ๋ผ๋Š” ํ…Œ์ด๋ธ”๋ช…์œผ๋กœ ์œ„์™€ ๊ฐ™์ด ์ปฌ๋Ÿผ๋ช…๊ณผ ๋ฐ์ดํ„ฐ ํƒ€์ž…์„ ์„ค์ •ํ•ด์ฃผ๊ณ  ์ €์žฅํ–ˆ๋‹ค.

๐Ÿ’œ ๋ฐ์ดํ„ฐ ํƒ€์ž… ์•Œ์•„๋ณด๊ธฐ

  • ์ปฌ๋Ÿผ์„ ๋งŒ๋“ค ๋•Œ ๋ณดํ†ต ๋ฐ์ดํ„ฐ ํƒ€์ž…์„ ๋ช…์‹œํ•˜๋„๋ก ๋˜์–ด์žˆ๋Š”๋ฐ ๋ฐ์ดํ„ฐ ํƒ€์ž…์ด๋ž€ ๋ฐ์ดํ„ฐ ์ข…๋ฅ˜๋ฅผ ์˜๋ฏธํ•œ๋‹ค.
  • ๋ฌธ์ž, ์ˆซ์ž, ์†Œ์ˆ˜, ์‹œ๊ฐ„, ์ฐธ/๊ฑฐ์ง“ ๋“ฑ ๋‹ค์–‘ํ•œ ์ข…๋ฅ˜์˜ ๋ฐ์ดํ„ฐ ํƒ€์ž…์ด ์ข…๋ฅ˜ํ•˜๋ฉฐ ์ด๋Š” ์‚ฌ์šฉํ•˜๋Š” DBMS ๋งˆ๋‹ค ์•ฝ๊ฐ„์˜ ์ฐจ์ด๊ฐ€ ์กด์žฌํ•œ๋‹ค.

๐Ÿค ๋ฌธ์ž ๋ฐ์ดํ„ฐ ํƒ€์ž…

Data type ์ €์žฅ ๊ฐ€๋Šฅํ•œ ์–‘ ํŠน์ง•
CHAR 0 ~ 255์ž CHAR(์ˆซ์ž)๋กœ ์ตœ๋Œ€์šฉ๋Ÿ‰ ์ง€์ •๊ฐ€๋Šฅ
VARCHAR 0 ~ 65535์ž VARCHAR(์ˆซ์ž)๋กœ ์ตœ๋Œ€์šฉ๋Ÿ‰ ์ง€์ •๊ฐ€๋Šฅ
TEXT 0~ 65535์ž  
TINYTEXT 0 ~ 255์ž  
MEDIUMTEXT 0 ~ 1600๋งŒ์ž  
LONGTEXT 0 ~ 42์–ต์ž  
  • VARCHAR : ์‹ค์ œ ๋„ฃ์€ ๊ธ€์ž ์ˆ˜ + 1byte ๋งŒํผ์˜ ์šฉ๋Ÿ‰์„ ์ฐจ์ง€ํ•˜๋ฉฐ, ๊ธ€์ž๊ฐ€ 256์ž ์ด์ƒ์ธ ๊ฒฝ์šฐ + 2byte ๊ฐ€ ๋œ๋‹ค.
  • CHAR : ์šฉ๋Ÿ‰์ด ๊ณ ์ •๋˜์–ด ์žˆ์œผ๋ฏ€๋กœ, ๊ณ ์ •๋œ ํฌ๊ธฐ์˜ ๊ธ€์ž๊ฐ€ ํ•„์š”ํ•œ ๊ฒฝ์šฐ ์‚ฌ์šฉํ•˜๋ฉด ์„ฑ๋Šฅ์ƒ ์ด์ ์ด ์žˆ์„ ์ˆ˜ ์žˆ์œผ๋‚˜ ์ฒด๊ฐ์ด ํฌ์ง€๋Š” ์•Š๋‹ค.

๐Ÿค ์ˆซ์ž ๋ฐ์ดํ„ฐ ํƒ€์ž…

Data type ์ €์žฅ ๊ฐ€๋Šฅํ•œ ์–‘ ํŠน์ง•
SMALLINT - 32768 ~ 32767  
MEDIUMINT - 838๋งŒ ~ 838๋งŒ  
INT - 21์–ต ~ 21์–ต  
BIGINT - 900๊ฒฝ ~ 900๊ฒฝ  
FLOAT - 10^38 ~ 10^38 ์†Œ์ˆ˜์  7์ž๋ฆฌ๊นŒ์ง€ ์ €์žฅ ๊ฐ€๋Šฅ(์˜ค์ฐจ O)
DOUBLE - 10^308 ~ 10^308 ์†Œ์ˆ˜์  14์ž๋ฆฌ๊นŒ์ง€ ์ €์žฅ ๊ฐ€๋Šฅ(์˜ค์ฐจ O)
DECIMAL ์†Œ์ˆ˜์  30์ž๋ฆฌ ํฌํ•จ ์ตœ๋Œ€ 65์ž๋ฆฌ ์˜ค์ฐจ ์—†์ด ์†Œ์ˆ˜์  ์ €์žฅ ๊ฐ€๋Šฅ
  • FLOAT, DOUBLE, DECIMAL ์€ ์†Œ์ˆ˜์ ์ด ์žˆ๋Š” ์ˆซ์ž๋ฅผ ์ €์žฅํ•  ์ˆ˜ ์žˆ๋‹ค.
  • ๋‹ค๋งŒ FLOAT, DOUBLE ์€ ์„ฑ๋Šฅ์€ ๊ดœ์ฐฎ์ง€๋งŒ ์ •ํ™•๋„๊ฐ€ ๋‚ฎ์„ ์ˆ˜ ์žˆ๋‹ค๋Š” ๋‹จ์ ์ด ์กด์žฌํ•œ๋‹ค.
  • ์–‘์˜ ์ˆซ์ž๋งŒ ์ €์žฅํ•˜๊ณ  ์‹ถ๋‹ค๋ฉด ์ปฌ๋Ÿผ์„ ์ƒ์„ฑํ•  ๋•Œ unsigned ์˜ต์…˜์„ ์ฒดํฌํ•˜๋ฉด ๋œ๋‹ค.
    (์˜ˆ๋ฅผ ๋“ค์–ด, unsigned ์˜ต์…˜์ด ์ฒดํฌ๋œ SMALLINT ์˜ ๊ฒฝ์šฐ 0 ~ 65535 ๊นŒ์ง€ ์ €์žฅ์ด ๊ฐ€๋Šฅํ•ด์ง„๋‹ค.)
  • ๋„ฃ๋Š” ์ˆซ์ž๊ฐ€ ์ปค์ง„๋‹ค๊ณ  ๋” ๋งŽ์€ DB ์šฉ๋Ÿ‰์„ ์ฐจ์ง€ํ•˜๋Š” ๊ฒƒ์€ ์•„๋‹ˆ๋‹ค.
    (๋ฐ์ดํ„ฐ 1๊ฐœ ๋‹น  INT ๋Š” 4byte, SMALLINT ๋Š” 2byte, BIGINT ๋Š” 8byte ๋ฅผ ์ฐจ์ง€ํ•œ๋‹ค.)

๐Ÿค ๋‚ ์งœ/์‹œ๊ฐ„ ๋ฐ์ดํ„ฐ ํƒ€์ž…

Data type ์ €์žฅ ๊ฐ€๋Šฅํ•œ ์–‘ ํŠน์ง•
DATE 1000๋…„ ~ 9999๋…„ YYYY-MM-DD ํ˜•์‹
TIME - 839 ~ +838์‹œ๊ฐ„ HH:MM:SS ํ˜•์‹
DATETIME 1000๋…„ ~ 9999๋…„ YYYY-MM-DD HH:MM:SS ํ˜•์‹
TIMESTAMP 1970๋…„ ~ 2038๋…„ YYYY-MM-DD HH:MM:SS ํ˜•์‹ (์ž˜ ์‚ฌ์šฉ ์•ˆํ•จ)
  • ๋‚ ์งœ/์‹œ๊ฐ„์€ ๋ณดํ†ต DATETIME ์„ ์‚ฌ์šฉํ•œ๋‹ค.
  • TIMESTAMP ๋„ DATETIME ๊ณผ ์œ ์‚ฌํ•˜๋‚˜ MySQL ์—์„œ๋Š” 2038๋…„๊นŒ์ง€๋งŒ ์ €์žฅ์ด ๊ฐ€๋Šฅํ•˜๋ฏ€๋กœ ์ž˜ ์‚ฌ์šฉํ•˜์ง€๋Š” ์•Š๋Š”๋‹ค.

 

728x90
๋ฐ˜์‘ํ˜•