์ƒˆ์†Œ์‹

์ž๊ฒฉ์ฆ

[์ •๋ณด์ฒ˜๋ฆฌ๊ธฐ์‚ฌ ์‹ค๊ธฐ] 8์žฅ SQL ์‘์šฉ

  • -

 

 

 

์ด๋ฒˆ์—๋Š” 2022๋…„๋„ ์‹ค๊ธฐ ์‹œํ—˜ ์ค€๋น„ํ•˜๋ฉด์„œ ๋…ธํŠธ์ •๋ฆฌ ํ–ˆ์—ˆ๋˜ ๋‚ด์šฉ๋“ค์„ ํฌ์ŠคํŒ… ํ•ด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. ๋‚ด์šฉ์ด ๋งŽ์ด ๋ถ€์กฑํ•˜์‹œ๊ฒ ์ง€๋งŒ ์–ด๋””๊นŒ์ง€ ์ฐธ๊ณ ์šฉ์œผ๋กœ๋งŒ ๋ด์ฃผ์‹œ๋ฉด ๊ฐ์‚ฌํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค. ๐Ÿ˜๐Ÿ˜

 

์ฐธ๊ณ ๋กœ, ์‹œ๊ฐ„ ๊ด€๊ณ„์ƒ ์ „๋ถ€ ์ •๋ฆฌ๋˜์–ด ์žˆ์ง€๋Š” ์•Š์Šต๋‹ˆ๋‹ค. ์ถ”๊ฐ€๋กœ ์ €๋Š” C๋“ฑ๊ธ‰๊ณผ D๋“ฑ๊ธ‰์€ ํ•™์Šต ๋ชฉํ‘œ์—์„œ ์ œ์™ธํ–ˆ์Šต๋‹ˆ๋‹ค.

 

ํ•ด๋‹น ๋‚ด์šฉ์€ 2022๋…„๋„ ์‹œ๋‚˜๊ณต ์ถœํŒ์‚ฌ์˜ ์ •๋ณด์ฒ˜๋ฆฌ๊ธฐ์‚ฌ ์‹ค๊ธฐ ์ฑ…์˜ ๋‚ด์šฉ์ด ์กฐ๊ธˆ ํฌํ•จ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค.

 

์‹ธ๋‹ˆ๊นŒ ๋ฏฟ์œผ๋‹ˆ๊นŒ ์ธํ„ฐํŒŒํฌ๋„์„œ

์ƒ๋…„์›”์ผ - ๊ฐ•์œค์„, ๊น€์šฉ๊ฐ‘, ๊น€์šฐ๊ฒฝ, ๊น€์„ ์• , ๊น€์ข…์ผ, ๊น€์œ ํ™. IT ์„œ์ ์„ ๊ธฐํšํ•˜๊ณ  ์ง‘ํ•„ํ•˜๋Š” ์ถœํŒ ๊ธฐํš ์ „๋ฌธ ์ง‘๋‹จ์œผ๋กœ, 2003๋…„๋ถ€ํ„ฐ ๊ธธ๋ฒ—์ถœํŒ์‚ฌ์˜ IT์ˆ˜ํ—˜์„œ์ธ <์‹œํ—˜์— ๋‚˜์˜ค๋Š” ๊ฒƒ๋งŒ ๊ณต๋ถ€ํ•œ๋‹ค> ์‹œ๋ฆฌ์ฆˆ

book.interpark.com

 

๊ฐ€๊ธ‰์  ์ฑ…์€ ๊ตฌ๋งคํ•˜์…”์•ผ ํ•˜๊ณ  ์ถœํŒ์‚ฌ๋Š” ์‹œ๋‚˜๊ณต ๋˜๋Š” ์ˆ˜์ œ๋น„๋กœ ๊ณต๋ถ€ํ•˜์‹œ๋Š” ๊ฒƒ์„ ์ถ”์ฒœ๋“œ๋ฆฝ๋‹ˆ๋‹ค.

 

 


A๋“ฑ๊ธ‰

 

๐Ÿ“ข SQL - DDL

 

  • DDL(Data Define Language, ๋ฐ์ดํ„ฐ ์ •์˜์–ด)
    • DB๋ฅผ ๊ตฌ์ถ•ํ•˜๊ฑฐ๋‚˜ ์ˆ˜์ •ํ•  ๋ชฉ์ ์œผ๋กœ ์‚ฌ์šฉํ•˜๋Š” ์–ธ์–ด
    • DDL์˜ 3๊ฐ€์ง€ ์œ ํ˜•
      • CREATE: SCHEMA, DOMAIN, TABLE, VIEW, INDEX๋ฅผ ์ •์˜ํ•จ
      • ALTER: TABLE์— ๋Œ€ํ•œ ์ •์˜๋ฅผ ๋ณ€๊ฒฝํ•˜๋Š” ๋ฐ ์‚ฌ์šฉํ•จ
      • DROP: SCHEMA, DOMAIN, TABLE, VIEW, INDEX๋ฅผ ์‚ญ์ œํ•จ
  • CREATE SCHEMA
CREATE SCHEMA ์Šคํ‚ค๋งˆ๋ช… AUTHORIZATION ์‚ฌ์šฉ์ž_id;

 

  • CREATE DOMAIN
CREATE DOMAIN ๋„๋ฉ”์ธ๋ช… [AS] ๋ฐ์ดํ„ฐ_ํƒ€์ž…
        [DEFAULT ๊ธฐ๋ณธ ๊ฐ’]
        [CONSTRAINT ์ œ์•ฝ์กฐ๊ฑด๋ช… CHECK (๋ฒ”์œ„๊ฐ’)];

 

  • CREATE TABLE
CREATE TABLE ํ…Œ์ด๋ธ”๋ช… (
        ์†์„ฑ๋ช… ๋ฐ์ดํ„ฐ_ํƒ€์ž… [DEFAULT ๊ธฐ๋ณธ๊ฐ’][NOT NULL]
        , ---
        [, PRIMARY KEY(๊ธฐ๋ณธํ‚ค_์†์„ฑ๋ช…, ---)]
        [, UNIQUE(๋Œ€์ฒดํ‚ค_์†์„ฑ๋ช…, ---)]
        [, FOREIGN KEY(์™ธ๋ž˜ํ‚ค_์†์„ฑ๋ช…, ---)]
                            REFERENCES ์ฐธ์กฐํ…Œ์ด๋ธ”(๊ธฐ๋ณธํ‚ค_์†์„ฑ๋ช…, ---)]
                            [ON DELETE ์˜ต์…˜] /*** ex) ON DELETE SET NULL ***/
                            [ON UPDATE ์˜ต์…˜] /*** ex) ON UPDATE CASCADE ***/
        [, CONSTRAINT ์ œ์•ฝ์กฐ๊ฑด๋ช…][CHECK (์กฐ๊ฑด์‹)]
);

 

  • CREATE VIEW
CREATE VIEW ๋ทฐ๋ช…(์†์„ฑ๋ช…1, ์†์„ฑ๋ช…2)
AS SELECT๋ฌธ ์ž…๋ ฅ;

 

  • CREATE INDEX
CREATE [UNIQUE] INDEX ์ธ๋ฑ์Šค๋ช…  /* UNIQUE ์‚ฌ์šฉ์‹œ ์ค‘๋ณต ๊ฐ’์ด ์—†๋Š” ์†์„ฑ์œผ๋กœ ์ธ๋ฑ์Šค๋ฅผ ์ƒ์„ฑ */ 
ON ํ…Œ์ด๋ธ”๋ช…(์†์„ฑ๋ช…[ASC | DESC] [, ์†์„ฑ๋ช… [ASC | DESC])
[CLUSTER];

 

  • ALTER TABLE
ALTER TABLE ํ…Œ์ด๋ธ”๋ช… ADD ์†์„ฑ๋ช… ๋ฐ์ดํ„ฐ_ํƒ€์ž… [DEFAULT '๊ธฐ๋ณธ๊ฐ’'];
ALTER TABLE ํ…Œ์ด๋ธ”๋ช… ALTER ์†์„ฑ๋ช… [SET DEFAULT '๊ธฐ๋ณธ๊ฐ’'];
ALTER TABLE ํ…Œ์ด๋ธ”๋ช… DROP COLUMN ์†์„ฑ๋ช… [CASCADE];

 

  • DROP TABLE
DROP SCHEMA ์Šคํ‚ค๋งˆ๋ช… [CASCADE | RESTRICT];
DROP DOMAIN ๋„๋ฉ”์ธ๋ช… [CASCADE | RESTRICT];
DROP TABLE ํ…Œ์ด๋ธ”๋ช… [CASCADE | RESTRICT];
DROP VIEW ๋ทฐ๋ช… [CASCADE | RESTRICT];
DROP INDEX ์ธ๋ฑ์Šค๋ช… [CASCADE | RESTRICT];
DROP CONSTRAINT ์ œ์•ฝ์กฐ๊ฑด๋ช…;

/*
    CASCADE: ์ œ๊ฑฐํ•  ์š”์†Œ๋ฅผ ์ฐธ์กฐํ•˜๋Š” ๋‹ค๋ฅธ ๋ชจ๋“  ๊ฐœ์ฒด๋ฅผ ํ•จ๊ป˜ ์ œ๊ฑฐ
    RESTRICT: ๋‹ค๋ฅธ ๊ฐœ์ฒด๊ฐ€ ์ œ๊ฑฐํ•  ์š”์„œ๋ฅผ ์ฐธ์กฐ์ค‘์ผ ๋•Œ๋Š” ์ œ๊ฑฐ๋ฅผ ์ทจ์†Œ
*/

 

 

 

๐Ÿ“ข SQL - DCL

 

  • DCL(Data Control Language, ๋ฐ์ดํ„ฐ ์ œ์–ด์–ด)
    • ๋ฐ์ดํ„ฐ์˜ ๋ณด์•ˆ, ๋ฌด๊ฒฐ์„ฑ, ํšŒ๋ณต, ๋ณ‘ํ–‰ ์ œ์–ด ๋“ฑ์„ ์ •์˜ํ•˜๋Š” ๋ฐ ์‚ฌ์šฉํ•˜๋Š” ์–ธ์–ด
    • DCL์˜ ์ข…๋ฅ˜
      • COMMIT: ๋ช…๋ น์— ์˜ํ•ด ์‹ค์ œ ๋ฌผ๋ฆฌ์  ๋””์Šคํฌ๋กœ ์ €์žฅํ•˜๊ณ  ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์กฐ์ž‘ ์ž‘์—…์ด ์ •์ƒ์ ์œผ๋กœ ์™„๋ฃŒ๋˜์—ˆ์Œ์„ ๊ด€๋ฆฌ์ž์—๊ฒŒ ์ „๋‹ฌ
      • ROLLBACK: ๋น„์ •์ƒ์ ์œผ๋กœ ์ข…๋ฃŒ๋˜์—ˆ์„ ๋•Œ ์›๋ž˜์˜ ์ƒํƒœ๋กœ ๋ณต๊ตฌ
      • GRANT: ๊ถŒํ•œ ๋ถ€์—ฌ๋ฅผ ์œ„ํ•œ ๋ช…๋ น์–ด
      • REVOKE: ๊ถŒํ•œ ์ทจ์†Œ๋ฅผ ์œ„ํ•œ ๋ช…๋ น์–ด
  • GRANT / REVOKE
GRANT ์‚ฌ์šฉ์ž๋“ฑ๊ธ‰ TO ์‚ฌ์šฉ์ž_ID_๋ฆฌ์ŠคํŠธ [IDENTIFIED BY ์•”ํ˜ธ];
REVOKE ์‚ฌ์šฉ์ž๋“ฑ๊ธ‰ FROM ์‚ฌ์šฉ์ž_ID_๋ฆฌ์ŠคํŠธ;

GRANT ๊ถŒํ•œ_๋ฆฌ์ŠคํŠธ ON ๊ฐœ์ฒด TO ์‚ฌ์šฉ์ž [WITH GRANT OPTION];
REVOKE [GRANT OPTION FOR] ๊ถŒํ•œ_๋ฆฌ์ŠคํŠธ ON ๊ฐœ์ฒด FROM ์‚ฌ์šฉ์ž [CASCADE];

 

  • COMMIT
    • ํŠธ๋žœ์žญ์…˜์ด ์ˆ˜ํ–‰ํ•œ ๋‚ด์šฉ์„ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์— ๋ฐ˜์˜ํ•˜๋Š” ๋ช…๋ น
  • ROLLBACK
    • ๋ณ€๊ฒฝ๋˜์—ˆ์œผ๋‚˜ ์•„์ง COMMIT๋˜์ง€ ์•Š์€ ๋ชจ๋“  ๋‚ด์šฉ๋“ค์„ ์ทจ์†Œํ•˜๊ณ  ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋ฅผ ์ด์ „ ์ƒํƒœ๋กœ ๋˜๋Œ๋ฆฌ๋Š” ๋ช…๋ น์–ด
ROLLBACK S1;

 

  • SAVEPOINT
    • ํŠธ๋žœ์žญ์…˜ ๋‚ด์— ROLLBACK ํ•  ์œ„์น˜์ธ ์ €์žฅ์ ์„ ์ง€์ •ํ•˜๋Š” ๋ช…๋ น์–ด
SAVEPOINT S1;

 

 

 

๐Ÿ“ข SQL - DML

 

  • DML(Data Manipulation Language, ๋ฐ์ดํ„ฐ ์กฐ์ž‘์–ด)
    • ์ €์žฅ๋œ ๋ฐ์ดํ„ฐ๋ฅผ ์‹ค์งˆ์ ์œผ๋กœ ๊ด€๋ฆฌํ•˜๋Š”๋ฐ ์‚ฌ์šฉ๋˜๋Š” ์–ธ์–ด
    • DML์˜ ์œ ํ˜•
      • SELECT: ํ…Œ์ด๋ธ”์—์„œ ํŠœํ”Œ์„ ๊ฒ€์ƒ‰
      • INSERT: ํ…Œ์ด๋ธ”์— ์ƒˆ๋กœ์šด ํŠœํ”Œ์„ ์‚ฝ์ž…
      • UPDATE: ํ…Œ์ด๋ธ”์˜ ํŠœํ”Œ์˜ ๋‚ด์šฉ์„ ๊ฐฑ์‹ ํ•จ
      • DELETE: ํ…Œ์ด๋ธ”์˜ ํŠœํ”Œ์„ ์‚ญ์ œ
  • ์‚ฝ์ž…๋ฌธ
INSERT INTO ํ…Œ์ด๋ธ”๋ช…([์†์„ฑ๋ช…1, ์†์„ฑ๋ช…2, ...]) VALUES (๋ฐ์ดํ„ฐ1, ๋ฐ์ดํ„ฐ2, ...);

 

  • ์ˆ˜์ •๋ฌธ
UPDATE ํ…Œ์ด๋ธ”๋ช… SET ์†์„ฑ๋ช… = ๋ฐ์ดํ„ฐ[, ์†์„ฑ๋ช…=๋ฐ์ดํ„ฐ, ...] [WHERE ์กฐ๊ฑด];

 

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

 

 

 

๐Ÿ“ข DML - SELECT-1

 

  • ์ผ๋ฐ˜ ํ˜•์‹
    • SELECT์ ˆ
      • DISTINCT: ์ค‘๋ณต๋œ ํŠœํ”Œ์€ ์ฒซ ๋ฒˆ์งธ ํ•œ ๊ฐœ๋งŒ ํ‘œ์‹œ
      • ์†์„ฑ๋ช…(์—ด)
      • AS: ๋ณ„์นญ
    • FROM์ ˆ
    • WHERE์ ˆ
    • ORDER BY์ ˆ: ASC / DESC
  • ์กฐ๊ฑด ์—ฐ์‚ฐ์ž
    • ๋น„๊ต ์—ฐ์‚ฐ์ž
      • =, <>, >, <, ≥, ≤
    • ๋…ผ๋ฆฌ ์—ฐ์‚ฐ์ž
      • NOT, AND, OR
    • LIKE ์—ฐ์‚ฐ์ž
      • %: ๋ชจ๋“  ๋ฌธ์ž๋ฅผ ๋Œ€ํ‘œํ•จ
      • -: ๋ฌธ์ž ํ•˜๋‚˜๋ฅผ ๋Œ€ํ‘œํ•จ
      • #: ์ˆซ์ž ํ•˜๋‚˜๋ฅผ ๋Œ€ํ‘œํ•จ
  • ํ•˜์œ„ ์งˆ์˜
    • ์กฐ๊ฑด์ ˆ์— ์ฃผ์–ด์ง„ ์งˆ์˜๋ฅผ ๋จผ์ € ์ˆ˜ํ–‰ํ•˜์—ฌ ๊ทธ ๊ฒ€์ƒ‰ ๊ฒฐ๊ณผ๋ฅผ ์กฐ๊ฑด์ ˆ์˜ ํ”ผ์—ฐ์‚ฐ์ž๋กœ ์‚ฌ์šฉ
    • SELECT ์•ˆ์— SELECT

 

 

๐Ÿ“ข DML - SELECT-2

 

  • ๊ทธ๋ฃน ํ•จ์ˆ˜
    • COUNT(์†์„ฑ๋ช…): ๊ทธ๋ฃน๋ณ„ ํŠœํ”Œ ์ˆ˜
    • SUM(์†์„ฑ๋ช…): ๊ทธ๋ฃน๋ณ„ ํ•ฉ๊ณ„๋ฅผ ๊ตฌํ•˜๋Š” ํ•จ์ˆ˜
    • AVG(์†์„ฑ๋ช…): ๊ทธ๋ฃน๋ณ„ ํ‰๊ท ์„ ๊ตฌํ•˜๋Š” ํ•จ์ˆ˜
    • MAX(์†์„ฑ๋ช…): ๊ทธ๋ฃน๋ณ„ ์ตœ๋Œ€๊ฐ’์„ ๊ตฌํ•˜๋Š” ํ•จ์ˆ˜
    • MIN(์†์„ฑ๋ช…): ๊ทธ๋ฃน๋ณ„ ์ตœ์†Œ๊ฐ’์„ ๊ตฌํ•˜๋Š” ํ•จ์ˆ˜
    • STDDEV(์†์„ฑ๋ช…): ๊ทธ๋ฃน๋ณ„ ํ‘œ์ค€ํŽธ์ฐจ๋ฅผ ๊ตฌํ•˜๋Š” ํ•จ์ˆ˜
    • VARIANCE(์†์„ฑ๋ช…): ๊ทธ๋ฃน๋ณ„ ๋ถ„์‚ฐ์„ ๊ตฌํ•˜๋Š” ํ•จ์ˆ˜
    • ROLLUP(์†์„ฑ๋ช…, ์†์„ฑ๋ช…, ...)
    • CUBE(์†์„ฑ๋ช…, ์†์„ฑ๋ช…, ...)
  • ๊ทธ๋ฃน ์ง€์ • ๊ฒ€์ƒ‰
    • GROUP BY
    • HAVING
  • ์ง‘ํ•ฉ ์—ฐ์‚ฐ์ž๋ฅผ ์ด์šฉํ•œ ํ†ตํ•ฉ ์งˆ์˜
    • UNION: ํ•ฉ์ง‘ํ•ฉ(์ค‘๋ณต ํ–‰์€ ํ•œ๋ฒˆ๋งŒ ํ‘œํ˜„)
    • UNION ALL: ํ•ฉ์ง‘ํ•ฉ(์ค‘๋ณต ํ—ˆ์šฉ)
    • INTERSECT: ๊ต์ง‘ํ•ฉ
    • EXCEPT: ์ฐจ์ง‘ํ•ฉ

 

 

๐Ÿ“ข ์ œ์–ด๋ฌธ

 

  • ์ ˆ์ฐจํ˜• SQL์˜ ์ง„ํ–‰ ์ˆœ์„œ๋ฅผ ๋ณ€๊ฒฝํ•˜๊ธฐ ์œ„ํ•ด ์‚ฌ์šฉํ•˜๋Š” ๋ช…๋ น๋ฌธ
  • IF๋ฌธ
IF ์กฐ๊ฑด THEN
	์‹คํ–‰ํ•  ๋ฌธ์žฅ1;
	์‹คํ–‰ํ•  ๋ฌธ์žฅ2;
END IF:
IF ์กฐ๊ฑด THEN
	์‹คํ–‰ํ•  ๋ฌธ์žฅ1;
ELSE
	์‹คํ–‰ํ•  ๋ฌธ์žฅ2;
END IF:
IF ์กฐ๊ฑด THEN
	์‹คํ–‰ํ•  ๋ฌธ์žฅ1;
ELSEIF ์กฐ๊ฑด THEN
	์‹คํ–‰ํ•  ๋ฌธ์žฅ2;
ELSE
	์‹คํ–‰ํ•  ๋ฌธ์žฅ3;
END IF:

 

  • LOOP๋ฌธ
LOOP
	์‹คํ–‰ํ•  ๋ฌธ์žฅ;
	EXIT WHEN ์กฐ๊ฑด;

END LOOP;
300x250

 

 

 


B๋“ฑ๊ธ‰

 

๐Ÿ“ข DML - JOIN

 

  • JOIN
    • ์—ฐ๊ด€๋œ ํŠœํ”Œ๋“ค์„ ๊ฒฐํ•ฉํ•˜์—ฌ, ํ•˜๋‚˜์˜ ์ƒˆ๋กœ์šด ๋ฆด๋ ˆ์ด์…˜์„ ๋ฐ˜ํ™˜
  • INTER JOIN
    • NATURAL JOIN: ์ค‘๋ณต๋œ ์†์„œ์„ ์ œ๊ฑฐํ•˜์—ฌ ๊ฐ™์€ ์†์„ฑ์„ ํ•œ ๋ฒˆ๋งŒ ํ‘œ๊ธฐํ•˜๋Š” ๋ฐฉ๋ฒ•
/* WHERE์ ˆ์„ ์ด์šฉํ•œ EQUI JOIN์˜ ํ‘œ๊ธฐ ํ˜•์‹ */

SELECT [ํ…Œ์ด๋ธ”๋ช…1.]์†์„ฑ๋ช…, [ํ…Œ์ด๋ธ”2.]์†์„ฑ๋ช…, ---
FROM ํ…Œ์ด๋ธ”๋ช…1, ํ…Œ์ด๋ธ”๋ช…2
WHERE ํ…Œ์ด๋ธ”๋ช…1.์†์„ฑ๋ช… = ํ…Œ์ด๋ธ”2.์†์„ฑ๋ช…2;
/* NATURAL JOIN์ ˆ์„ ์ด์šฉํ•œ EQUI JOIN์˜ ํ‘œ๊ธฐ ํ˜•์‹ */

SELECT [ํ…Œ์ด๋ธ”๋ช…1.]์†์„ฑ๋ช…, [ํ…Œ์ด๋ธ”2.]์†์„ฑ๋ช…, ---
FROM ํ…Œ์ด๋ธ”๋ช…1 NATURAL JOIN ํ…Œ์ด๋ธ”๋ช…2;

 

  • OUTER JOIN
    • LEFT OUTER JOIN: ์ขŒ์ธก ๋ฆด๋ ˆ์ด์…˜์— ์šฐ์ธก ๋ฆด๋ ˆ์ด์…˜์„ ํ•ฉ์น˜๊ณ  ์—†๋Š” ๋ฐ์ดํ„ฐ๋Š” NULL๋กœ ํ‘œ์‹œ
    • RIGHT OUTER JOIN: ์šฐ์ธก ๋ฆด๋ ˆ์ด์…˜์— ์ขŒ์ธก ๋ฆด๋ ˆ์ด์…˜์„ ํ•ฉ์น˜๊ณ  ์—†๋Š” ๋ฐ์ดํ„ฐ๋Š” NULL๋กœ ํ‘œ์‹œ
    • FULL OUTER JOIN: ์–‘์ธก์œผ๋กœ ํ•œ๋ฒˆ์”ฉ ๋น„๊ต ํ›„ ์—†๋Š” ๋ฐ์ดํ„ฐ๋Š” NULL๋กœ ํ‘œ์‹œ

 

 

๐Ÿ“ข ํ”„๋กœ์‹œ์ €(Procedure)

 

  • ํ”„๋กœ์‹œ์ €
    • SQL์„ ์‚ฌ์šฉํ•˜์—ฌ ์ž‘์„ฑํ•œ ์ผ๋ จ์˜ ์ž‘์—…์„ ์ €์žฅํ•ด๋‘๊ณ  ํ˜ธ์ถœ์„ ํ†ตํ•ด ์›ํ•  ๋•Œ๋งˆ๋‹ค ์ €์žฅํ•œ ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•˜๋„๋ก ํ•˜๋Š” ์ ˆ์ฐจํ˜• SQL
    • ์ผ์ผ ๋งˆ๊ฐ ์ž‘์—…, ์ผ๊ด„(Batch) ์ž‘์—… ๋“ฑ์— ์ฃผ๋กœ ์ด์šฉ
  • ์ƒ์„ฑ
CREATE [OR REPLACE] PROCEDURE ํ”„๋กœ์‹œ์ €๋ช…(ํŒŒ๋ผ๋ฏธํ„ฐ)
[์ง€์—ญ๋ณ€์ˆ˜ ์„ ์–ธ]
BEGIN
	/* ํ”„๋กœ์‹œ์ € BODY */
  CONTROL
  SQL
  EXCEPTION
  TRANSACTION
END;

 

  • ์‹คํ–‰
EXECUTE ํ”„๋กœ์‹œ์ €๋ช…;
EXEC ํ”„๋กœ์‹œ์ €๋ช…;
CALL ํ”„๋กœ์‹œ์ €๋ช…;
/* ์ „๋ถ€ ๊ฐ™์€ ์˜๋ฏธ */

 

  • ์ œ๊ฑฐ
DROP PROCEDURE ํ”„๋กœ์‹œ์ €๋ช…;

 

 

 

๐Ÿ“ข ํŠธ๋ฆฌ๊ฑฐ(Trigger)

 

  • ํŠธ๋ฆฌ๊ฑฐ
    • ์ด๋ฒคํŠธ(Event)๊ฐ€ ๋ฐœ์ƒํ•  ๋•Œ ๊ด€๋ จ ์ž‘์—…์ด ์ž๋™์œผ๋กœ ์ˆ˜ํ–‰๋˜๊ฒŒ ํ•˜๋Š” ์ ˆ์ฐจํ˜• SQL
    • ํŠธ๋ฆฌ๊ฑฐ์˜ ๊ตฌ๋ฌธ์—๋Š” DCL์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์—†์Œ
  • ์ œ๊ฑฐ
DROP TRIGGER ํŠธ๋ฆฌ๊ฑฐ๋ช…;

 

 

 

๐Ÿ“ข ์‚ฌ์šฉ์ž ์ •์˜ ํ•จ์ˆ˜

 

  • ์ข…๋ฃŒ ์‹œ ์ฒ˜๋ฆฌ ๊ฒฐ๊ณผ๋กœ ๋‹จ์ผ ๊ฐ’๋งŒ์„ ๋ฐ˜ํ™˜ํ•˜๋Š” ์ ˆ์ฐจํ˜• SQL

 

 

๐Ÿ“ข ์ปค์„œ(Cursor)

 

  • ์ฟผ๋ฆฌ๋ฌธ์˜ ์ฒ˜๋ฆฌ ๊ฒฐ๊ณผ๊ฐ€ ์ €์žฅ๋˜์–ด ์žˆ๋Š” ๋ฉ”๋ชจ๋ฆฌ ๊ณต๊ฐ„์„ ๊ฐ€๋ฆฌํ‚ค๋Š” ํฌ์ธํ„ฐ
  • ์ปค์„œ์˜ ์ˆ˜ํ–‰์€ ์—ด๊ธฐ(Open), ํŒจ์น˜(Fetch), ๋‹ซ๊ธฐ(Close) ์„ธ ๋‹จ๊ณ„๋กœ ์ง„ํ–‰
  • ๋ฌต์‹œ์  ์ปค์„œ(Implicit Cursor)
    • ๋‚ด๋ถ€์—์„œ ์ž๋™์œผ๋กœ ์ƒ์„ฑ๋˜์–ด ์‚ฌ์šฉ๋˜๋Š” ์ปค์„œ
  • ๋ช…์‹œ์  ์ปค์„œ(Explicit Cursor)
    • ์‚ฌ์šฉ์ž๊ฐ€ ์ง์ ‘ ์ •์˜ํ•ด์„œ ์‚ฌ์šฉํ•˜๋Š” ์ปค์„œ

 

 

๐Ÿ“ข DBMS ์ ‘์†(Connection)

 

  • DBMS ์ ‘์†
    • ์‘์šฉ ์‹œ์Šคํ…œ์„ ์ด์šฉํ•˜์—ฌ DBMS์— ์ ‘๊ทผํ•˜๋Š” ๊ฒƒ์„ ์˜๋ฏธ
    • ์›น ์‘์šฉ ์‹œ์Šคํ…œ: ์›น ์„œ๋ฒ„(Web Server), ์›น ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์„œ๋ฒ„(WAS; Web Application Server)
  • DBMS ์ ‘์† ๊ธฐ์ˆ 
    • JDBC
      • Java์–ธ์–ด๋กœ ๋‹ค์–‘ํ•œ ์ข…๋ฅ˜์˜ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์— ์ ‘์†ํ•  ๋•Œ ์‚ฌ์šฉํ•˜๋Š” ํ‘œ์ค€API
      • 1997๋…„ 2์›” ์ฌ ๋งˆ์ดํฌ๋กœ์‹œ์Šคํ…œ์—์„œ ์ถœ์‹œ
      • ์ ‘์†ํ•˜๋ ค๋Š” DBMS์— ๋Œ€ํ•œ ๋“œ๋ผ์ด๋ฒ„๊ฐ€ ํ•„์š”
    • ODBC
      • ๊ฐœ๋ฐœ ์–ธ์–ด์— ๊ด€๊ณ„์—†์ด ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์— ์ ‘๊ทผํ•˜๊ธฐ ์œ„ํ•œ ํ‘œ์ค€ ๊ฐœ๋ฐฉํ˜• API
      • 1992๋…„ 9์›”์— ๋งˆ์ดํฌ๋กœ์†Œํ”„ํŠธ์—์„œ ์ถœ์‹œ
    • MyBatis
      • SQL Mapping ๊ธฐ๋ฐ˜ ์˜คํ”ˆ ์†Œ์Šค ์ ‘์† ํ”„๋ ˆ์ž„์›Œํฌ
  • ๋™์  SQL(Dynamic SQL)
    • SQL ๊ตฌ๋ฌธ์„ ๋™์ ์œผ๋กœ ๋ณ€๊ฒฝํ•˜์—ฌ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ๋Š” SQL ์ฒ˜๋ฆฌ ๋ฐฉ์‹

 

 

๐Ÿ“ข SQL ํ…Œ์ŠคํŠธ

 

  • SQL์ด ์ž‘์„ฑ ์˜๋„์— ๋งž๊ฒŒ ์›ํ•˜๋Š” ๊ธฐ๋Šฅ์„ ์ˆ˜ํ–‰ํ•˜๋Š”์ง€ ๊ฒ€์ฆํ•˜๋Š” ๊ณผ์ •
  • ๊ตฌ๋ฌธ ์˜ค๋ฅ˜(Syntax Error)๋‚˜ ์ฐธ์กฐ ์˜ค๋ฅ˜์˜ ์กด์žฌ ์—ฌ๋ถ€๋ฅผ ํ™•์ธ

 

 


 

์›๋ž˜๋Š” ์ €๋งŒ ๋ณด๋ ค๊ณ  ๋…ธํŠธ ์ •๋ฆฌํ–ˆ๋˜ ๋‚ด์šฉ์ด๋ผ์„œ ํ—ˆ์ˆ ํ•œ ์ ์ด ๋งŽ๊ธฐ๋„ ํ•  ๊ฑฐ๊ณ  ์˜คํƒ€๋„ ์žˆ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ฐธ๊ณ ์šฉ์œผ๋กœ๋งŒ ๋ด์ฃผ์„ธ์š” ๐Ÿ˜‚

 

๋งŽ์ด ๋ถ€์กฑํ•œ ๋‚ด์šฉ์ด์…จ๊ฒ ์ง€๋งŒ ๋„์›€์ด ๋˜์…จ๋‹ค๋ฉด ๋Œ“๊ธ€ ํ•œ ๋ฒˆ์”ฉ ๋‚จ๊ฒจ์ฃผ์‹œ๋ฉด ๋งŽ์ด ๋ฟŒ๋“ฏํ•  ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค. ๐Ÿ˜๐Ÿ˜

 

 

 

 

 

 

 

[์ •๋ณด์ฒ˜๋ฆฌ๊ธฐ์‚ฌ ์‹ค๊ธฐ] 9์žฅ ์†Œํ”„ํŠธ์›จ์–ด ๊ฐœ๋ฐœ ๋ณด์•ˆ ๊ตฌ์ถ•

 

[์ •๋ณด์ฒ˜๋ฆฌ๊ธฐ์‚ฌ ์‹ค๊ธฐ] 9์žฅ ์†Œํ”„ํŠธ์›จ์–ด ๊ฐœ๋ฐœ ๋ณด์•ˆ ๊ตฌ์ถ•

์ด๋ฒˆ์—๋Š” 2022๋…„๋„ ์‹ค๊ธฐ ์‹œํ—˜ ์ค€๋น„ํ•˜๋ฉด์„œ ๋…ธํŠธ์ •๋ฆฌ ํ–ˆ์—ˆ๋˜ ๋‚ด์šฉ๋“ค์„ ํฌ์ŠคํŒ… ํ•ด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. ๋‚ด์šฉ์ด ๋งŽ์ด ๋ถ€์กฑํ•˜์‹œ๊ฒ ์ง€๋งŒ ์–ด๋””๊นŒ์ง€ ์ฐธ๊ณ ์šฉ์œผ๋กœ๋งŒ ๋ด์ฃผ์‹œ๋ฉด ๊ฐ์‚ฌํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค. ๐Ÿ˜๐Ÿ˜ ์ฐธ๊ณ ๋กœ, ์‹œ๊ฐ„

sm-code.tistory.com

 

[์ •๋ณด์ฒ˜๋ฆฌ๊ธฐ์‚ฌ ์‹ค๊ธฐ] 10์žฅ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด ํ™œ์šฉ

์‹œ๊ฐ„ ๊ด€๊ณ„์ƒ ๋…ธํŠธ ์ •๋ฆฌ ๋Œ€์‹  ๋ฌธ์ œ ํ’€์ด๋กœ ๋Œ€์ฒด... ๐Ÿ˜ข๐Ÿ˜ข

 

 

[์ •๋ณด์ฒ˜๋ฆฌ๊ธฐ์‚ฌ ์‹ค๊ธฐ] 11์žฅ ์‘์šฉ SW ๊ธฐ์ดˆ ์–ธ์–ด ํ™œ์šฉ

์‹œ๊ฐ„ ๊ด€๊ณ„์ƒ ๋…ธํŠธ ์ •๋ฆฌ ๋Œ€์‹  ๋ฌธ์ œ ํ’€์ด๋กœ ๋Œ€์ฒด... ๐Ÿ˜ข๐Ÿ˜ข

 

 

[์ •๋ณด์ฒ˜๋ฆฌ๊ธฐ์‚ฌ ์‹ค๊ธฐ] 12์žฅ ์ œํ’ˆ์†Œํ”„ํŠธ์›จ์–ด ํŒจํ‚ค์ง•

์‹œ๊ฐ„ ๊ด€๊ณ„์ƒ ๋…ธํŠธ ์ •๋ฆฌ ๋Œ€์‹  ๋ฌธ์ œ ํ’€์ด๋กœ ๋Œ€์ฒด... ๐Ÿ˜ข๐Ÿ˜ข

 

 

 

 

Contents

ํฌ์ŠคํŒ… ์ฃผ์†Œ๋ฅผ ๋ณต์‚ฌํ–ˆ์Šต๋‹ˆ๋‹ค. ๐Ÿ˜Š

์ด ๊ธ€์ด ๋„์›€์ด ๋˜์—ˆ๋‹ค๋ฉด ๊ณต๊ฐ ๋ถ€ํƒ๋“œ๋ฆฝ๋‹ˆ๋‹ค. ๐Ÿ‘