์ปดํ“จํ„ฐ์–ธ์–ด๐Ÿ’ก/SQL

[SQL] 1. SQL ๊ธฐ๋ณธ ์‚ฌํ•ญ [๋ฐ์ดํ„ฐ ์ •์˜์–ด/์กฐ์ž‘์–ด/์ œ์–ด์–ด]

Hashtag me 2024. 2. 21. 22:41

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;

 

๋ฐ˜์‘ํ˜•