SQL ๊ธฐ๋ณธ ๋ช ๋ น์ด
1.
๋ฐ์ดํฐ ์ ์์ด(DDL) : ํ
์ด๋ธ ์์ฑ, ๋ณ๊ฒฝ, ์ญ์
2.
๋ฐ์ดํฐ ์กฐ์์ด(DML) : ๋ฐ์ดํฐ ์ฝ์
, ์กฐํ, ์์ , ์ญ์ โ ์ ์ผ ๋ง์ด ์ธ ๋ช
๋ น์ด
3.
๋ฐ์ดํฐ ์ ์ด์ด(DCL) : ๋ฐ์ดํฐ ์ ๊ทผ ๊ถํ ๋ถ์ฌ, ์ ๊ฑฐ
4.
ํธ๋์ ์
์ ์ด์ด(TCL) : ๋ฐ์ดํฐ ์กฐ์์ด(DML) ๋ช
๋ น์ด ์คํ, ์ทจ์, ์์์ ์ฅ
๋ฐ์ดํฐ ์ ์์ด(DDL; Data Definition Language)
CREATE : ์คํค๋ง, ๋๋ฉ์ธ, ํ
์ด๋ธ, ๋ทฐ, ์ธ๋ฑ์ค ์์ฑ(์ ์)
ALTER : ํ
์ด๋ธ์ ๋ํ ์ ์๋ฅผ ๋ณ๊ฒฝํ๋ ๋ฐ ์ฌ์ฉ
DROP : ์คํค๋ง, ๋๋ฉ์ธ, ํ
์ด๋ธ, ๋ทฐ, ์ธ๋ฑ์ค ์ญ์
1.
ํ
์ด๋ธ ์์ฑ(CREATE)
2.
์ด ์ถ๊ฐ(ALTER)
3.
์ด ๋ฐ์ดํฐ ํ์
๋ณ๊ฒฝ(ALTER)
4.
ํ
์ด๋ธ ๋ช
๋ณ๊ฒฝ(ALTER)
5.
ํ
์ด๋ธ ์ญ์ (DROP)
์ปฌ๋ผ์ ๋ฐ์ดํฐ ํ์
์ปฌ๋ผ์ ์ ์ฝ ์กฐ๊ฑด
/* Practice ๋ฐ์ดํฐ๋ฒ ์ด์ค ์์ฑ */
CREATE DATABASE Practice;
/* Practice ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ฌ์ฉ */
USE Practice;
/* ํ
์ด๋ธ ์์ฑ (Create) */
CREATE TABLE ํ์ํ
์ด๋ธ (
ํ์๋ฒํธ INT PRIMARY KEY,
์ด๋ฆ VARCHAR(20),
๊ฐ์
์ผ์ DATE NOT NULL,
์์ ๋์ BIT
);
/* ํ
์ด๋ธ ์ด ์ถ๊ฐ */
ALTER TABLE ํ์ํ
์ด๋ธ ADD ์ฑ๋ณ VARCHAR(2);
/* ์ด ๋ฐ์ดํฐ ํ์
๋ณ๊ฒฝ */
ALTER TABLE ํ์ํ
์ด๋ธ MODIFY ์ฑ๋ณ VARCHAR(20);
/* ์ด ์ด๋ฆ ๋ณ๊ฒฝ */
ALTER TABLE ํ์ํ
์ด๋ธ CHANGE ์ฑ๋ณ ์ฑ VARCHAR(2);
/* ํ
์ด๋ธ๋ช
๋ณ๊ฒฝ */
ALTER TABLE ํ์ํ
์ด๋ธ RENAME ํ์์ ๋ณด;
/* ํ
์ด๋ธ ์ญ์ */
DROP TABLE ํ์์ ๋ณด;
SQL
๋ณต์ฌ
๋ฐ์ดํฐ ์กฐ์์ด(DML; Data Manipulation Language)
SELECT : ํ
์ด๋ธ์์ ์กฐ๊ฑด์ ๋ง๋ ํ์ ๊ฒ์ํ๋ค
INSERT: ํ
์ด๋ธ์ ์๋ก์ด ํ์ ์ฝ์
DELETE : ํ
์ด๋ธ์์ ์กฐ๊ฑด์ ๋ง๋ ํ์ ์ญ์
UPDATE : ํ
์ด๋ธ์์ ์กฐ๊ฑด์ ๋ง๋ ํ์ ๋ด์ฉ์ ๋ณ๊ฒฝ
DELETE, UPDATE ์, WHERE ์กฐ๊ฑด์ ์ ์ฌ์ฉํด์ ์ํ๋ ํ๋ง ์ญ์ ,๋ณ๊ฒฝํ ์ ์๋ค.
/* Practice ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ฌ์ฉ*/
USE Practice;
/***************ํ
์ด๋ธ ์์ฑ(Create)***************/
/* ํ์ํ
์ด๋ธ ์์ฑ */
CREATE TABLE ํ์ํ
์ด๋ธ (
ํ์๋ฒํธ INT PRIMARY KEY,
์ด๋ฆ VARCHAR(20),
๊ฐ์
์ผ์ DATE NOT NULL,
์์ ๋์ BIT
);
/***************๋ฐ์ดํฐ ์ฝ์
*******************/
INSERT INTO ํ์ํ
์ด๋ธ VALUES (1001, 'ํ๊ธธ๋', '2020-01-02', 1);
INSERT INTO ํ์ํ
์ด๋ธ VALUES (1002, '์ด์์ ', '2020-01-03', 0);
INSERT INTO ํ์ํ
์ด๋ธ VALUES (1003, '์ฅ์์ค', '2020-01-04', 1);
INSERT INTO ํ์ํ
์ด๋ธ VALUES (1004, '์ ๊ด์', '2020-01-05', 0);
/* ํ์ํ
์ด๋ธ ์กฐํ */
SELECT * FROM ํ์ํ
์ด๋ธ;
/***************์กฐ๊ฑด ์๋ฐ*******************/
/* PRIMARY KEY ์ ์ฝ ์กฐ๊ฑด ์๋ฐ */
INSERT INTO ํ์ํ
์ด๋ธ VALUES (1004, '์ฅ๋ณด๊ณ ', '2020-01-06', 0);
/* NOT NULL ์ ์ฝ ์กฐ๊ฑด ์๋ฐ */
INSERT INTO ํ์ํ
์ด๋ธ VALUES (1005, '์ฅ๋ณด๊ณ ', NULL, 0);
/* ๋ฐ์ดํฐ ํ์
์กฐ๊ฑด ์๋ฐ */
INSERT INTO ํ์ํ
์ด๋ธ VALUES (1005, '์ฅ๋ณด๊ณ ', 1, 0);
/***************๋ฐ์ดํฐ ์กฐํ***************/
/* ๋ชจ๋ ์ด ์กฐํ */
SELECT * FROM ํ์ํ
์ด๋ธ;
/* ํน์ ์ด ์กฐํ */
SELECT ํ์๋ฒํธ, ์ด๋ฆ FROM ํ์ํ
์ด๋ธ;
/* ํน์ ์ด ์ด๋ฆ ๋ณ๊ฒฝํ์ฌ ์กฐํ (์กฐํํ ๋๋ง ์ด๋ฆ ์ด์ ์ฑ๋ช
์ผ๋ก ๋ณ๊ฒฝํด์ ์กฐํ) */
SELECT ํ์๋ฒํธ, ์ด๋ฆ AS ์ฑ๋ช
FROM ํ์ํ
์ด๋ธ;
/***************๋ฐ์ดํฐ ์์ *******************/
/* ๋ชจ๋ ๋ฐ์ดํฐ ์์ */
UPDATE ํ์ํ
์ด๋ธ SET ์์ ๋์ = 0;
/* ํ์ํ
์ด๋ธ ์กฐํ */
SELECT * FROM ํ์ํ
์ด๋ธ;
/* ํน์ ์กฐ๊ฑด ๋ฐ์ดํฐ ์์ */
UPDATE ํ์ํ
์ด๋ธ SET ์์ ๋์ = 1 WHERE ์ด๋ฆ = 'ํ๊ธธ๋';
/* ํ์ํ
์ด๋ธ ์กฐํ */
SELECT * FROM ํ์ํ
์ด๋ธ;
/***************๋ฐ์ดํฐ ์ญ์ *******************/
/* ํน์ ๋ฐ์ดํฐ ์ญ์ */
DELETE FROM ํ์ํ
์ด๋ธ WHERE ์ด๋ฆ = 'ํ๊ธธ๋';
/* ํ์ํ
์ด๋ธ ์กฐํ */
SELECT * FROM ํ์ํ
์ด๋ธ;
/* ๋ชจ๋ ๋ฐ์ดํฐ ์ญ์ */
DELETE FROM ํ์ํ
์ด๋ธ;
/* ํ์ํ
์ด๋ธ ์กฐํ */
SELECT * FROM ํ์ํ
์ด๋ธ;
SQL
๋ณต์ฌ
๋ฐ์ดํฐ ์ ์ด์ด(DCL; Data Control Language)
DBA(๋ฐ์ดํฐ๋ฒ ์ด์ค ๊ด๋ฆฌ์)๊ฐ DB ๊ด๋ฆฌ์ ๊ถํ ๊ด๋ฆฌ๋ฅผ ๋ชฉ์ ์ผ๋ก ์ฌ์ฉ
GRANT : DB์ ์ฌ์ฉ์์๊ฒ ํน์ ์์
์ ๋ํ ๊ถํ ๋ถ์ฌ
REVOKE : ์ฌ์ฉ์์๊ฒ ํน์ ์์
์ ๋ํ ๊ถํ ๋ฐํ
/***************์ฌ์ฉ์ ํ์ธ***************/
/* MYSQL ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ฌ์ฉ */
USE MYSQL;
/* ์ฌ์ฉ์ ํ์ธ */
SELECT *
FROM USER;
/***************์ฌ์ฉ์ ์ถ๊ฐ***************/
/* ์ฌ์ฉ์ ์์ด๋ ๋ฐ ๋น๋ฐ๋ฒํธ ์์ฑ */
CREATE USER 'TEST'@LOCALHOST IDENTIFIED BY 'PASSWORD';
/* ์ฌ์ฉ์ ํ์ธ */
SELECT * FROM USER;
/* ์ฌ์ฉ์ ๋น๋ฐ๋ฒํธ ๋ณ๊ฒฝ */
SET PASSWORD FOR 'TEST'@LOCALHOST = '1234';
/***************๊ถํ ๋ถ์ฌ ๋ฐ ์ ๊ฑฐ***************/
/** ๊ถํ: CREATE, ALTER, DROP, INSERT, DELETE, UPDATE, SELECT ๋ฑ **/
/* ํน์ ๊ถํ ๋ถ์ฌ */
GRANT SELECT, DELETE ON PRACTICE.ํ์ํ
์ด๋ธ TO 'TEST'@LOCALHOST;
/* ํน์ ๊ถํ ์ ๊ฑฐ */
REVOKE DELETE ON PRACTICE.ํ์ํ
์ด๋ธ FROM 'TEST'@LOCALHOST;
/* ๋ชจ๋ ๊ถํ ๋ถ์ฌ */
GRANT ALL ON Practice.ํ์ํ
์ด๋ธ TO 'TEST'@LOCALHOST;
/* ๋ชจ๋ ๊ถํ ์ ๊ฑฐ */
REVOKE ALL ON Practice.ํ์ํ
์ด๋ธ FROM 'TEST'@LOCALHOST;
/***************์ฌ์ฉ์ ์ญ์ ***************/
/* ์ฌ์ฉ์ ์ญ์ */
DROP USER 'TEST'@LOCALHOST;
/* ์ฌ์ฉ์ ํ์ธ */
SELECT * FROM USER;
SQL
๋ณต์ฌ
ํธ๋์ญ์ ์ ์ด์ด(TCL; Transaction Control Language)
โข
ํธ๋์ญ์
์ด๋?
BEGIN ๋ช
๋ น์ด๋ฅผ ์ฌ์ฉํ์ฌ ๋ง๋ ๋ถํ ํ ์ ์๋ SQL ์์
๋จ์๋ฅผ ํธ๋์ญ์
์ด๋ผ๊ณ ํ๋ค.
COMMIT : ๋ชจ๋ ํธ๋์ญ์
์์
์ ์ต์ข
์คํ
ROLLBACK : ๋ชจ๋ ํธ๋์ญ์
์์
์ ๋๋๋ฆผ(์ทจ์)
SAVEPOINT : ํธ๋์ญ์
ํ์ ์์
๋ด์์ ROLLBACK ์ ์ฅ์ ์ ์ง์ ํ๋ ๋ช
๋ น์ด
ํธ๋์ญ์
์์
๊ณผ ์ผ๋ฐ ์์
์ฐจ์ด์ ?
ํธ๋์ญ์
COMMIT ํ๋ ์์ ์ ๋ชจ๋ ์์
๋ค์ด ํ๊บผ๋ฒ์ ์ํ๋๋ ๊ฒ์ด ์๋๋ผ, ์ผ๋ฐ์ ์ธ ๋ช
๋ น์ด์ฒ๋ผ ๋ช
๋ น์ด๊ฐ ์คํ๋๋ฉด ์์
์ด ์ํ๋๋ค.
ํ์ง๋ง ROLLBACK ์ ํ ์ ์๋ค๋ ์ฅ์ ์ผ๋ก ์ฌ์ฉํ๋ ๊ฒ ๊ฐ๋ค.ย
/* Practice ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ฌ์ฉ*/
USE Practice;
/***************ํ
์ด๋ธ ์์ฑ(Create)***************/
/* (ํ์ํ
์ด๋ธ ์กด์ฌํ ์, ํ์ํ
์ด๋ธ ์ญ์ ) */
DROP TABLE ํ์ํ
์ด๋ธ;
/* ํ์ํ
์ด๋ธ ์์ฑ */
CREATE TABLE ํ์ํ
์ด๋ธ (
ํ์๋ฒํธ INT PRIMARY KEY,
์ด๋ฆ VARCHAR(20),
๊ฐ์
์ผ์ DATE NOT NULL,
์์ ๋์ BIT
);
/* ํ์ํ
์ด๋ธ ์กฐํ */
SELECT * FROM ํ์ํ
์ด๋ธ;
/***************BEGIN + ์ทจ์(ROLLBACK)*******************/
/* ํธ๋์ ์
์์ */
BEGIN;
/* ๋ฐ์ดํฐ ์ฝ์
*/
INSERT INTO ํ์ํ
์ด๋ธ VALUES (1001, 'ํ๊ธธ๋', '2020-01-02', 1);
/* ํ์ํ
์ด๋ธ ์กฐํ */
SELECT * FROM ํ์ํ
์ด๋ธ;
/* ์ทจ์ */
ROLLBACK;
/* ํ์ํ
์ด๋ธ ์กฐํ */
SELECT * FROM ํ์ํ
์ด๋ธ;
/***************BEGIN + ์คํ(COMMIT)*******************/
/* ํธ๋์ ์
์์ */
BEGIN;
/* ๋ฐ์ดํฐ ์ฝ์
*/
INSERT INTO ํ์ํ
์ด๋ธ VALUES (1005, '์ฅ๋ณด๊ณ ', '2020-01-06', 1);
/* ์คํ */
COMMIT;
/* ํ์ํ
์ด๋ธ ์กฐํ */
SELECT * FROM ํ์ํ
์ด๋ธ;
/***************์์ ์ ์ฅ(SAVEPOINT)*******************/
/* (ํ์ํ
์ด๋ธ์ ๋ฐ์ดํฐ ์กด์ฌํ ์, ๋ฐ์ดํฐ ๋ชจ๋ ์ญ์ ) */
DELETE FROM ํ์ํ
์ด๋ธ;
/* ํ์ํ
์ด๋ธ ์กฐํ */
SELECT * FROM ํ์ํ
์ด๋ธ;
/* ํธ๋์ ์
์์ */
BEGIN;
/* ๋ฐ์ดํฐ ์ฝ์
*/
INSERT INTO ํ์ํ
์ด๋ธ VALUES (1005, '์ฅ๋ณด๊ณ ', '2020-01-06', 1);
/* SAVEPOINT ์ง์ */
SAVEPOINT S1;
/* 1005 ํ์ ์ด๋ฆ ์์ */
UPDATE ํ์ํ
์ด๋ธ
SET ์ด๋ฆ = '์ด์์ ';
/* SAVEPOINT ์ง์ */
SAVEPOINT S2;
/* 1005 ํ์ ๋ฐ์ดํฐ ์ญ์ */
DELETE
FROM ํ์ํ
์ด๋ธ;
/* SAVEPOINT ์ง์ */
SAVEPOINT S3;
/* ํ์ํ
์ด๋ธ ์กฐํ */
SELECT * FROM ํ์ํ
์ด๋ธ;
/* SAVEPOINT S2 ์ ์ฅ์ ์ผ๋ก ROLLBACK */
ROLLBACK TO S2;
/* ํ์ํ
์ด๋ธ ์กฐํ */
SELECT * FROM ํ์ํ
์ด๋ธ;
/* ์คํ */
COMMIT;
/* ํ์ํ
์ด๋ธ ์กฐํ */
SELECT * FROM ํ์ํ
์ด๋ธ;
SQL
๋ณต์ฌ