
π― μ€κ³ν DBλ₯Ό μ§μ μμ±ν΄λ³΄κ³ , μΈλ ν€λ₯Ό μ€μ νμ¬ ν μ΄λΈμ μ°κ²°ν©λλ€.
DB μμ±μ μν΄ ν°λ―Έλμ ν΅ν΄ mariadbμ μ μν΄μ€λλ€.

docker exec -it mariadb /bin/bash
mariadb -u root -p
λΉλ°λ²νΈ μ λ ₯
-- λ°μ΄ν°λ² μ΄μ€ μμ±
CREATE DATABASE Board;
-- λ°μ΄ν°λ² μ΄μ€ μ¬μ©
USE Board;

-- ν
μ΄λΈ μμ±
CREATE TABLE users
(
id INT NOT NULL AUTO_INCREMENT,
name VARCHAR(30) NOT NULL,
password VARCHAR(30) NOT NULL,
founding_date DATE,
phone_num VARCHAR(11),
PRIMARY KEY (id)
);
-- ν
μ΄λΈ ꡬ쑰 νμΈ
DESC users;

-- μ¬μ©μ λ°μ΄ν° μ½μ
INSERT INTO users (name, password, founding_date)
VALUES ("λ―Όμμ¬", 1234, "1966-05-19");
-- ν
μ΄λΈ λͺ¨λ λ°μ΄ν° μ‘°ν
SELECT * FROM users;

-- κ²μκΈ ν
μ΄λΈ μμ±
CREATE TABLE posts
(
id INT NOT NULL AUTO_INCREMENT,
author VARCHAR(100) NOT NULL,
subscriber INT,
created_at TIMESTAMP DEFAULT NOW(),
PRIMARY KEY (id)
);
-- κ²μκΈ ν
μ΄λΈ ꡬ쑰 νμΈ
DESC posts;


-- κ²μκΈ ν
μ΄λΈ λ°μ΄ν° μ½μ
INSERT INTO posts (author, subscriber)
VALUES ("κΉν", 35764);
-- ν
μ΄λΈ λͺ¨λ λ°μ΄ν° μ‘°ν
SELECT * FROM posts;

-- κ²μκΈ ν
μ΄λΈμ μμ μΌμ μΆκ°
ALTER TABLE posts ADD COLUMN updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
ON UPDATE CURRENT_TIMESTAMP;
-- κ²μκΈ ν
μ΄λΈ μ 체 μ‘°ν
SELECT * FROM posts;

-- κ²μκΈ ν
μ΄λΈ μκ° μ΄λ¦ μμ
UPDATE posts
SET author = "μ λ건"
WHERE id = 1;
-- κ²μκΈ ν
μ΄λΈ μ 체 μ‘°ν
SELECT * FROM posts;


-- κ²μκΈ ν
μ΄λΈμ user_id μΉΌλΌ μΆκ°
ALTER TABLE posts
ADD COLUMN user_id INT;
-- user_idμ μΈλ ν€(FK) μ€μ
ALTER TABLE posts
ADD FOREIGN KEY(user_id)
REFERENCES users(id);
-- κ²μκΈ ν
μ΄λΈ μ 체 λ°μ΄ν° νμΈ
SELECT * FROM posts;
-- ν
μ΄λΈ ꡬ쑰 νμΈ
DESC posts;

π€
NOT NULLκ³ΌDefaultμ μ°¨μ΄λ 무μμΌκΉ?
NOT NULL
- ν΄λΉ μΉΌλΌμ λ°λμ κ°μ΄ μμ΄μΌ νλ€λ κ²μ λνλ λλ€.
NULLκ°μ μ§μ λ£λ κ²λ λΆκ°λ₯ν©λλ€.
Default
- κ°μ΄ λ€μ΄μ€μ§ μμ κ²½μ°, 미리 μ€μ λ κΈ°λ³Έκ°μΌλ‘ μλ μ λ ₯ν©λλ€.
NULLμ μ§μ μ λ ₯νλ©΄NULLμ΄ μ μ₯λ©λλ€.
INSERT INTO posts (author, user_id)
VALUES ("μ΅μ¬μ", 1);

SELECT posts.id, author, subscriber, created_at, updated_at, name, password, founding_date, phone_num
FROM posts
LEFT JOIN users ON posts.user_id = users.id;

β¨ μΆκ°λ‘ μλ©΄ μ’μ μ§μ!
auto_increment_lock_modeνΈλμμ λ‘€λ°±μ΄λ
DELETEνINSERTν κ²½μ°AUTO_INCREMENTκ°μ΄ 건λλ°λ νμμ΄ λ°μν μ μμ΅λλ€.+----+---------+ | id | name | +----+---------+ | 1 | λ―Όμμ¬ | | 2 | λ¬Ένλλ€ | | 4 | κΉμμ¬ | -- π¨ 3μ 건λλ°κ³ 4κ° λ¨! | 5 | λΆμ΄μμΌ | +----+---------+SET GLOBAL innodb_autoinc_lock_mode = 0;μ΄λ₯Ό λ°©μ§νκΈ° μν΄ μμ κ°μ λͺ λ Ήμ΄λ₯Ό μ¬μ©νμ¬ μλͺ»λ
INSERTλ¬Έμ΄idκ°μ μν₯μ λ―ΈμΉμ§ μλλ‘ μ μ΄ν μ μμ΅λλ€.
DATE
YYYY-MM-DDDATETIME
YYYY-MM-DD HH:MM:SSTIME
HH:MM:SSTIMESTAMP
λ μ§μ μκ°μ μ μ₯ν©λλ€.
νμ: YYYY-MM-DD HH:MM:SS
β¨ μμ€ν μκ°λ μ 보μ λ§κ² μλ μ μ₯ν©λλ€.
UTC κΈ°μ€μΌλ‘ λ°μ΄ν°λ₯Ό μ μ₯ν ν, μ‘°νν λ μμ€ν μκ°λ(νκ΅ μκ° λ±)μ λ§κ² λ³ννμ¬ μΆλ ₯ν©λλ€.
TIMESTAMPμκ°λ μ μ₯ λ°©λ²UTC (Coordinated Universal Time) : μΈκ³ νμ€ μκ°
KST (Korea Standard Time) : νκ΅ νμ€ μκ° ( UTC + 9μκ° )ex. μ€ν 3μ(KST) λ°μ΄ν°λ₯Ό μ μ₯νλ€λ©΄ UTC κΈ°μ€μΌλ‘λ μ€μ 6μλ‘ μ μ₯λ©λλ€.
κ΄κ³ν λ°μ΄ν°λ² μ΄μ€μμ λ°μ΄ν°λ₯Ό λ 립μ μΈ ν μ΄λΈλ‘ λΆλ¦¬νκ³ , λ€μ μΈλ ν€μ μ‘°μΈμ νμ©ν΄ μ°κ²°νλ κ³Όμ μ μ§μ μ€μ΅νλ©΄μ λ°μ΄ν° κ°μ μ°κ΄μ±μ μ€κ³νλ κ²μ΄ μΌλ§λ μ€μνμ§ κΉ¨λ¬μμ΅λλ€.