[SQL] 1. SQL ๊ธฐ๋ณธ ์ฌํญ [๋ฐ์ดํฐ ์ ์์ด/์กฐ์์ด/์ ์ด์ด]
SQL์ Structured Query Language ์ฝ์ด๋ก, ์ด ์ธ์ด๋ฅผ ํตํด ๋ฐ์ดํฐ๋ฅผ Data Base ํํ๋ก ๊ด๋ฆฌํ ์ ์๋ค.
DB๋ฅผ ๊ด๋ฆฌํ๊ธฐ ์ํด์๋ ๋ฐ์ดํฐ๋ฅผ ์กฐ์ ๋ฐ ์ ์ดํ ์ ์์ด์ผ ํ๋ค. ๋๋ถ์ด ๋ฐ์ดํฐ๋ฅผ ์ ์ํ๋ ๊ฒ ๊น์ง ํด์ ๊ธฐ๋ณธ์ด๋ค.
์ด๋ฌํ ๊ธฐ๋ฅ์ SQL์์๋ DDL (Data Definition Language), DML (Data Manipulation Language), DCL(Data Control Language) ์ธ ๊ฐ์ง๋ก ํฌ๊ฒ ๋๋๋ค.
์ฐธ๊ณ ๋ก, SQL๋ก ๋ค๋ฃจ๋ ๋ฐ์ดํฐ๋ ํ
์ด๋ธ ๋จ์์ ์ฌ๋ฌ ์นผ๋ผ(Column; ์ด), ๋ ์ฝ๋(Record; ํ) ์ผ๋ก ์ด๋ฃจ์ด์ ธ ์๋ค.
๊ทธ๋ฆฌ๊ณ ์ฌ๊ธฐ์ ์นผ๋ผ์ ํ์ ๋ฐ์ดํฐ ๋ถ์ ์ ๋ณ์๋ก ๋ค๋ฃจ์ด์ง ๊ฒ์ด๋ค.
1. DDL; ์ ์๊ธฐ๋ฅ
ํ ์ด๋ธ ๊ตฌ์กฐ๋ฅผ CREATE, ALTER, DROP
๋ฐ์ดํฐ์ ํํ(๋ฐ์ดํฐ ํ์
), ๊ตฌ์กฐ, DB ์ ์ฅ์ ๊ดํ ๋ด์ฉ์ "์ ์"ํ๋ ๊ธฐ๋ฅ์ด๋ค.
CREATE: ํ
์ด๋ธ์ ์์ฑ
ALTER: ํ
์ด๋ธ ๊ตฌ์กฐ ๋ณ๊ฒฝ (ํ
์ด๋ธ ์ด๋ฆ ๋ณ๊ฒฝ, ์นผ๋ผ๋ค์ ์๋ฃํ ๋ฐ ์ ์ฝ์กฐ๊ฑด, ์นผ๋ผ์ด๋ฆ ์์ ๊ฐ๋ฅ)
DROP: ํ
์ด๋ธ ์ญ์
CREATE TABLE table1 (
empno INT ,
ename VARCHAR2(15)
); -- table1์ ํ
์ด๋ธ๋ช
์ด๋ค. ๊ดํธ ์์๋ ์์ฑํ ์นผ๋ผ๋ช
๋ฐ์ดํฐ ํ์
์ด ํ์๋ก ์ค๊ณ , ์ ์ฝ์กฐ๊ฑด์ ๊ฑธ ์ ์๋ค.
ALTER TABLE table1 ADD(job VARCHAR2(9)); -- job ์นผ๋ผ ํ๋ ์ถ๊ฐ (์๋ฃํ ํ์๋ก ๋ฐ๋ผ์ค๊ณ , ์ ์ฝ์กฐ๊ฑด ์ ํ์ฌํญ)
ALTER TABLE table1 RENAME TO table2 ; -- ํ
์ด๋ธ ์ด๋ฆ ๋ณ๊ฒฝ
ALTER TABLE table2 RENAME COLUMN empno TO eno ; -- ์นผ๋ผ ์ด๋ฆ ๋ณ๊ฒฝ
ALTER TABLE table2 MODIFY (eno NUMBER(3)) -- ์๋ฃํ ๋ณ๊ฒฝ. ์นผ๋ผ๋ช
์ผ๋ก ๊ตฌ๋ถํ๋ค. ๊ธฐ์กด INTํ์์ NUMBER(3)์ผ๋ก ํ ๋ณ๊ฒฝ
ALTER TALBE table2 MODIFY (job DEFAULT '์ง์ฑ
์์'); -- ๋ ์ฝ๋์ ๊ฐ์ด ์์ ๊ฒฝ์ฐ ๋ํดํธ๊ฐ์ ์ค ์ ์๋ค.
DROP TABLE table2 ; -- ํ
์ด๋ธ table2 ์ญ์ (์์ํ์ผ์ ์ ๊ณต)
DROP TABLE table2 PURGE ; -- ์์ํ์ผ ๋ฐ์ ๋จ๊ธฐ์ง ์๊ฒ ๋ค.
ALTER TABLE table3 DROP COLUMN job ; -- ์นผ๋ผ ์ญ์ ๋ฐฉ๋ฒ
Tip: DDL ๋ช ๋ น๋ฌธ์ ๊ณตํต์ ์ ๋ค์ ๊ฐ๋ฆฌํฌ ๊ฒ์ด ํ ์ด๋ธ์ด๋ฉด TABLE, ์นผ๋ผ์ด๋ฉด COLUMN ์ด ๋ฑ์ฅํ๋ค. ๋ทฐ(View)๋ฅผ ์ ์ํ ๋๋ ๋ค์ VIEW ๊ฐ ์จ๋ค.
2. DML; ์กฐ์๊ธฐ๋ฅ
๋ ์ฝ๋์ ๋ฐ์ดํฐ๋ค์ SELECT, INSERT, UPDATE, DELETE
์ฌ์ฉ์์ ์๊ตฌ์ ๋ฐ๋ผ ๋ฐ์ดํฐ ๊ฒ์, ๊ฐฑ์ , ์ฝ์
, ์ญ์ ๋ฑ์ ์ง์ํ๋ ๊ธฐ๋ฅ์ด๋ค.
์ด๋ฅผ ์ ํ์ฉํ๋ฉด ์ ์ฅ๋์ด ์๋ ๋ฐ์ดํฐ๋ฅผ ์ ์ฝ์กฐ๊ฑด ํ์ฉ ํ์ ์กฐ์ํ ์ ์๋ค.
SELECT empno, ename FROM emp; -- empno, ename: ์นผ๋ผ๋ช
, emp: ํ
์ด๋ธ๋ช
INSERT INTO table1 (empno, ename) VALUES (1,'JAMES');
INSERT INTO table1 (empno, ename) VALUES (2,'PINK'); -- ๋ ๋ ์ฝ๋ ์ฝ์
UPDATE table1 SET ename = 'PINKY' WHERE empno = 2 ; -- WHERE ์กฐ๊ฑด์ ์ด ์ค์ง ์์ผ๋ฉด ์ ์ฒด ํ ๋ณ๊ฒฝ๋จ
DELETE FROM table1 WHERE empno = 2 ; -- WHERE ์กฐ๊ฑด์ ์ด ์ค์ง ์์ผ๋ฉด ์ ์ฒด ํ์ด ์ญ์ ๋จ
DML์ ํน์ ๋ฌธ๋ฒ๋ค์ ์ธํธ๋ก ์ธ์ด๋ค.
3. DCL; ์ ์ด๊ธฐ๋ฅ
์ฌ์ฉ์ ๊ด๋ฆฌ์ฐจ์์ ๊ธฐ๋ฅ
DB ๋ด์ฉ์ ๋ํด ์ ํ์ฑ๊ณผ ์์ ์ฑ์ ์ ์งํ๋ ๊ธฐ๋ฅ์ด๋ค. ๋ฐ์ดํฐ ๋ฌด๊ฒฐ์ฑ ์ ์ง, ๋ณด์์ ์ ์ดํ๋ค. ๊ถํ ๋ถ์ฌ, ๋ฐํ, ๋กค๋ฐฑ ๋ฑ๊ณผ ๊ฐ์ ๋ฐ์ดํฐ๋ฒ ์ด์ค ๊ฐ์ฒด์ ๋ํ ์ก์ธ์ค ๊ถํ๊ณผ ๊ด๋ จ์๋ค.
GRANT, REVOKE, COMMIT, ROLLBACK
-- ์ฌ์ฉ์ B์๊ฒ ํน์ ํ
์ด๋ธ์ SELECT ๊ถํ์ ๋ถ์ฌ
GRANT SELECT ON employees TO user_b;
-- ์ฌ์ฉ์ B๋ก๋ถํฐ SELECT ๊ถํ์ ํ์
REVOKE SELECT ON employees FROM user_b;
-- ์ปค๋ฐ์ ์ญํ : ๋ฐ์ดํฐ ์กฐ์ ํ DB์ ๋ฐ์
COMMIT;
-- ๋กค๋ฐฑ์ ์ญํ : ๋ง์ง๋ง ์ปค๋ฐ๊น์ง์ ๋ด์ฉ์ผ๋ก ๋์๊ฐ๋ค. (DB ๋ฐ์ํ๊ณ ์ถ์ง ์์ ๋)
ROLLBACK;