MariaDB๋ฅผ ์ฌ์ฉํ์ฌ ํ ์ด๋ธ์ ์์ฑํ๊ณ ์์ ํ๋ ๋ฐฉ๋ฒ์ SQL ๊ธฐ๋ณธ ๋ช ๋ น์ด๋ฅผ ํตํด ์ดํด๋ณด๊ฒ ์ต๋๋ค. ์ด ๊ธ์์๋ ๊ธฐ๋ณธ์ ์ธ CREATE TABLE ๋ฌธ๋ถํฐ ํ ์ด๋ธ์ ์์ ํ๋ ALTER ๋ฌธ๊น์ง ๋ค๋ฃฐ ๊ฒ์ ๋๋ค.
โฃ ๋ชฉ์ฐจ
ํ ์ด๋ธ ์์ฑ(CREATE)๐
ํ ์ด๋ธ ์์ฑ์ SQL์ ์ฌ์ฉํ์ฌ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์๋ก์ด ํ ์ด๋ธ์ ๋ง๋๋ ํ๋ก์ธ์ค์ ๋๋ค. ํ ์ด๋ธ์ ์์ฑํ ๋๋ ํ ์ด๋ธ์ ์ด๋ฆ๊ณผ ๊ฐ ์ด(Column)์ ๊ตฌ์กฐ๋ฅผ ์ ์ํด์ผ ํฉ๋๋ค. ๋ณดํต ํ ์ด๋ธ ์์ฑ์ ๋ค์๊ณผ ๊ฐ์ ์์๋ก ์ด๋ฃจ์ด์ง๋๋ค.
- CREATE TABLE ๋ฌธ ์ฌ์ฉ: ํ ์ด๋ธ์ ์์ฑํ๊ธฐ ์ํด CREATE TABLE ๋ฌธ์ ์ฌ์ฉํฉ๋๋ค. ์ด ๋ฌธ์ ์๋ก์ด ํ ์ด๋ธ์ ์ ์ํ๊ณ , ๊ฐ ์ด์ ์ด๋ฆ๊ณผ ๋ฐ์ดํฐ ์ ํ, ์ ์ฝ ์กฐ๊ฑด ๋ฑ์ ์ง์ ํฉ๋๋ค.
- ํ ์ด๋ธ ์ด๋ฆ ๋ฐ ์ด ์ ์: CREATE TABLE ๋ฌธ์์๋ ํ ์ด๋ธ ์ด๋ฆ๊ณผ ๊ฐ ์ด(Column)์ ๋ํ ์ ์๋ฅผ ์ ๊ณตํฉ๋๋ค. ๊ฐ ์ด์ ์ด๋ฆ๊ณผ ๋ฐ์ดํฐ ์ ํ์ ๊ฐ์ง๋ฉฐ, ์ ํ์ ์ผ๋ก ๊ธฐ๋ณธ๊ฐ(Default), NULL ํ์ฉ ์ฌ๋ถ, ๊ณ ์ ์ฑ(UNIQUE) ๋ฑ์ ์ ์ฝ ์กฐ๊ฑด์ ์ง์ ํ ์ ์์ต๋๋ค.
- ์คํค๋ง ์ ํ: ํ ์ด๋ธ์ ์์ฑํ ์คํค๋ง(Schema)๋ฅผ ์ ํํฉ๋๋ค. ์คํค๋ง๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค ๋ด์์ ํ ์ด๋ธ์ ๋ ผ๋ฆฌ์ ์ธ ๊ทธ๋ฃน์ ๋ํ๋ ๋๋ค.
- ์คํ: 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)์๋ ๋ฐ์ดํฐ ์ ํ์ ์ง์ ํด์ผ ํฉ๋๋ค. ๋ฐ์ดํฐ ์ ํ์ ํด๋น ์ด์ด ์ด๋ค ์ข
๋ฅ์ ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ ์ ์๋์ง๋ฅผ ๋ํ๋
๋๋ค. ๐์ด์ ๋ํ ์์ธํ ๋ด์ฉ์ ๋ค์ ํฌ์คํ
์ ์ฐธ๊ณ ํด ์ฃผ์ธ์๐
ํ ์ด๋ธ ์ ๋ณด ์กฐํ(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`;
ํต์ฌ ๋ด์ฉ๐