๋ณธ ํฌ์คํ ์ ํ๋ก๊ทธ๋๋จธ์ค ๋ฏธ๋ ๋ฐ๋ธ ์ฝ์ค๋ฅผ ๊ณต๋ถํ๋ฉฐ
ํ์ต์ ๊ธฐ๋กํ๊ธฐ ์ํ ๋ชฉ์ ์ผ๋ก ์์ฑ๋ ๊ธ์ ๋๋ค.
๋จผ์ , CREATE๋ฌธ
์ผ๋ก
์ค์ต์ ํ์ํ prod.vitalํ
์ด๋ธ
๊ณผ prod.alertํ
์ด๋ธ
์ ์์ฑํ๋ค.
CREATE TABLE prod.vital(
user_id int NOT NULL,
vital_id int,
date timestamp NOT NULL,
weight int NOT NULL,
primary key(vital_id)
);
PK
๋ vital_id
CREATE TABLE prod.alert (
alert_id int,
vital_id int,
alert_type varchar(32),
date timestamp,
user_id int,
primary key(alert_id)
);
PK
๋ alert_id
INSERT๋ ๋ ์ฝ๋๋ฅผ ์ถ๊ฐํ๋ ๋ช ๋ น์ด์ด๋ค.
INSERT๋ฅผ ์ฌ์ฉํ๋ ๊ตฌ์ฒด์ ์ธ ์๋ก ์ ๊ทํ์ ์ ๋ณด ์ ์ฅ์ด ์๋ค.
์ฌ์ดํธ์ ์ ๊ท ํ์๊ฐ์ ์ด ๋ฐ์ํ์ ๋,
๊ฐ๋ฐ์๋ ์ ๊ท ํ์์ ๋ณด ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ๊ธฐ ์ํด
INSERT ๋ช ๋ น์ด๋ฅผ ์ฌ์ฉํด ๋ฐ์ดํฐ๋ฅผ ์ถ๊ฐํ ์ ์์ ๊ฒ์ด๋ค.
INSERT INTO prod.vital(user_id, vital_id, date, weight) VALUES(100, 1, '2020-01-01', 75);
INSERT INTO prod.vital(user_id, vital_id, date, weight) VALUES(100, 1, '2020-01-02', 78);
INSERT INTO prod.vital(user_id, vital_id, date, weight) VALUES(100, 1, '2020-01-01', 90);
INSERT INTO prod.vital(user_id, vital_id, date, weight) VALUES(100, 1, '2020-01-02', 95);
INSERT INTO prod.vital(user_id, vital_id, date, weight) VALUES(999, 5, '2020-01-02', -1); -- weight ํ๋์ ์์๊ฐ์ด ๋ค์ด๊ฐ๋ค
INSERT INTO prod.vital(user_id, vital_id, date, weight) VALUES(999, 5, '2020-01-02', 10); -- primery key๋ก ์ง์ ๋ ํ๋์ ๊ฐ์ด ์ค๋ณต๋๋ค.
INTSERT์ ํ์์ ์ ์ฝ๋์ ๊ฐ๋ค. ์ ๋ ฅํ ํ๋ ๊ฐ์ ๊ฐ์ง ๋ ์ฝ๋๊ฐ ํ๋์ฉ ์ถ๊ฐ๋๋ค.
๋จ, 6๋ฒ ์งธ ์ฝ๋๋ ์๋ฌ๊ฐ ์ถ๋ ฅ๋๋ค. RDBMS๊ฐ PK์ ์ ์ผ์ฑ์ ๋ณด์ฅํ๊ธฐ ๋๋ฌธ์ด๋ค.
INSERT INTO prod.vital(user_id, vital_id, date, wight) VALUES(1, 4, '2020-01-02', 101);
INSERT INTO prod.vital(user_id, vital_id, date, wight) VALUES(2, NULL, '2020-01-04', 100);
INSERT INTO prod.vital(user_id, vital_id, date, wight) VALUES(3, NULL, '2020-01-04', 101);
SELECT * FROM prod.alert WHERE vital_id = NULL;
IS NULL
์ฐ์ฐ์ผ๋ก ์งํํด์ผ ํ๋ค.IS NOT NULL
์ฐ์ฐ์ ์ฌ์ฉํ๋ฉด ๋๋ค.SELECT * FROM prod.alert WHERE vital_id IS NOT NULL;
DELETE๋ ํ
์ด๋ธ์์ ์กฐ๊ฑด์ ๋ฐ๋ผ ๋ ์ฝ๋๋ฅผ ์ญ์ ํ๋ ๋ช
๋ น์ด์ด๋ค.
๋จ, ๋ชจ๋ ๋ ์ฝ๋๋ฅผ ์ญ์ ํ๋๋ผ๋ ํ
์ด๋ธ์ ๊ณ์ ์กด์ฌํ๋ค.
์ฐจ์ด์
DELETE FROM์ ์กฐ๊ฑด์ ์ฃผ๊ณ ์ตํต์ฑ์๊ฒ ํน์ ๋ ์ฝ๋๋ฅผ ์ญ์ ํ ์ ์๋ค.
TRUNCATE๋ ์กฐ๊ฑด ์์ด ๋ชจ๋ ๋ ์ฝ๋๋ฅผ ์ญ์ ํ๋ค. ์๋๊ฐ ๋น ๋ฅด์ง๋ง
ํธ๋์ญ์
์ฌ์ฉ์ ๋กค๋ฐฑ์ด ๋ถ๊ฐ๋ฅํ๋ค.
๊ณตํต์
์์
DELETE FROM prod.vital WHERE weight <= 0;
DELETE
์กฐ๊ฑด์ผ๋ก weightํ๋
๊ฐ 0๋ณด๋ค ์๊ฑฐ๋ ๊ฐ์ ๊ฒฝ์ฐ๋ง ์ญ์ ๋ฅผ ๊ฑธ์๋ค.prod.vital ํ
์ด๋ธ
์ ์ถ๊ฐํ๋ 5๋ฒ์งธ ๋ ์ฝ๋์ธINSERT INTO prod.vital(user_id, vital_id, date, wight) VALUES(999, 5, '2020-01-02', -1);
-- ์ด ๋ ์ฝ๋๋ ์ญ์ ๋๋ค.
์ถ๊ฐ๋ก, ์ฌ์ค ์ ์์ ์
DELETE FROM prod.vital WHERE weight <= 0;
์ฝ๋๋ MySQL์์ ์ง์ ์คํ์ํค๋ฉด ์๋ฌ๊ฐ ๋ฐ์ํ๋ค.
MySQL์ ๊ธฐ๋ณธ ๋์ ๋ชจ๋์ธ safe update mode์์๋
DELETE
, UPDATE
๋ฅผ ํ ๋ WHERE์ (์กฐ๊ฑด์ )
์ ๋ฐ๋์ PK๊ฐ(ํค๊ฐ)
์ ์ด์ฉํด์ผํ๋ค.
๊ฒ๋ค๊ฐ ํ๋์ ๋ ์ฝ๋๋ง DELETE, UPDATEํ๋๋ก ์ค์ ์ด ๋์ด์๊ธฐ ๋๋ฌธ์
๋ค์์ ๋ ์ฝ๋๊ฐ DELETE
, UPDATE
ํ๋ sql์ง์๋ฅผ ์คํํ๋ค๋ฉด
์์ ํด๋น ์ฝ๋์ ์คํ์ ๋ง์๋ฒ๋ฆฐ๋ค.
๋ฐ๋ผ์ ์ง์๋ฅผ ์คํํ๊ธฐ ์ํด์๋ vital_id(PK)
๋ฅผ ์ฌ์ฉํ ๋ค์๊ณผ ๊ฐ์ ์ฝ๋๋ฅผ ์ฌ์ฉํด์ผ ํ๋ค.
DELETE FROM prod.vital WHERE vital_id = 5;
๋ง์ฝ safe mode๋ฅผ ํด์ ํ๊ณ ์ถ๋ค๋ฉด ๋ค์ ์ฝ๋๋ฅผ ์คํํ๋ฉด ๋๋ค.
SET SQL_SAFE_UPDATES = 0; -- 0 : sefe update mode ํด์ , 1: safe update mode ์ค์
๐ ์ํฌ๋ฒค์น๋ก ํด์ ํ๋ ๋ฐฉ๋ฒ
UPDATE๋ ์ด๋ฏธ ์กด์ฌํ๋ ํน์ ๋ ์ฝ๋์ ํ๋ ๊ฐ์ ์์ ํ๋ ๋ช ๋ น์ด์ด๋ค.
์์ ๋ฅผ ํตํด ์์๋ณด์.
๋ค์์ vital_id (PK)
๊ฐ 4์ธ ๋ ์ฝ๋์ weight
๋ฅผ 92๋ก ๋ณ๊ฒฝํ๋ ์ง์์ด๋ค.
UPDATE prod.vital
SET weight = 92
WHERE vital_id = 4;
๋ง์ฝ WHERE๋ก ์กฐ๊ฑด์ ์ฃผ์ง ์๋๋ค๋ฉด prod.vitalํ
์ด๋ธ
์ ๋ชจ๋ weightํ๋
์ ๊ฐ์ด 92๋ก ๋ฐ๋๋ค.
๋ฐ๋ก ์ด๋ฐ ๊ฒฝ์ฐ์ PK
๊ฐ ์ ์ฉํ๊ฒ ์ฐ์ธ๋ค.
PK
๋ ํ
์ด๋ธ์ ์กด์ฌํ๋ ํน์ ๋ ์ฝ๋๋ฅผ ์ ์ผํ๊ฒ ์ง์นญํ ์ ์๊ธฐ ๋๋ฌธ์ด๋ค.