mysql์ ์ง์ DB์ ํ ์ด๋ธ์ ๋ง๋ค์ด๋ณด๊ณ , ๋ฐ์ดํฐ๋ฅผ ์ฝ์ ํด๋ณด์๐
ํฐ๋ฏธ๋ ์ด๊ณ ,
๋๋ mac ์ฌ์ฉ์์ด๋
$ mysql -u root -p
์
๋ ฅํ๊ธฐ
๊ทธ๋ผ ๋น๋ฐ๋ฒํธ ์
๋ ฅ์ฐฝ์ด ๋ฐํ
๋ฐ, ์ด ๋น๋ฐ๋ฒํธ๋ ๋ด๊ฐ ์ด๊ธฐ์ mysql์ค์น ํ ์ค์ ํ
๋น๋ฐ๋ฒํธ๋ค!
CREATE DATABASE my_favurite_drinks;
# ๋ฐ์ดํฐ๋ฒ ์ด์ค ์์ฑํ๊ธฐ
SHOW DATABASES;
# ํ์ฌ mysql์ ์ ์ฅ๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค ๋ณด์ฌ์ค
$ USE my_favourite_drinks;
# ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ ๊ทผํ ๊ฒ
$ SHOW tables;
# ๋ด DB์์ ์๋ ํ
์ด๋ธ ๋ณด์ฌ์ค
์ง๊ธ์ ํ
์ด๋ธ ์ ๋ณด๊ฐ ์๊ธฐ ๋๋ฌธ์, ๋ณด์ฌ์ง๋ ๊ฒ์ด ์๋ค.
์๋ฅผ ๋ค์ด 1๊ฐ์ ์๋ฃ์ ์๋ก ๊ฒน์น์ง ์๊ฒ ์ถ์ฒ๋๋ ์ํ๋ค์ด ์ฌ๋ฌ๊ฐ ์๋ค๊ณ ๊ฐ์ ํด๋ณด์.
ex. ์๋ฉ๋ฆฌ์นด๋
ธ : ์ค์ฝ, ์ด์ฝ๋ / ๋ฐ๋๋ผ๋ผ๋ผ : ์นด์คํ
๋ผ, ์๊ฑฐํธ
์ด๋ 1:N์ ๊ด๊ณ์ด๋ค.
์์ ๊ธฐ์ค์ผ๋ก ํ
์ด๋ธ์ ๋ง๋ค์ด๋ณด์
์ฐ์ , ์๋ฃ ์ ๋ณด๋ฅผ ๋ด๊ธฐ ์ํ ํ ์ด๋ธ์ ๋ง๋ ๋ค.
CREATE TABLE drinks
(
id INT NOT NULL AUTO_INCREMENT, # id๋ null์ ํ๋ฝํ์ง ์์ผ๋ฉฐ, ์๋์ผ๋ก ์ฆ๊ฐํ๋ pk๊ฐ
product VARCHAR(100) NOT NULL, #product์นผ๋ผ์ varcharํ์์ด๋ฉฐ ์ต๋ 100์์ด๋ค
PRIMARY KEY(id) # pk๊ฐ์ id ์ด๋ค.
);
์ ๋ง๋ค์๋์ง ํ์ธํด๋ณด๋ ค๋ฉด?!
DESC drinks
์ ๋ง๋ค์ด์ก๋ค! ๊ทธ๋ผ ์ด์ , ๊ฐ๊ฐ์ ์๋ฃ์ ์ถ์ฒ๋๋ ์ถ์ฒ์ํ ํ ์ด๋ธ์ ๋ง๋ค์
CREATE TABLE recommend
(
id INT NOT NULL AUTO_INCREMENT, # id๋ null์ ํ๋ฝํ์ง ์์ผ๋ฉฐ, ์๋์ผ๋ก ์ฆ๊ฐํ๋ pk๊ฐ
recommend VARCHAR(100) NOT NULL, #product์นผ๋ผ์ varcharํ์์ด๋ฉฐ ์ต๋ 100์์ด๋ค
product_id INT,
PRIMARY KEY (id), # pk๊ฐ์ id ์ด๋ค.
FOREIGN KEY (product_id) REFERENCES drinks (id)
#1:n์ ๊ด๊ณ์ด๊ธฐ ๋๋ฌธ์ foreign ํค ์ค์ ์ ํด์ค์ผํ๋ค
#product_id๋ drinksํ
์ด๋ธ์ id๋ฅผ ์ฐธ์กฐํ๋ค
);
์ ๋ง๋ค์ด์ก๋์ง ํ์ธํด๋ณด์!
desc recommend
๋ด๊ฐ foreignํค๋ก ์ค์ ํ product_id์ key๋ถ๋ถ์ ๋ณด๋ฉด, MUL
์ด๋ผ๊ณ ๋์ด ์๋ค.
๋ค๋ฅธ ํ
์ด๋ธ์ ๊ธฐ๋ณธ ํค๋ฅผ ์ฐธ์กฐํ๋ ์ธ๋ํค๋ ์ด๋ ๊ฒ MUL
์ด๋ผ๊ณ ํ์๋๋ค
(multiple
)
DQL : ๋ฐ์ดํฐ๋ฅผ ์์ฒญํ ๋ ์ฌ์ฉ๋๋ SQ๋ฌธ์ด๋ค.
ํ๋ก ํธ/๋ฐฑ์๋ ๊ฐ์ ์ํต์ ์ํ api๊ตฌํ ์ DB์ ์ ์ฅ๋ ๋ฐ์ดํฐ๋ฅผ ์ฟผ๋ฆฌํด์ ๊ฐ์ ธ์จ ๋ฐ์ดํฐ๋ฅผ ์๋ต์ผ๋ก ๋ณด๋ด์ฃผ๋ ๊ฒฝ์ฐ๊ฐ ๋ง๋ค
๋ฐ์ดํฐ๋ฅผ ์กฐํ ํ๊ธฐ ์ , ์์์ ์์ฑํ ํ ์ด๋ธ์ ๋ฐ์ดํฐ๋ฅผ ๋ฃ์ด๋ณด์
# drinks ํ
์ด๋ธ
INSERT INTO drinks (product) VALUES('americano');
INSERT INTO drinks (product) VALUES('latte');
INSERT INTO drinks (product) VALUES('Grapefruit Black Tea');
# recommend ํ
์ด๋ธ
INSERT INTO recommend (recommend, description, product_id) VALUES ('chocolate', '๋ฌ์ฝคํ ์ด์ฝ๋ฆฟ', 1);
INSERT INTO recommend (recommend, description, product_id) VALUES ('scone', '๊ฐ ๊ตฌ์ด ์ค์ฝ', 1);
INSERT INTO recommend (recommend, description, product_id) VALUES ('castella', 'ํญ์ ํญ์ ํ ์นด์คํ
๋ผ', 2);
INSERT INTO recommend (recommend, description, product_id) VALUES ('cake', '์ํฌ๋ฆผ ์ผ์ดํฌ', 3);
INSERT INTO recommend (recommend, description, product_id) VALUES ('sandwich', '์๊ทธ ์๋์์น', 3);
SELECT * FROM drinks;
SELECT * FROM recommend;
์ค๊ฐ์ ๋ฐ์ดํฐ๋ฅผ ์ญ์ ํ๊ณ ๋ค์ ๋ฃ๋ ๋ฐ๋์ recommend id ๊ฐ 6๋ถํฐ ์์ํ๋ค๐
๋ง์ฝ recommendํ
์ด๋ธ์์ recommend์นผ๋ผ๋ง ๋ณด๊ณ ์ถ๋ค๋ฉด?
SELECT recommend.recommend FROM recommend
WHERE
๋ฌธ์ผ๋ก ์กฐ๊ฑด์ ๊ฑธ ์๋ ์๋ค.
์ค์ฝ์ ์ค๋ช
๋ง ๋ณด๊ณ ์ ํ๋ค๋ฉด,
SELECT recommend.description FROM recommend WHERE recommend.recommend='scone';
like๋ฌธ์ ํน์๋ฌธ์๋ฅผ ์ฌ์ฉํด์ ๋ฌธ์์ด์ ๊ฒ์ํ๋ค.
ex. ๋
ธ๋๊ฐ์ฌ์ ์ผ๋ถ๋ถ์ผ๋ก ๋
ธ๋๋ฅผ ์ฐพ์ผ๋ ค๊ณ ํ ๋!
ex. ๋ฌด์จ ์๋์์น์ธ์ง ๊ธฐ์ต์ด ์๋์ '์๋์์น' ๊ฒ์ ํ ์ฐพ์ผ๋ ค๊ณ ํ ๋
SELECT recommend.recommend, recommend.description FROM recommend WHERE recommend.description LIKE '%์๋์์น%';
๊ทธ๋ผ ์๋์์น๊ฐ ํฌํจ๋ ์ํ์ด ๋์จ๋ค.
SELECT recommend.recommend, recommend.description FROM recommend WHERE recommend.recommend LIKE 'cho%';
# recommend.recommend ์ ๊ฐ์ด cho ๋ก ์์ํ๋ฉด ์ฟผ๋ฆฌ๋ฌธ์ ์ํด ๋ฐ์ดํฐ๊ฐ ์กฐํ๋ฉ๋๋ค.
SELECT recommend.recommend, recommend.description FROM recommend WHERE recommend.description LIKE '%์ผ์ดํฌ';
# recommend.description์ ๊ฐ์ด ์ผ์ดํฌ ๋ก ๋๋๋ฉด ์ฟผ๋ฆฌ๋ฌธ์ ์ํด ๋ฐ์ดํฐ๊ฐ ์กฐํ๋ฉ๋๋ค.
๊ต์งํฉ, ์ฆ ์ฐ๊ฒฐ์ฑ์ด ์๋ ๋ถ๋ถ์ ๋ ๊ฐ์ ํ ์ด๋ธ์ ๊ฒฐํฉํ ์ ์๋ค.
SELECT drinks.product, recommend.recommend, recommend.description
# ํ์ํ ์นผ๋ผ์ ๋์ด ํฉ๋๋ค.
FROM drinks # drinks ํ
์ด๋ธ์
JOIN recommend # recommend ํ
์ด๋ธ์ ๊ฒฐํฉ์ํต๋๋ค.
ON drinks.id = recommend.product_id; # ON ๋ค์๋ ๊ต์งํฉ, ์ฆ ์ฐ๊ฒฐ์ฑ์ด ์๋ ๋ถ๋ถ(์นผ๋ผ)์ ์ ์ด์ค๋๋ค.
SELECT drinks.id, drinks.name, recommend.recommend
FROM drinks
JOIN recommend
ON drins.id = recommend.product_id
WHERE drinks.product = 'americano';