[ Node.js ์ˆ™๋ จ์ฃผ์ฐจ1 (1-3)] SQL (Structured Query Language) ์‚ดํŽด๋ณด๊ธฐ

2023. 9. 3. 15:53ใ†3. Node.js

SQL ์ด๋ž€?

๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์—์„œ ์‚ฌ์šฉ๋˜๋Š” ์ƒ์„ฑ, ์‚ฝ์ž…, ์กฐํšŒ ๋ช…๋ น๋ฌธ์„ SQL(Structured Query Language)์ด๋ผ๊ณ  ํ•ฉ๋‹ˆ๋‹ค.

๋ฐ์ดํ„ฐ๋ฅผ ์•„๋ฌด๋ฆฌ ๋งŽ์ด ๋ชจ์•„๋†“๋”๋ผ๋„ ํ™œ์šฉํ•˜์ง€ ์•Š์œผ๋ฉด ๊ฐ€์น˜๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค.

์กฐ๊ฑด์— ๋งž๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ํ™œ์šฉํ•  ์ˆ˜ ์žˆ์–ด์•ผ ํ•˜๊ณ , ๋Š์ž„์—†์ด ๋ณ€ํ•˜๋Š” ๋‚ด์šฉ์„ ์ง€์†์ ์œผ๋กœ ์‚ฝ์ž…, ์ˆ˜์ •, ์‚ญ์ œ, ์กฐํšŒ๊ฐ€ ๊ฐ€๋Šฅํ•ด์•ผํ•ฉ๋‹ˆ๋‹ค.

๋ชจ๋“  ๋ฐ์ดํ„ฐ๋“ค์„ ๊ณตํ†ต์ ์œผ๋กœ ๊ด€๋ฆฌํ•  ์ˆ˜ ์žˆ๋Š” ํ‘œ์ค€ ์–ธ์–ด์ธ SQL์ด ํƒ„์ƒํ•˜๊ฒŒ ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

 


[ DDL(Data Definition Language) ]

DDL(Data Definition Language)์€ ๋ฐ์ดํ„ฐ๋ฅผ ์ •์˜ํ•  ๋•Œ ์‚ฌ์šฉํ•˜๋Š” ์–ธ์–ด๋กœ ํ…Œ์ด๋ธ”์ด๋‚˜ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋ฅผ ์ƒ์„ฑ, ์ˆ˜์ •, ์‚ญ์ œ์™€ ๊ฐ™์€ ํ–‰์œ„๋ฅผ ํ•  ๋•Œ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

 

1) CREATE : DATABASE, TABLE, VIEW, INDEX ๋“ฑ์„ ์ƒ์„ฑํ•  ๋•Œ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

CREATE DATABASE ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋ช…;
CREATE TABLE ํ…Œ์ด๋ธ”๋ช…
{
 ์ปฌ๋Ÿผ๋ช… ์ปฌ๋Ÿผ์†์„ฑ
}

2) DROP: DATABASE, TABLE, VIEW, INDEX ๋“ฑ์„ ์‚ญ์ œํ•  ๋•Œ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

DROP DATABASE ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋ช…;
DROP TABLE ํ…Œ์ด๋ธ”๋ช…;

3) ALTER: DATABASE, TABLE ๋“ฑ์˜ ์†์„ฑ์„ ๋ณ€๊ฒฝํ•  ๋•Œ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

ALTER DATABASE ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋ช… ๋ณ€๊ฒฝ์กฐ๊ฑด;
ALTER TABLE ํ…Œ์ด๋ธ”๋ช… ADD ๋ณ€๊ฒฝ์กฐ๊ฑด; -- ํ…Œ์ด๋ธ”์— ์ƒˆ๋กœ์šด ์ปฌ๋Ÿผ์„ ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค.
ALTER TABLE ํ…Œ์ด๋ธ”๋ช… DROP ๋ณ€๊ฒฝ์กฐ๊ฑด; -- ํ…Œ์ด๋ธ”์—์„œ ์ปฌ๋Ÿผ์„ ์‚ญ์ œํ•ฉ๋‹ˆ๋‹ค.
ALTER TABLE ํ…Œ์ด๋ธ”๋ช… MODIFY ๋ณ€๊ฒฝ์กฐ๊ฑด; -- ํ…Œ์ด๋ธ”์˜ ์ปฌ๋Ÿผ์„ ์ˆ˜์ •ํ•ฉ๋‹ˆ๋‹ค.
ALTER TABLE ํ…Œ์ด๋ธ”๋ช… RENAME ๋ณ€๊ฒฝ์กฐ๊ฑด; -- ํ…Œ์ด๋ธ”์˜ ์ด๋ฆ„์„ ๋ณ€๊ฒฝํ•ฉ๋‹ˆ๋‹ค.
...

[DML (Data Manipulation Language)]

DML(Data Manopulation Language)์€ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์—์„œ ๋ฐ์ดํ„ฐ๋ฅผ ์กฐ์ž‘ํ•  ๋•Œ ์‚ฌ์šฉํ•˜๋Š” ์–ธ์–ด๋กœ ๋ฐ์ดํ„ฐ์˜ ์ €์žฅ, ์‚ญ์ œ, ์ˆ˜์ •, ์กฐํšŒ์™€ ๊ฐ™์€ ํ–‰์œ„๋ฅผ ํ•ฉ๋‹ˆ๋‹ค.

 

SELECT :

์ผ๋ฐ˜์ ์œผ๋กœ TABLE์—์„œ ์›ํ•˜๋Š” ๋ฐ์ดํ„ฐ๋“ค์„ ์กฐํšŒํ•  ๋•Œ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. (๐Ÿ”ฅ DB๋ฅผ ๊ด€๋ฆฌํ•˜๋ฉด์„œ ๊ฐ€์žฅ ๋งŽ์ด ์‚ฌ์šฉํ•˜๋Š” ๋ช…๋ น์–ด)

SELECT ์ปฌ๋Ÿผ๋ชฉ๋ก FROM ํ…Œ์ด๋ธ”๋ช… [WHERE ์กฐ๊ฑด];

INSERT : TABLE์— ์ƒˆ๋กœ์šด ๋ฐ์ดํ„ฐ๋“ค์„ ์‚ฝ์ž…ํ•  ๋•Œ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

INSERT INTo ํ…Œ์ด๋ธ”๋ช… (์ปฌ๋Ÿผ๋ชฉ๋ก) VALUES (๊ฐ’๋ชฉ๋ก);

DELETE

TABLE์—์„œ ํŠน์ •ํ•œ ์กฐ๊ฑด์— ๋งž๋Š” ๋ฐ์ดํ„ฐ๋“ค์„ ์‚ญ์ œํ•  ๋•Œ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. (*WHERE ์กฐ๊ฑด์ด ์—†๋‹ค๋ฉด, ๋ชจ๋“  ๋ฐ์ดํ„ฐ๊ฐ€ ์‚ญ์ œ๋ฉ๋‹ˆ๋‹ค.)

DELETE FROM ํ…Œ์ด๋ธ”๋ช… [WHERE ์กฐ๊ฑด];

UPDATE

TABLE์—์„œ ํŠน์ •ํ•œ ์กฐ๊ฑด์— ๋งž๋Š” ๋ฐ์ดํ„ฐ๋“ค์„ ์ˆ˜์ •ํ•  ๋•Œ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. (WHERE ์กฐ๊ฑด์ด ์—†๋‹ค๋ฉด, ๋ชจ๋“  ๋ฐ์ดํ„ฐ๊ฐ€ ์ˆ˜์ •๋ฉ๋‹ˆ๋‹ค.)

UPDATE ํ…Œ์ด๋ธ”๋ช… SET ์ปฌ๋Ÿผ = ๊ฐ’ [WHERE ์กฐ๊ฑด];

 

[DCL (Data Control Language)]

DCL(Data Control Language)์€ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์— ๋Œ€ํ•œ ๊ถŒํ•œ๊ณผ ๊ด€๋ จ๋œ ๋ฌธ๋ฒ•์œผ๋กœ ํŠน์ • ์œ ์ €๊ฐ€ DB์— ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ๋Š” ๊ถŒํ•œ์„ ์„ค์ •ํ•  ๋•Œ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

 

GRANT

๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์˜ ํŠน์ •ํ•œ ์œ ์ €์—๊ฒŒ ์‚ฌ์šฉ ๊ถŒํ•œ์„ ๋ถ€์—ฌํ•  ๋•Œ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. ๊ถŒํ•œ์—๋Š” SELECT, INSERT, UPDATE, DELETE ๋“ฑ ๋‹ค์–‘ํ•œ ์ข…๋ฅ˜๊ฐ€ ์กด์žฌํ•ฉ๋‹ˆ๋‹ค.

GRANT [๊ถŒํ•œ] ON ๊ฐ์ฒด๋ช… TO ์‚ฌ์šฉ์ž;

REVOKE

๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์˜ ํŠน์ •ํ•œ ์œ ์ €์—๊ฒŒ ์‚ฌ์šฉ ๊ถŒํ•œ์„ ์ทจ์†Œํ•  ๋•Œ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

REVOKE [๊ถŒํ•œ] ON ๊ฐ์ฒด๋ช… FROM ์‚ฌ์šฉ์ž;

 

[ TCL(Transaction Control Language) ]

TCL(Transaction Control Language)์€ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๋‚ด์˜ ํŠธ๋žœ์žญ์…˜์„ ๊ด€๋ฆฌํ•˜๋Š” ๋ฌธ๋ฒ•์œผ๋กœ, ํŠธ๋žœ์žญ์…˜์˜ ์‹œ์ž‘๊ณผ ์ข…๋ฃŒ, ๊ทธ๋ฆฌ๊ณ  ๋กค๋ฐฑ์„ ์ˆ˜ํ–‰ํ•  ๋•Œ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

 

 

COMMIT

๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์˜ ์ž‘์—…์ด ์ •์ƒ์ ์œผ๋กœ ์™„๋ฃŒ๋˜์—ˆ์Œ์„ ๊ด€๋ฆฌ์ž์—๊ฒŒ ์•Œ๋ ค์ค„ ๋•Œ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

START TRANSACTION;
...
COMMIT;

ROLLBACK

๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์˜ ์ž‘์—…์ด ๋น„์ •์ƒ์ ์œผ๋กœ ์™„๋ฃŒ๋˜์—ˆ์Œ์„ ๊ด€๋ฆฌ์ž์—๊ฒŒ ์•Œ๋ ค์ค„ ๋•Œ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

์ž‘์—… ์ค‘ ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•œ ๊ฒฝ์šฐ ์ด๋ฅผ ์ทจ์†Œํ•˜๊ณ , ์ด์ „ ์ƒํƒœ๋กœ ๋˜๋Œ๋ฆด ๋•Œ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

START TRANSACTION;
...
ROLLBACK;