๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
DBMS/Mariadb

[DBMS]MariaDB SQL์„ ์‚ฌ์šฉํ•œ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ํ…Œ์ด๋ธ” ๊ด€๋ฆฌ: ์ƒ์„ฑ, ์ •๋ณด ์กฐํšŒ, ์ˆ˜์ •, ์กฐํšŒ ๋ฐ ์‚ญ์ œ ๋ฐฉ๋ฒ•

by YJ Dev 2024. 5. 20.
728x90
๋ฐ˜์‘ํ˜•
SMALL

MariaDB๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ํ…Œ์ด๋ธ”์„ ์ƒ์„ฑํ•˜๊ณ  ์ˆ˜์ •ํ•˜๋Š” ๋ฐฉ๋ฒ•์„ SQL ๊ธฐ๋ณธ ๋ช…๋ น์–ด๋ฅผ ํ†ตํ•ด ์‚ดํŽด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. ์ด ๊ธ€์—์„œ๋Š” ๊ธฐ๋ณธ์ ์ธ CREATE TABLE ๋ฌธ๋ถ€ํ„ฐ ํ…Œ์ด๋ธ”์„ ์ˆ˜์ •ํ•˜๋Š” ALTER ๋ฌธ๊นŒ์ง€ ๋‹ค๋ฃฐ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

sql ํ…Œ์ด๋ธ” ๊ด€๋ฆฌ



ํ…Œ์ด๋ธ” ์ƒ์„ฑ(CREATE)๐ŸŒž

ํ…Œ์ด๋ธ” ์ƒ์„ฑ์€ SQL์„ ์‚ฌ์šฉํ•˜์—ฌ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์— ์ƒˆ๋กœ์šด ํ…Œ์ด๋ธ”์„ ๋งŒ๋“œ๋Š” ํ”„๋กœ์„ธ์Šค์ž…๋‹ˆ๋‹ค. ํ…Œ์ด๋ธ”์„ ์ƒ์„ฑํ•  ๋•Œ๋Š” ํ…Œ์ด๋ธ”์˜ ์ด๋ฆ„๊ณผ ๊ฐ ์—ด(Column)์˜ ๊ตฌ์กฐ๋ฅผ ์ •์˜ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๋ณดํ†ต ํ…Œ์ด๋ธ” ์ƒ์„ฑ์€ ๋‹ค์Œ๊ณผ ๊ฐ™์€ ์ˆœ์„œ๋กœ ์ด๋ฃจ์–ด์ง‘๋‹ˆ๋‹ค.

  1. CREATE TABLE ๋ฌธ ์‚ฌ์šฉ: ํ…Œ์ด๋ธ”์„ ์ƒ์„ฑํ•˜๊ธฐ ์œ„ํ•ด CREATE TABLE ๋ฌธ์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. ์ด ๋ฌธ์€ ์ƒˆ๋กœ์šด ํ…Œ์ด๋ธ”์„ ์ •์˜ํ•˜๊ณ , ๊ฐ ์—ด์˜ ์ด๋ฆ„๊ณผ ๋ฐ์ดํ„ฐ ์œ ํ˜•, ์ œ์•ฝ ์กฐ๊ฑด ๋“ฑ์„ ์ง€์ •ํ•ฉ๋‹ˆ๋‹ค.
  2. ํ…Œ์ด๋ธ” ์ด๋ฆ„ ๋ฐ ์—ด ์ •์˜: CREATE TABLE ๋ฌธ์—์„œ๋Š” ํ…Œ์ด๋ธ” ์ด๋ฆ„๊ณผ ๊ฐ ์—ด(Column)์— ๋Œ€ํ•œ ์ •์˜๋ฅผ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. ๊ฐ ์—ด์€ ์ด๋ฆ„๊ณผ ๋ฐ์ดํ„ฐ ์œ ํ˜•์„ ๊ฐ€์ง€๋ฉฐ, ์„ ํƒ์ ์œผ๋กœ ๊ธฐ๋ณธ๊ฐ’(Default), NULL ํ—ˆ์šฉ ์—ฌ๋ถ€, ๊ณ ์œ ์„ฑ(UNIQUE) ๋“ฑ์˜ ์ œ์•ฝ ์กฐ๊ฑด์„ ์ง€์ •ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  3. ์Šคํ‚ค๋งˆ ์„ ํƒ: ํ…Œ์ด๋ธ”์„ ์ƒ์„ฑํ•  ์Šคํ‚ค๋งˆ(Schema)๋ฅผ ์„ ํƒํ•ฉ๋‹ˆ๋‹ค. ์Šคํ‚ค๋งˆ๋Š” ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๋‚ด์—์„œ ํ…Œ์ด๋ธ”์˜ ๋…ผ๋ฆฌ์ ์ธ ๊ทธ๋ฃน์„ ๋‚˜ํƒ€๋ƒ…๋‹ˆ๋‹ค.
  4. ์‹คํ–‰: CREATE TABLE ๋ฌธ์„ ์‹คํ–‰ํ•˜์—ฌ ํ…Œ์ด๋ธ”์„ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์— ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค. ์ดํ›„์—๋Š” ํ•ด๋‹น ํ…Œ์ด๋ธ”์„ ์‚ฌ์šฉํ•˜์—ฌ ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•˜๊ณ  ์กฐํšŒํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
CREATE TABLE `์Šคํ‚ค๋งˆ์ด๋ฆ„`. `ํ…Œ์ด๋ธ”์ด๋ฆ„` (
-- `์—ด์ด๋ฆ„1` ๋ฐ์ดํ„ฐํƒ€์ž…1 ์—ด์†์„ฑ1, 
-- `์—ด์ด๋ฆ„2` ๋ฐ์ดํ„ฐํƒ€์ž…2 ์—ด์†์„ฑ2
);


์˜ˆ๋ฅผ ๋“ค์–ด, ๋‹ค์Œ์€ ์‚ฌ์šฉ์ž ์ •๋ณด๋ฅผ ์ €์žฅํ•˜๊ธฐ ์œ„ํ•œ ํ…Œ์ด๋ธ”์„ ์ƒ์„ฑํ•˜๋Š” SQL ๋ฌธ์˜ ์˜ˆ์‹œ์ž…๋‹ˆ๋‹ค

CREATE TABLE `userdb`.`tbl_user` (
    `user_id` INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
    `username` VARCHAR(50) NOT NULL,
    `email` VARCHAR(100) NOT NULL UNIQUE,
    `registration_date` DATE DEFAULT CURRENT_DATE
);


์œ„ SQL ๋ฌธ์€ ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๋‚ด์šฉ์„ ํฌํ•จํ•ฉ๋‹ˆ๋‹ค.

  • user_id: ์ •์ˆ˜ํ˜•(INT) ๋ฐ์ดํ„ฐ ์œ ํ˜•์œผ๋กœ, ๊ธฐ๋ณธ ํ‚ค(PRIMARY KEY)์ด๋ฉฐ ์ž๋™ ์ฆ๊ฐ€(AUTO_INCREMENT) ์†์„ฑ์„ ๊ฐ€์ง‘๋‹ˆ๋‹ค.
  • username: ์ตœ๋Œ€ ๊ธธ์ด๊ฐ€ 50์ธ ๊ฐ€๋ณ€ ๊ธธ์ด ๋ฌธ์ž์—ด(VARCHAR) ๋ฐ์ดํ„ฐ ์œ ํ˜•์œผ๋กœ, NULL ๊ฐ’์„ ํ—ˆ์šฉํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.
  • email: ์ตœ๋Œ€ ๊ธธ์ด๊ฐ€ 100์ธ ๊ฐ€๋ณ€ ๊ธธ์ด ๋ฌธ์ž์—ด(VARCHAR) ๋ฐ์ดํ„ฐ ์œ ํ˜•์œผ๋กœ, NULL ๊ฐ’์„ ํ—ˆ์šฉํ•˜์ง€ ์•Š์œผ๋ฉฐ ์œ ๋‹ˆํฌ(UNIQUE) ์ œ์•ฝ ์กฐ๊ฑด์ด ์ ์šฉ๋ฉ๋‹ˆ๋‹ค.
  • registration_date: ๋‚ ์งœ(DATE) ๋ฐ์ดํ„ฐ ์œ ํ˜•์œผ๋กœ, ๊ธฐ๋ณธ๊ฐ’์œผ๋กœ ํ˜„์žฌ ๋‚ ์งœ๊ฐ€ ์„ค์ •๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค. NULL ๊ฐ’์„ ํ—ˆ์šฉํ•ฉ๋‹ˆ๋‹ค.

์ด๋ฅผ ํ†ตํ•ด userdb ์Šคํ‚ค๋งˆ์— tbl_user ํ…Œ์ด๋ธ”์„ ์ƒ์„ฑํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.


ํ…Œ์ด๋ธ”์„ ์ƒ์„ฑํ•  ๋•Œ ๊ฐ ์—ด(Column)์—๋Š” ๋ฐ์ดํ„ฐ ์œ ํ˜•์„ ์ง€์ •ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๋ฐ์ดํ„ฐ ์œ ํ˜•์€ ํ•ด๋‹น ์—ด์ด ์–ด๋–ค ์ข…๋ฅ˜์˜ ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•  ์ˆ˜ ์žˆ๋Š”์ง€๋ฅผ ๋‚˜ํƒ€๋ƒ…๋‹ˆ๋‹ค. ๐Ÿ‘‡์ด์— ๋Œ€ํ•œ ์ž์„ธํ•œ ๋‚ด์šฉ์€ ๋‹ค์Œ ํฌ์ŠคํŒ…์„ ์ฐธ๊ณ ํ•ด ์ฃผ์„ธ์š”๐Ÿ‘‡

" "

[DBMS]MariaDB ๋ฐ์ดํ„ฐ ํƒ€์ž…: ์ •์ˆ˜๋ถ€ํ„ฐ ๋ฌธ์ž๊นŒ์ง€ ์™„๋ฒฝ ์ •๋ฆฌ

โ‰ฃ ๋ชฉ์ฐจ์ •์ˆ˜ํ˜• ๋ฐ์ดํ„ฐ ํƒ€์ž…๐Ÿ”ข์†Œ์ˆ˜ํ˜• ๋ฐ์ดํ„ฐ ํƒ€์ž…โ—พ๋‚ ์งœ/ ์‹œ๊ฐ„ ๋ฐ์ดํ„ฐ ํƒ€์ž…๐Ÿ“†โฒ๋…ผ๋ฆฌ ๋ฐ์ดํ„ฐ ํƒ€์ž…๐Ÿ‘Œ๐Ÿ™…‍โ™€๏ธ๋ฌธ์ž ๋ฐ์ดํ„ฐ ํƒ€์ž…๐Ÿ…ฐ์ด์ง„ ๋ฐ์ดํ„ฐ ํƒ€์ž…๐Ÿ‘ฉ‍๐Ÿ’ปํ•ต์‹ฌ ๋‚ด์šฉ๐Ÿ‘€MariaDB ๋ฐ์ดํ„ฐ ํƒ€์ž…์— ๋Œ€

creativevista.tistory.com

ํ…Œ์ด๋ธ” ์ •๋ณด ์กฐํšŒ(DESC)๐ŸŒˆ

DESCRIBE ๋ฌธ์„ ์‚ฌ์šฉํ•˜์—ฌ ํ…Œ์ด๋ธ”์˜ ๊ตฌ์กฐ๋ฅผ ์กฐํšŒํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

DESC `userdb`.`tbl_user`;
+------------------+--------------+------+-----+-------------------+-----------------------------+
| Field            | Type         | Null | Key | Default           | Extra                       |
+------------------+--------------+------+-----+-------------------+-----------------------------+
| user_id          | int          | NO   | PRI | NULL              | auto_increment              |
| username         | varchar(50)  | NO   |     | NULL              |                             |
| email            | varchar(100) | NO   | UNI | NULL              |                             |
| registration_date| date         | YES  |     | CURRENT_DATE      |                             |
+------------------+--------------+------+-----+-------------------+-----------------------------+


์œ„ ๊ฒฐ๊ณผ์—์„œ ๊ฐ ์—ด์€ ๋‹ค์Œ๊ณผ ๊ฐ™์€ ์ •๋ณด๋ฅผ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.

  • Field: ์—ด์˜ ์ด๋ฆ„
  • Type: ๋ฐ์ดํ„ฐ ์œ ํ˜•
  • Null: NULL ํ—ˆ์šฉ ์—ฌ๋ถ€
  • Key: ํ‚ค(Key) ์œ ํ˜• (์—ฌ๊ธฐ์„œ๋Š” PRI๋Š” ๊ธฐ๋ณธ ํ‚ค(primary key), UNI๋Š” ์œ ๋‹ˆํฌ(unique) ์ธ๋ฑ์Šค๋ฅผ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค)
  • Default: ๊ธฐ๋ณธ๊ฐ’ (๊ธฐ๋ณธ๊ฐ’์ด ์—†๋Š” ๊ฒฝ์šฐ NULL๋กœ ํ‘œ์‹œ๋ฉ๋‹ˆ๋‹ค)
  • Extra: ์ถ”๊ฐ€ ์ •๋ณด (์˜ˆ: auto_increment๋Š” ์ž๋™ ์ฆ๊ฐ€ ์†์„ฑ์„ ๋‚˜ํƒ€๋ƒ…๋‹ˆ๋‹ค)

์ด๋ฅผ ํ†ตํ•ด ํ…Œ์ด๋ธ”์˜ ๊ตฌ์กฐ๋ฅผ ์ž์„ธํžˆ ์ดํ•ดํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

ํ…Œ์ด๋ธ” ์ˆ˜์ •(ALTER)๐ŸŒœ

ํ…Œ์ด๋ธ” ์ˆ˜์ •์€ ์ด๋ฏธ ์กด์žฌํ•˜๋Š” ํ…Œ์ด๋ธ”์˜ ๊ตฌ์กฐ๋ฅผ ๋ณ€๊ฒฝํ•˜๊ฑฐ๋‚˜ ์กฐ์ •ํ•˜๋Š” ํ”„๋กœ์„ธ์Šค๋ฅผ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค. ์ด๋ฅผ ์ˆ˜ํ–‰ํ•˜๊ธฐ ์œ„ํ•ด SQL์—์„œ๋Š” ALTER TABLE ๋ฌธ์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. ํ…Œ์ด๋ธ”์„ ์ˆ˜์ •ํ•˜๋Š” ์ฃผ์š” ์ž‘์—…์œผ๋กœ๋Š” ์—ด ์ถ”๊ฐ€, ์—ด ์‚ญ์ œ, ์—ด ์ˆ˜์ •์ด ์žˆ์Šต๋‹ˆ๋‹ค.

์—ด ์ถ”๊ฐ€(ADD COLUMN)

ํ…Œ์ด๋ธ”์— ์ƒˆ๋กœ์šด ์—ด(Column)์„ ์ถ”๊ฐ€ํ•˜๋Š” ์ž‘์—…์ž…๋‹ˆ๋‹ค. ์ƒˆ๋กœ์šด ์—ด์„ ํ…Œ์ด๋ธ”์— ์ถ”๊ฐ€ํ•˜์—ฌ ๋ฐ์ดํ„ฐ๋ฅผ ๋” ์ƒ์„ธํ•˜๊ฒŒ ์ €์žฅํ•˜๊ฑฐ๋‚˜ ์ƒˆ๋กœ์šด ์ •๋ณด๋ฅผ ๊ธฐ๋กํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

ALTER TABLE ํ…Œ์ด๋ธ”๋ช… ADD COLUMN ์ƒˆ๋กœ์šด_์—ด_์ •์˜;
ALTER TABLE `userdb`.`tbl_usr` ADD COLUMN `contact` VARCHAR(13) NOT NULL;
ALTER TABLE `userdb`.`tbl_usr` ADD COLUMN `index` INT UNSIGNED NOT NULL FIRST;

์—ด ์‚ญ์ œ(DROP COLUMN)

ํ…Œ์ด๋ธ”์—์„œ ๊ธฐ์กด์˜ ์—ด(Column)์„ ์‚ญ์ œํ•˜๋Š” ์ž‘์—…์ž…๋‹ˆ๋‹ค. ๋” ์ด์ƒ ํ•„์š”ํ•˜์ง€ ์•Š์€ ์—ด์„ ์‚ญ์ œํ•˜๊ฑฐ๋‚˜ ๊ตฌ์กฐ๋ฅผ ๊ฐ„์†Œํ™”ํ•˜๊ธฐ ์œ„ํ•ด ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค.

ALTER TABLE ํ…Œ์ด๋ธ”๋ช… DROP COLUMN ์‚ญ์ œํ• _์—ด_์ด๋ฆ„;
ALTER TABLE `userdb`.`tbl_usr` DROP COLUMN `contact`;
ALTER TABLE `userdb`.`tbl_usr` DROP COLUMN `index`;

์—ด ์ˆ˜์ •(MODIFY COLUMN)

ํ…Œ์ด๋ธ”์˜ ๊ธฐ์กด ์—ด(Column)์˜ ์†์„ฑ์„ ๋ณ€๊ฒฝํ•˜๋Š” ์ž‘์—…์ž…๋‹ˆ๋‹ค. ์—ด์˜ ๋ฐ์ดํ„ฐ ์œ ํ˜•, ์ œ์•ฝ ์กฐ๊ฑด, ๊ธฐ๋ณธ๊ฐ’ ๋“ฑ์„ ์ˆ˜์ •ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

ALTER TABLE ํ…Œ์ด๋ธ”๋ช… MODIFY COLUMN ์—ด_์ด๋ฆ„ ์ƒˆ๋กœ์šด_์—ด_์ •์˜;
-- email ์—ด์˜ ๋ฐ์ดํ„ฐ ํƒ€์ž…์„ ๋ณ€๊ฒฝ (VARCHAR(100) -> VARCHAR(150))
ALTER TABLE `userdb`.`tbl_usr` MODIFY COLUMN `email` VARCHAR(150) NOT NULL UNIQUE;

-- registration_date ์—ด์˜ ๊ธฐ๋ณธ๊ฐ’์„ ํŠน์ • ๋‚ ์งœ๋กœ ๋ณ€๊ฒฝ
ALTER TABLE `userdb`.`tbl_usr` MODIFY COLUMN `registration_date` DATE DEFAULT '2024-01-01';

-- contact ์—ด์„ username ์—ด ๋’ค๋กœ ์ด๋™
ALTER TABLE `userdb`.`tbl_usr` MODIFY COLUMN `contact` VARCHAR(13) NOT NULL AFTER `username`;

ํ…Œ์ด๋ธ” ์กฐํšŒ(SHOW)โ›…

๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๋‚ด์˜ ๋ชจ๋“  ํ…Œ์ด๋ธ” ๋ชฉ๋ก์„ ์กฐํšŒํ•˜๋ ค๋ฉด SHOW TABLES IN๋ช…๋ น์–ด๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

SHOW TABLES IN ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋ช…;


์˜ˆ๋ฅผ ๋“ค์–ด, userdb ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๋‚ด์˜ ๋ชจ๋“  ํ…Œ์ด๋ธ”์„ ์กฐํšŒํ•˜๋ ค๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™์ด ํ•ฉ๋‹ˆ๋‹ค.

SHOW TABLES IN `userdb`;


์ด ๋ช…๋ น์–ด๋ฅผ ์‹คํ–‰ํ•˜๋ฉด userdb ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์— ์žˆ๋Š” ๋ชจ๋“  ํ…Œ์ด๋ธ”์˜ ๋ชฉ๋ก์„ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.

ํ…Œ์ด๋ธ” ์‚ญ์ œ(DROP)โšก

ํ…Œ์ด๋ธ” ์‚ญ์ œ๋Š” ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์—์„œ ํŠน์ • ํ…Œ์ด๋ธ”์„ ์™„์ „ํžˆ ์ œ๊ฑฐํ•˜๋Š” ์ž‘์—…์ž…๋‹ˆ๋‹ค. ์ด๋ฅผ ์œ„ํ•ด SQL์—์„œ๋Š” DROP TABLE ๋ช…๋ น์–ด๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. ์ด ๋ช…๋ น์–ด๋ฅผ ์‹คํ–‰ํ•˜๋ฉด ํ…Œ์ด๋ธ” ์ž์ฒด๋ฟ๋งŒ ์•„๋‹ˆ๋ผ ํ•ด๋‹น ํ…Œ์ด๋ธ”์— ์ €์žฅ๋œ ๋ชจ๋“  ๋ฐ์ดํ„ฐ๋„ ์‚ญ์ œ๋ฉ๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ํ…Œ์ด๋ธ” ์‚ญ์ œ ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•  ๋•Œ๋Š” ์‹ ์ค‘ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

DROP TABLE `๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋ช…`.`ํ…Œ์ด๋ธ”๋ช…`;
DROP TABLE `userdb`.`tbl_user`;

ํ•ต์‹ฌ ๋‚ด์šฉ๐Ÿ‘€

sql ํ…Œ์ด๋ธ” ๊ด€๋ฆฌ

728x90
๋ฐ˜์‘ํ˜•
LIST