๋ฐ์ดํฐ ์กฐ์์ธ์ด, ํ ์ด๋ธ์ ๊ฐ์
์ฝ์ํ๊ฑฐ๋์์ ํ๊ฑฐ๋์ญ์ ํ๋ (๋ฐ์ดํฐ๋ฒ ์ด์ค ๋ด์ ๋ฐ์ดํฐ๋ฅผ ์กฐ์ํ๋๋ฐ ์ฌ์ฉํ๋) SQL์ ํ ๋ถ๋ถ์ด๋ค.
์๋ก์ด ํ์
์ถ๊ฐํ๋ ๊ตฌ๋ฌธ์ด๋ฉฐ, ํ ์ด๋ธ์ํ์ ์๊ฐ์ฆ๊ฐํ๋ค.
INSERT
INTO tbl_menu
VALUES
(
NULL, '๋ฐ๋๋ํด์ฅ๊ตญ'
, 8500, 4
, 'Y'
);
โก๏ธ MULTI INSERT
INSERT
INTO tbl_menu
VALUES
(null, '์ฐธ์น๋ง์์ด์คํฌ๋ฆผ', 1700, 12, 'Y'),
(null, '๋ฉธ์น๋ง์์ด์คํฌ๋ฆผ', 1500, 11, 'Y'),
(null, '์์์ง๋ง์ปคํผ', 2500, 8, 'Y');
ํ ์ด๋ธ์ ๊ธฐ๋ก๋ ์ปฌ๋ผ์ ๊ฐ์
์์ ํ๋ ๊ตฌ๋ฌธ์ด๋ฉฐ, ํ ์ด๋ธ์์ ์ฒด ํ ๊ฐฏ์๋๋ณํ๊ฐ ์๋ค.
SELECT
menu_code
, category_code
FROM tbl_menu
WHERE menu_name = 'ํ์ธ์ ํํ';
โก๏ธ SUBQUERY๋ฅผ ํ์ฉํ ์๋ ์๋ค.
๋ค๋ง MySQL์ Oracle๊ณผ ๋ฌ๋ฆฌ update๋ delete ์ ์๊ธฐ ์์ ํ ์ด๋ธ์ ๋ฐ์ดํฐ๋ฅผ ์ฌ์ฉ ์ 1093 ์๋ฌ๊ฐ ๋ฐ์ํ๋ค.
UPDATE tbl_menu
SET category_code = 6
WHERE menu_code = (SELECT menu_code
FROM tbl_menu
WHERE menu_name = 'ํ์ธ์ ํํ');
ํ ์ด๋ธ์ ํ์
์ญ์ ํ๋ ๊ตฌ๋ฌธ์ด๋ฉฐ, ํ ์ด๋ธ์ํ์ ๊ฐฏ์๊ฐ์ค์ด๋ ๋ค.
โก๏ธ LIMIT์ ํ์ฉํ ํ ์ญ์ (offset ์ง์ ์ ์๋จ)
DELETE FROM tbl_menu
ORDER BY menu_price
LIMIT 2;
โก๏ธ WHERE์ ์ ํ์ฉํ ๋จ์ผ ํ ์ญ์
DELETE
FROM tbl_menu
WHERE menu_code = 24;
โก๏ธ ํด๋น ํ
์ด๋ธ ์ ์ฒด ํ ์ญ์
DELETE FROM tbl_menu;
-- (๊ฒฝ๊ณ ๋ฌธ๊ตฌ๋ฅผ ์ ๋์ฐ๊ณ ์ถ๋ค๋ฉด)
DELETE FROM tbl_menu WHERE 1 = 1;
INSERT ์ PRIMARY KEY ๋๋ UNIQUE KEY๊ฐ ์ถฉ๋์ด ๋ฐ์ํ ์ ์๋ค๋ฉด
REPLACE๋ฅผ ํตํด ์ค๋ณต ๋ ๋ฐ์ดํฐ๋ฅผ ๋ฎ์ด ์ธ ์ ์๋ค.
-- INSERT INTO tbl_menu VALUES (17, '์ฐธ๊ธฐ๋ฆ์์ฃผ', 5000, 10, 'Y'); -- ์๋ฌ ๋ฐ์
REPLACE INTO tbl_menu VALUES (17, '์ฐธ๊ธฐ๋ฆ์์ฃผ', 5000, 10, 'Y');
โก๏ธ INTO๋ ์๋ต ๊ฐ๋ฅ ํ๋ค.
REPLACE tbl_menu VALUES (17, '์ฐธ๊ธฐ๋ฆ์์ฃผ', 6500, 10, 'Y');
โก๏ธ UPDATE ์ WHERE ๊ตฌ๋ฌธ ์์ด UPDATE๊ฐ ๊ฐ๋ฅํ๋ค.
๐จ DML ์์ ์ด ๋๋๋ฉด db_script๋ฅผ ๋ค์ ์ ์ฒด ์คํํด์ ํ ์ด๋ธ ๋ฐ ๋ฐ์ดํฐ ์ ๋ณด๋ฅผ ์ด๊ธฐํ ํ๋ค.
๐ก
TRANSACTION์ ๋ฐ์ดํฐ ๋ฒ ์ด์ค์์ ํ ๋ฒ์ ์ํ๋๋ ์์ ์ ๋จ์์ด๋ค.์์, ์งํ, ์ข ๋ฃ ๋จ๊ณ๋ฅผ ๊ฐ์ง๋ฉฐ ๋ง์ฝ ์ค๊ฐ์ ์ค๋ฅ๊ฐ ๋ฐ์ํ๋ฉด ๋กค๋ฐฑ(์์ ์ด์ ๋จ๊ณ๋ก ๋๋๋ฆฌ๋ ์์ )์ ์ํํ๊ณ ๋ฐ์ดํฐ ๋ฒ ์ด์ค์ ์ ๋๋ก ๋ฐ์ํ๊ธฐ ์ํด์๋ ์ปค๋ฐ(์ดํ ๋กค๋ฐฑ์ด ๋์ง ์์)์ ์งํํ๋ค.
MySQL์ ๊ธฐ๋ณธ์ ์ผ๋ก ์๋ ์ปค๋ฐ ์ค์ ์ด ๋์ด ์์ด(๋กค๋ฐฑ์ด ์๋จ). ๋กค๋ฐฑ์ ํ๊ธฐ ์ํด์๋ ์๋ ์ปค๋ฐ ์ค์ ์ ํด์ ํด ์ฃผ์ด์ผ ํ๋ค.
MySQL์ ๊ธฐ๋ณธ์ ์ผ๋ก commit์ด ์๋์ผ๋ก ๋๋ฏ๋ก ์๋์ผ๋ก ์กฐ์ ํ๊ณ ์ถ๋ค๋ฉด autocommit ์ค์ ์ ๋ฐ๊ฟ ์ฃผ์ด์ผ ํ๋ค.
โก๏ธ autocommit ํ์ฑํ
SET autocommit = 1;
-- ๋๋
SET autocommit = ON;
โก๏ธ autocommit ๋นํ์ฑํ
SET autocommit = 0;
-- ๋๋
SET autocommit = OFF;
START TRANSACTION ๊ตฌ๋ฌธ์ ์์ฑํ๊ณ DML ์์
์ํ ํ COMMIT ๋๋ ROLLBACK์ ํ๋ฉด ๋๋ค.
COMMIT ์ดํ์๋ ROLLBACK์ ํด๋ ROLLBACK์ด ์ ์ฉ๋์ง ์๋๋ค.
START TRANSACTION;
SELECT * FROM tbl_menu;
INSERT INTO tbl_menu VALUES (null, '๋ฐ๋๋ํด์ฅ๊ตญ', 8500, 4, 'Y');
UPDATE tbl_menu SET menu_name = '์์ ๋ ๋ฉ๋ด' WHERE menu_code = 5;
DELETE FROM tbl_menu WHERE menu_code = 7;
-- COMMIT;
ROLLBACK;
์คํ๊ฒฐ๊ณผ