๐Ÿฅ‡ ์ •๋ณด์ฒ˜๋ฆฌ ๊ธฐ์‚ฌ ์‹ค๊ธฐ SQL ๋ฌธ์ œ

1. ๋‹ค์Œ๊ณผ ๊ฐ™์ด ํ…Œ์ด๋ธ”์„ ์ •์˜ํ•˜๊ณ  ํŠœํ”Œ์„ ์‚ฝ์ž…ํ•˜์˜€์„ ๋•Œ, ๊ฐ ๋ฒˆํ˜ธ์— SQL๋ฌธ์„ ์‹คํ–‰ํ•œ ๊ฒฐ๊ณผ๋ฅผ ์ ์œผ์‹œ์˜ค.

CREATE TABLE ๋ถ€์„œ (
    ๋ถ€์„œ์ฝ”๋“œ INT PRIMARY KEY,
    ๋ถ€์„œ๋ช… VARCHAR(20)
);

CREATE TABLE ์ง์› (
    ์ง์›์ฝ”๋“œ INT PRIMARY KEY,
    ๋ถ€์„œ์ฝ”๋“œ INT,
    ์ง์›๋ช… VARCHAR(20),
    FOREIGN KEY(๋ถ€์„œ์ฝ”๋“œ) REFERENCES ๋ถ€์„œ(๋ถ€์„œ์ฝ”๋“œ)
    ON DELETE CASCADE
);

INSERT INTO ๋ถ€์„œ VALUES(10, '์˜์—…๋ถ€');
INSERT INTO ๋ถ€์„œ VALUES(20, '๊ธฐํš๋ถ€');
INSERT INTO ๋ถ€์„œ VALUES(30, '๊ฐœ๋ฐœ๋ถ€');

INSERT INTO ์ง์› VALUES(1001, 10, '์ด์ง„์ˆ˜');
INSERT INTO ์ง์› VALUES(1002, 10, '๊ณฝ๋ช…๊ฒฝ');
INSERT INTO ์ง์› VALUES(1003, 20, '๊น€๊ฑด๊ธธ');
INSERT INTO ์ง์› VALUES(1004, 20, '์ตœ๋ฏผ์ˆ˜');
INSERT INTO ์ง์› VALUES(1005, 20, '์ด์šฉ๊ด‘');
INSERT INTO ์ง์› VALUES(1006, 30, 'ํ•œ์„ฑ๊ด‘');
INSERT INTO ์ง์› VALUES(1007, 30, '๋ฐ•๋ฏธ๊ฒฝ');

์‹คํ–‰ SQL โ‘ 

SELECT DISTINCT COUNT(๋ถ€์„œ์ฝ”๋“œ) FROM ์ง์› WHERE ๋ถ€์„œ์ฝ”๋“œ = 20;

๊ฒฐ๊ณผ: 3

ํ•ด์„ค :

  • DISTINCT(์ค‘๋ณต ์ œ๊ฑฐ)๋Š” ๋ถ€์„œ์ฝ”๋“œ๊ฐ€ ์•„๋‹Œ COUNT(๋ถ€์„œ์ฝ”๋“œ)์— ์ ์šฉ๋˜๋ฏ€๋กœ, ์—ฌ์ „ํžˆ ๋ถ€์„œ์ฝ”๋“œ๊ฐ€ 20์ธ ์ปฌ๋Ÿผ์˜ ์ˆ˜ '3'์ด ๋œ๋‹ค.

์‹คํ–‰ SQL โ‘ก

DELETE FROM ๋ถ€์„œ WHERE ๋ถ€์„œ์ฝ”๋“œ = 20;
SELECT DISTINCT COUNT(๋ถ€์„œ์ฝ”๋“œ) FROM ์ง์›;

๊ฒฐ๊ณผ: 4

ํ•ด์„ค :

  • ๋ถ€์„œ์ฝ”๋“œ๊ฐ€ 20์ธ ์ปฌ๋Ÿผ์„ ์‚ญ์ œํ•œ ํ›„, ๋ชจ๋“  ์ง์›ํ…Œ์ด๋ธ”์˜ ๋ถ€์„œ์ฝ”๋“œ ๊ฐœ์ˆ˜๋ฅผ ์„ผ๋‹ค. ์ด๋•Œ DISTINCT(์ค‘๋ณต ์ œ๊ฑฐ)๋Š” COUNT์— ์ ์šฉ๋˜๋ฏ€๋กœ ์—ฌ์ „ํžˆ '4'์ด๋‹ค.

2. ํ•™์ƒ(STUDENT) ํ…Œ์ด๋ธ”์—์„œ SQL ์‹คํ–‰ ๊ฒฐ๊ณผ๋กœ ํ‘œ์‹œ๋˜๋Š” ํŠœํ”Œ์˜ ์ˆ˜๋ฅผ ์˜ˆ์ธกํ•˜์‹œ์˜ค.

  • DEPT๋Š” 'ํ•™๊ณผ'๋ฅผ ๋œปํ•œ๋‹ค

๊ฐ€์ •: ์ „๊ธฐ๊ณผ ํ•™์ƒ 50๋ช…, ์ „์ž๊ณผ ํ•™์ƒ 100๋ช…, ์ „์‚ฐ๊ณผ ํ•™์ƒ 50๋ช…

์‹คํ–‰ SQL โ‘ 

SELECT DEPT FROM STUDENT;

๊ฒฐ๊ณผ: 200

์‹คํ–‰ SQL โ‘ก

SELECT DISTINCT DEPT FROM STUDENT;

๊ฒฐ๊ณผ: 3

ํ•ด์„ค :

  • ์ „๊ธฐ/์ „์ž/ํ™”ํ•™ 3๊ฐ€์ง€ ์ข…๋ฅ˜๋กœ ์ด๋ฃจ์–ด์ง„ DEPT ์†์„ฑ์˜ ์ค‘๋ณต์„ ์ œ๊ฑฐํ•˜๋ฉด '3'์ด ๋‚จ๋Š”๋‹ค.

์‹คํ–‰ SQL โ‘ข

SELECT COUNT(DISTINCT DEPT) FROM STUDENT WHERE DEPT = '์ „์‚ฐ๊ณผ';

๊ฒฐ๊ณผ: 1

ํ•ด์„ค :

  • ์ „์‚ฐ๊ณผ์ธ ํ•™์ƒ๋“ค์˜ ํ•™๊ณผ๋ฅผ ๋ฝ‘๋Š”๋‹ค. ์ดํ›„ ํ•ด๋‹น ํ•™๊ณผ์˜ ์ค‘๋ณต์„ ์ œ๊ฑฐํ•˜๋ฉด 1๊ฐœ๋งŒ ๋‚จ๊ฒŒ ๋œ๋‹ค.

3. ๋‹ค์Œ SQL๋ฌธ์—์„œ ๊ด„ํ˜ธ ์•ˆ์— ๋“ค์–ด๊ฐˆ ์•Œ๋งž์€ ๋‚ด์šฉ์„ ์ž‘์„ฑํ•˜์‹œ์˜ค.

  • 'H'์ œ์กฐ์‚ฌ์˜ '๋‹จ๊ฐ€' ๋ณด๋‹ค ๋†’์€ '๋‹จ๊ฐ€'๋ฅผ ๊ฐ€์ง„ ์ œํ’ˆ์˜ ์ •๋ณด๋ฅผ ์กฐํšŒํ•˜๋Š” SQL๋ฌธ์ด๋‹ค.
SELECT ์ œํ’ˆ๋ช…, ๋‹จ๊ฐ€, ์ œ์กฐ์‚ฌ
FROM ์ œํ’ˆ
WHERE ๋‹จ๊ฐ€ > (    ) (SELECT ๋‹จ๊ฐ€ FROM ์ œํ’ˆ WHERE ์ œ์กฐ์‚ฌ = 'H');

๋‹ต: ALL

ํ•ด์„ค :

  • ํ•ด๋‹น ์ฟผ๋ฆฌ๋Š”, where์ ˆ์˜ ํ•˜์œ„ ์งˆ์˜์— ๊ฒฐ๊ณผ๋ฅผ ๋ฐ˜์˜ํ•˜์—ฌ ๋ณธ ์งˆ์˜์˜ ์กฐ๊ฑด์— ์ถ”๊ฐ€ํ•˜๋Š” SQL์ด๋‹ค.
  • ๋งŒ์•ฝ ์„œ๋ธŒ์ฟผ๋ฆฌ์—์„œ 'H'์ œ์กฐ์‚ฌ์˜ ์ œํ’ˆ์˜ ๋‹จ๋‹ค๊ฐ€ 100/200/400 ์ด ๋‚˜์™”๋‹ค๋ฉด,
  • ํ•ด๋‹น ๋‹จ๊ฐ€๋“ค ๋ณด๋‹ค ๋†’์€ ๋‹จ๊ฐ€๋ฅผ ์ฐพ๊ธฐ ์œ„ํ•ด์„œ๋Š” 100/200/400์„ ๋ชจ๋‘ ๋น„๊ตํ•˜์—ฌ์•ผ ํ•œ๋‹ค.
  • ๋”ฐ๋ผ์„œ ALLํ‚ค์›Œ๋“œ๊ฐ€ ๋“ค์–ด๊ฐ„๋‹ค๋ฉด ๋ชจ๋“  ๋‹จ๊ฐ€๋ฅผ ๋น„๊ตํ•  ์ˆ˜ ์žˆ๋‹ค.

์„œ๋ธŒ์ฟผ๋ฆฌ ์•ž์— ์•„๋ฌด ํ‚ค์›Œ๋“œ๋„ ๋ถ™์ง€ ์•Š๋Š”๋‹ค๋ฉด, ์„œ๋ธŒ์ฟผ๋ฆฌ๊ฐ€ ๋‹ค์ค‘ ํ–‰์ผ๋•Œ ์˜ค๋ฅ˜๋ฅผ ๋ฐœ์ƒ์‹œํ‚จ๋‹ค. ์ด๋•Œ, ANY๋‚˜ ALL ์—ฐ์‚ฐ์ž๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋‹ค์ค‘ํ–‰์„ ๋น„๊ตํ•  ์ˆ˜ ์žˆ๋‹ค.

ANY -> ์„œ๋ธŒ์ฟผ๋ฆฌ ๊ฒฐ๊ณผ ์ค‘ ํ•˜๋‚˜๋ผ๋„ ์ฐธ์ด๋ฉด ํ•ด๋‹น ํ–‰์€ ์ฐธ ALL -> ์„œ๋ธŒ์ฟผ๋ฆฌ ๊ฒฐ๊ณผ ์ค‘ ๋ชจ๋“  ๊ฒƒ์— ์ฐธ์ด์–ด์•ผ ํ•ด๋‹น ํ–‰์€ ์ฐธ


4. ์•„๋ž˜ ํ…Œ์ด๋ธ”์„ ๊ธฐ๋ฐ˜์œผ๋กœ SQL ์‹คํ–‰ ๊ฒฐ๊ณผ๋ฅผ ์˜ˆ์ธกํ•˜์‹œ์˜ค.

TABLE

INDEX COL1 COL2
1 2 NULL
2 4 6
3 3 5
4 6 3
5 NULL 3

์‹คํ–‰ SQL

SELECT COUNT(COL2)
FROM TABLE
WHERE COL1 IN (2, 3)
    OR COL2 IN (3, 5);

๊ฒฐ๊ณผ: 3

ํ•ด์„ค :

  • COL1 ์ปฌ๋Ÿผ์— 2๋‚˜ 3์ด ํฌํ•จ๋˜์—ˆ๊ฑฐ๋‚˜, COL2์ปฌ๋Ÿผ์— 3์ด๋‚˜ 5๊ฐ€ ํฌํ•จ๋œ ์ปฌ๋Ÿผ (4๊ฐœ)๋ฅผ ์ฐพ๋Š”๋‹ค,
COL2
NULL
5
3
3
  • ์—ฌ๊ธฐ์„œ NULL์€ COUNT์— ์ง‘๊ณ„๊ฐ€ ๋˜์ง€ ์•Š์œผ๋ฏ€๋กœ ๋‹ต์€ '3'์ด๋‹ค.

5. ๋‹ค์Œ์€ <EMPLOYEE> ๋ฆด๋ ˆ์ด์…˜์— ๋Œ€ํ•ด <๊ด€๊ณ„ ๋Œ€์ˆ˜์‹>์„ ์ˆ˜ํ–‰ํ–ˆ์„ ๋•Œ ์ถœ๋ ฅ๋˜๋Š” <๊ฒฐ๊ณผ>์ด๋‹ค. <๊ฒฐ๊ณผ>์˜ ๊ฐ ์นธ(โ‘ ~โ‘ค)์— ๋“ค์–ด๊ฐˆ ์•Œ๋งž์€ ๋‹ต์„ ์“ฐ์‹œ์˜ค.

Pasted image 20250225161448.png

EMPLOYEE ํ…Œ์ด๋ธ”

INDEX AGE TTL
1 48 ๋ถ€์žฅ
2 25 ๋Œ€๋ฆฌ
3 41 ๊ณผ์žฅ
4 36 ์ฐจ์žฅ

๊ฒฐ๊ณผ ํ…Œ์ด๋ธ”

( โ‘  )
( โ‘ก )
( โ‘ข )
( โ‘ฃ )
( โ‘ค )

๊ฒฐ๊ณผ :

  • โ‘  TTL - โ‘ก ๋ถ€์žฅ - โ‘ข ๋Œ€๋ฆฌ - โ‘ฃ ๊ณผ์žฅ - โ‘ค ์ฐจ์žฅ

ํ•ด์„ค :

  • ํ•ด๋‹น ๊ด€๊ณ„ ๋Œ€์ˆ˜์‹์˜ ํŒŒ์ด๋Š” ์†์„ฑ ๋ฆฌ์ŠคํŠธ์— ์ œ์‹œ๋œ ์†์„ฑ๊ฐ’๋งŒ์„ ์ถ”์ถœํ•˜์—ฌ ์ƒˆ๋กœ์šด ๋ฆด๋ ˆ์ด์…˜์„ ๋งŒ๋“œ๋Š” PROJECT์—ฐ์‚ฐ์ด๋‹ค
  • ๋”ฐ๋ผ์„œ, TTL์†์„ฑ์ด ์ถ”์ถœ๋˜์–ด ์†์„ฑ๋ช…์ธ TTL๋ถ€ํ„ฐ ๋ชจ๋“  ์†์„ฑ๊ฐ’์ด ๊ฒฐ๊ณผ๋กœ ๋‚˜ํƒ€๋‚œ๋‹ค. = SELECT TTL FROM EMPLOYEE

โœ… 1) ์ˆœ์ˆ˜ ๊ด€๊ณ„ ์—ฐ์‚ฐ (๊ธฐ๋ณธ ์—ฐ์‚ฐ)

์ด ์—ฐ์‚ฐ๋“ค์€ ๊ด€๊ณ„ํ˜• ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์˜ ๋ฐ์ดํ„ฐ๋ฅผ ๊ฒ€์ƒ‰ํ•˜๊ณ  ๋ณ€ํ˜•ํ•˜๋Š” ๋ฐ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค.

์—ฐ์‚ฐ ๊ธฐํ˜ธ SQL ์—ฐ์‚ฐ ์„ค๋ช…
์„ ํƒ (Selection, ฯƒ) ฯƒ WHERE ํŠน์ • ์กฐ๊ฑด์„ ๋งŒ์กฑํ•˜๋Š” ํŠœํ”Œ(ํ–‰)๋งŒ ์„ ํƒ
ํˆฌ์˜ (Projection, ฯ€) ฯ€ SELECT (์—ด ์„ ํƒ) ํŠน์ • ์†์„ฑ(์—ด)๋งŒ ์„ ํƒ
๊ต์ฐจ๊ณฑ (Cartesian Product, ร—) ร— CROSS JOIN ๋‘ ํ…Œ์ด๋ธ”์˜ ๋ชจ๋“  ์กฐํ•ฉ์„ ๋ฐ˜ํ™˜
์กฐ์ธ (Join, โจ) โจ INNER JOIN, LEFT JOIN ๋“ฑ ๊ณตํ†ต ์†์„ฑ์„ ๊ธฐ์ค€์œผ๋กœ ๋‘ ํ…Œ์ด๋ธ”์„ ์—ฐ๊ฒฐ
๋‚˜๋ˆ„๊ธฐ (Division, รท) รท EXISTS, NOT EXISTS ํŠน์ • ์กฐ๊ฑด์„ ๋งŒ์กฑํ•˜๋Š” ํŠœํ”Œ๋งŒ ์„ ํƒ

โœ… 2) ์ง‘ํ•ฉ ์—ฐ์‚ฐ (Set Operations)

๊ด€๊ณ„ ๋Œ€์ˆ˜์—์„œ ํ…Œ์ด๋ธ”์„ ํ•˜๋‚˜์˜ ์ง‘ํ•ฉ(Set)์œผ๋กœ ๊ฐ„์ฃผํ•˜๊ณ  ์ˆ˜ํ–‰ํ•˜๋Š” ์—ฐ์‚ฐ์ž…๋‹ˆ๋‹ค.

์—ฐ์‚ฐ ๊ธฐํ˜ธ SQL ์—ฐ์‚ฐ ์„ค๋ช…
ํ•ฉ์ง‘ํ•ฉ (Union, โˆช) โˆช UNION ๋‘ ํ…Œ์ด๋ธ”์˜ ๋ชจ๋“  ํŠœํ”Œ์„ ํ•ฉ์นœ ํ›„ ์ค‘๋ณต ์ œ๊ฑฐ
๊ต์ง‘ํ•ฉ (Intersection, โˆฉ) โˆฉ INTERSECT ๋‘ ํ…Œ์ด๋ธ”์—์„œ ๊ณตํ†ต๋œ ํŠœํ”Œ๋งŒ ๋ฐ˜ํ™˜
์ฐจ์ง‘ํ•ฉ (Difference, -) โˆ’ EXCEPT, MINUS ์ฒซ ๋ฒˆ์งธ ํ…Œ์ด๋ธ”์—์„œ ๋‘ ๋ฒˆ์งธ ํ…Œ์ด๋ธ”์— ์—†๋Š” ํŠœํ”Œ ๋ฐ˜ํ™˜

6. ๋‹ค์Œ <์†์„ฑ ์ •์˜์„œ>๋ฅผ ์ฐธ๊ณ ํ•˜์—ฌ <ํ•™์ƒ> ํ…Œ์ด๋ธ”์— ๋Œ€ํ•ด 20์ž์˜ ๊ฐ€๋ณ€ ๊ธธ์ด๋ฅผ ๊ฐ€์ง„ ์ฃผ์†Œ ์†์„ฑ์„ ์ถ”๊ฐ€ํ•˜๋Š” <SQL๋ฌธ>์„ ์™„์„ฑํ•˜์‹œ์˜ค.

(๋‹จ, SQL๋ฌธ์€ ISO/IEC 9075 ํ‘œ์ค€์„ ๊ธฐ๋ฐ˜์œผ๋กœ ์ž‘์„ฑํ•˜์‹œ์˜ค.)

์†์„ฑ ์ •์˜์„œ

์†์„ฑ๋ช… ๋ฐ์ดํ„ฐํƒ€์ž… ์ œ์•ฝ์กฐ๊ฑด ํ…Œ์ด๋ธ”๋ช…
ํ•™๋ฒˆ CHAR(10) UNIQUE ํ•™์ƒ
์ด๋ฆ„ VARCHAR(8) NOT NULL ํ•™์ƒ
์ฃผ๋ฏผ๋ฒˆํ˜ธ CHAR(13) ํ•™์ƒ
ํ•™๊ณผ VARCHAR(16) FOREIGN KEY ํ•™์ƒ
ํ•™๋…„ INT ํ•™์ƒ

SQL๋ฌธ

( 1 ) TABLE ํ•™์ƒ ( 2 ) ์ฃผ์†Œ VARCHAR(20);

๋‹ต : 1 -> ALTER 2 -> ADD

ํ•ด์„ค :

  • ์†์„ฑ์„ ์ถ”๊ฐ€ํ•œ๋‹ค -> ํ…Œ์ด๋ธ”์„ ์ˆ˜์ •ํ•œ๋‹ค -> ALTER
  • ALTER + ADD ์†์„ฑ ์ถ”๊ฐ€.

7. ๋‹ค์Œ <ํ•™์ƒ> ํ…Œ์ด๋ธ”์„ ์ฐธ๊ณ ํ•˜์—ฌ <์ฒ˜๋ฆฌ ์กฐ๊ฑด>์—์„œ ์š”๊ตฌํ•˜๋Š” SQL๋ฌธ์„ ์ž‘์„ฑํ•˜์‹œ์˜ค.

ํ•™์ƒ ํ…Œ์ด๋ธ”

ํ•™๋ฒˆ (varchar) ์ด๋ฆ„ (varchar) ํ•™๋…„ (number) ์ˆ˜๊ฐ•๊ณผ๋ชฉ (varchar) ์ ์ˆ˜ (number) ์—ฐ๋ฝ์ฒ˜ (varchar)
20E0232 ๊น€๋ฏผ์˜ 3 ์„ธ๋ฌดํ–‰์ • 4.5 010-5412-4544
19D0024 ์ด์„ฑํ™” 2 ํ† ๋ชฉ๊ฐœ๋ก  3 010-1548-4796
20E0135 ์„ฑ์œ ์ˆ˜ 4 ์‹ค์šฉ๋ฒ•ํ•™ 3.5 010-9945-7411
20E0511 ์œ ์ธํ˜ 1 ๋ฐ์ดํ„ฐ๋ก  2 010-3451-4972

์ฒ˜๋ฆฌ ์กฐ๊ฑด

  1. 3, 4ํ•™๋…„์˜ ํ•™๋ฒˆ, ์ด๋ฆ„์„ ์กฐํšŒํ•œ๋‹ค.
  2. IN ์˜ˆ์•ฝ์–ด๋ฅผ ์‚ฌ์šฉํ•ด์•ผ ํ•œ๋‹ค.
  3. ์†์„ฑ๋ช… ์•„๋ž˜์˜ ๊ด„ํ˜ธ๋Š” ์†์„ฑ์˜ ์ž๋ฃŒํ˜•์„ ์˜๋ฏธํ•œ๋‹ค.

์ •๋‹ต :

SELECT ํ•™๋ฒˆ, ์ด๋ฆ„ FROM ํ•™์ƒ WHERE ํ•™๋…„ IN (3, 4);

ํ•ด์„ค :

  • IN์˜ˆ์•ฝ์–ด๋Š” WHERE์ ˆ๊ณผ ํ•จ๊ป˜ ์“ฐ์ด๋ฉฐ, WHERE ์†์„ฑ IN (์กฐ๊ฑด,์กฐ๊ฑด,...) ๋ฐฉ์‹์œผ๋กœ ์‚ฌ์šฉ๋œ๋‹ค.
  • ํ•ด๋‹น ์กฐ๊ฑด์„ ํฌํ•จํ•˜๊ณ  ์žˆ๋Š” ๋ชจ๋“  ์†์„ฑ์ด ์„ ํƒ๋˜๊ฒŒ ๋œ๋‹ค.

8. ๋‹ค์Œ <student> ํ…Œ์ด๋ธ”์„ ์ฐธ๊ณ ํ•˜์—ฌ name ์†์„ฑ์œผ๋กœ idx_name์ด๋ผ๋Š” ์ธ๋ฑ์Šค๋ฅผ ์ƒ์„ฑํ•˜๋Š” SQL๋ฌธ์„ ์ž‘์„ฑํ•˜์‹œ์˜ค.

student ํ…Œ์ด๋ธ”

stid name score deptid
2001 brown 85 PE01
2002 white 45 EF03
2003 black 67 UW11

์ •๋‹ต :

CREATE INDEX idx_name ON student(name);

ํ•ด์„ค :

  • ์ธ๋ฑ์Šค ์ƒ์„ฑ ๋ฌธ๋ฒ• : CREATE INDEX ์ธ๋ฑ์Šค๋ช… ON ํ…Œ์ด๋ธ”๋ช…(์†์„ฑ);

9. ํ•™์ƒ ํ…Œ์ด๋ธ”์—์„œ ํ•™๊ณผ๋ณ„ ํŠœํ”Œ์˜ ๊ฐœ์ˆ˜๋ฅผ ๊ฒ€์ƒ‰ํ•˜์‹œ์˜ค.

(๋‹จ, ์•„๋ž˜์˜ ์‹คํ–‰ ๊ฒฐ๊ณผ๊ฐ€ ๋˜๋„๋ก ํ•œ๋‹ค.)

<ํ•™์ƒ> ํ…Œ์ด๋ธ”

ํ•™๋ฒˆ ์ด๋ฆ„ ํ•™๋…„ ํ•™๊ณผ ์ฃผ์†Œ
20160011 ๊น€์˜๋ž€ 2 ์ „๊ธฐ ์„œ์šธ
19211013 ์ด์ œ์šฐ 3 ์ปดํ“จํ„ฐ ๋Œ€๊ตฌ
21168007 ํ•จ์†Œ์ง„ 1 ์ „์ž ๋ถ€์‚ฐ
19168002 ์šฐํ˜œ์ • 3 ์ „์ž ๊ด‘์ฃผ
18120073 ๊น€์ง„์ˆ˜ 4 ์ปดํ“จํ„ฐ ์šธ์‚ฐ

<์‹คํ–‰๊ฒฐ๊ณผ>

ํ•™๊ณผ ํ•™๊ณผ๋ณ„ํŠœํ”Œ์ˆ˜
์ „๊ธฐ 1
์ปดํ“จํ„ฐ 2
์ „์ž 2

<์ฒ˜๋ฆฌ ์กฐ๊ฑด>

  • WHERE ์กฐ๊ฑด์ ˆ์€ ์‚ฌ์šฉํ•  ์ˆ˜ ์—†๋‹ค.

  • GROUP BY๋Š” ๋ฐ˜๋“œ์‹œ ํฌํ•จํ•œ๋‹ค.

  • ์ง‘๊ณ„ํ•จ์ˆ˜(Aggregation Function)๋ฅผ ์ ์šฉํ•œ๋‹ค.

  • ํ•™๊ณผ๋ณ„ํŠœํ”Œ์ˆ˜ ์ปฌ๋Ÿผ๋ช…์„ ์ถœ๋ ฅ์— Alias(AS)๋ฅผ ํ™œ์šฉํ•œ๋‹ค.

  • ๋ฌธ์žฅ ๋์˜ ์„ธ๋ฏธ์ฝœ๋ก (;)์€ ์ƒ๋žตํ•ด๋„ ๋ฌด๋ฐฉํ•˜๋‹ค.

  • ์ธ์šฉ๋ถ€ํ˜ธ ์‚ฌ์šฉ์ด ํ•„์š”ํ•œ ๊ฒฝ์šฐ ๋‹จ์ผ ๋”ฐ์˜ดํ‘œ(' ')๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค.

    ์ •๋‹ต :

SELECT ํ•™๊ณผ, COUNT(*) AS ํ•™๊ณผ๋ณ„ํŠœํ”Œ์ˆ˜
FROM ํ•™์ƒ
GROUP BY ํ•™๊ณผ;

10. <์„ฑ์ >` ํ…Œ์ด๋ธ”์—์„œ ๊ณผ๋ชฉ๋ณ„ ์ ์ˆ˜์˜ ํ‰๊ท ์ด 90์  ์ด์ƒ์ธ ๊ณผ๋ชฉ์ด๋ฆ„, ์ตœ์†Œ์ ์ˆ˜, ์ตœ๋Œ€์ ์ˆ˜๋ฅผ ๊ฒ€์ƒ‰ํ•˜๊ณ ์ž ํ•œ๋‹ค.

<์ฒ˜๋ฆฌ ์กฐ๊ฑด>์„ ์ฐธ๊ณ ํ•˜์—ฌ ์ ํ•ฉํ•œ SQL๋ฌธ์„ ์ž‘์„ฑํ•˜์‹œ์˜ค.

<์„ฑ์ > ํ…Œ์ด๋ธ”

ํ•™๋ฒˆ ๊ณผ๋ชฉ๋ฒˆํ˜ธ ๊ณผ๋ชฉ์ด๋ฆ„ ํ•™์  ์ ์ˆ˜
a2001 101 ์ปดํ“จํ„ฐ๊ตฌ์กฐ 6 95
a2002 101 ์ปดํ“จํ„ฐ๊ตฌ์กฐ 6 84
a2003 302 ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค 5 89
a2004 201 ์ธ๊ณต์ง€๋Šฅ 5 92
a2005 302 ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค 5 100
a2006 302 ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค 5 88
a2007 201 ์ธ๊ณต์ง€๋Šฅ 5 93

<๊ฒฐ๊ณผ>

๊ณผ๋ชฉ์ด๋ฆ„ ์ตœ์†Œ์ ์ˆ˜ ์ตœ๋Œ€์ ์ˆ˜
๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค 88 100
์ธ๊ณต์ง€๋Šฅ 92 93

<์ฒ˜๋ฆฌ ์กฐ๊ฑด>

  • WHERE๋ฌธ์€ ์‚ฌ์šฉํ•˜์ง€ ์•Š๋Š”๋‹ค.
  • GROUP BY์™€ HAVING์„ ์ด์šฉํ•œ๋‹ค.
  • ์ง‘๊ณ„ํ•จ์ˆ˜(Aggregation Function)๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋ช…๋ น๋ฌธ์„ ๊ตฌ์„ฑํ•œ๋‹ค.
  • ์ตœ์†Œ์ ์ˆ˜, ์ตœ๋Œ€์ ์ˆ˜๋Š” ๋ณ„์นญ(Alias)์„ ์œ„ํ•œ AS๋ฌธ์„ ์ด์šฉํ•œ๋‹ค.
  • ๋ช…๋ น๋ฌธ ๋งˆ์ง€๋ง‰์˜ ์„ธ๋ฏธ์ฝœ๋ก (;)์€ ์ƒ๋žต ๊ฐ€๋Šฅํ•˜๋‹ค.
  • ์ธ์šฉ ๋ถ€ํ˜ธ๊ฐ€ ํ•„์š”ํ•œ ๊ฒฝ์šฐ ์ž‘์€๋”ฐ์˜ดํ‘œ(')๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค.

์ •๋‹ต :

SELECT ๊ณผ๋ชฉ์ด๋ฆ„, MIN(์ ์ˆ˜) AS ์ตœ์†Œ์ ์ˆ˜, MAX(์ ์ˆ˜) AS ์ตœ๋Œ€์ ์ˆ˜ 
FROM ์„ฑ์  
GROUP BY ๊ณผ๋ชฉ์ด๋ฆ„ 
HAVING AVG(์ ์ˆ˜) >= 90;

ํ•ด์„ค :

  • ๊ณผ๋ชฉ์ด๋ฆ„๋ณ„๋กœ ์—ฌ๋Ÿฌ ์ ์ˆ˜์˜ ํ†ต๊ณ„๋ฅผ ๋‚ด๋Š”๊ฒƒ ์ด๊ธฐ ๋•Œ๋ฌธ์—, GROUP BY ๊ณผ๋ชฉ์ด๋ฆ„์„ ์‚ฌ์šฉํ•œ๋‹ค.
  • ์ด๋•Œ, GROUP BY ~ HAVING ์กฐ๊ฑด ์„ ์‚ฌ์šฉํ•˜์—ฌ, ํ•ด๋‹น ๊ทธ๋ฆ…ํ™”๋œ ๋ฐ์ดํ„ฐ ์ค‘ ๋‹ค์Œ ์กฐ๊ฑด์„ ๋งŒ์กฑํ•˜๋Š” ๊ทธ๋ฃน๋งŒ ํฌํ•จํ•œ๋‹ค.

11.<A> ํ…Œ์ด๋ธ”๊ณผ <B> ํ…Œ์ด๋ธ”์„ ์ฐธ๊ณ ํ•˜์—ฌ <SQL๋ฌธ>์˜ ์‹คํ–‰ ๊ฒฐ๊ณผ๋ฅผ ์“ฐ์‹œ์˜ค.

<A> ํ…Œ์ด๋ธ”

NAME
Smith
Allen
Scott

<B> ํ…Œ์ด๋ธ”

RULE
S%
%T%

<SQL๋ฌธ>

SELECT COUNT(*) CNT 
FROM A 
CROSS JOIN B 
WHERE A.NAME LIKE B.RULE;

๋‹ต : 4

ํ•ด์„ค :

  • SELECT COUNT(*) CNT ์—์„œ CNT๋Š” as CNT ๊ฐ€ ์ƒ๋žต๋œ ํ˜•ํƒœ์ด๋‹ค.
  • CROSS JOIN์ด๋ž€ ์นด๋””์…˜ ํ”„๋กœ๋•ํŠธ(๊ณฑ)์„ ์ˆ˜ํ–‰ํ•˜๋Š” ์กฐ์ธ๋ฐฉ์‹์œผ๋กœ์จ, Aํ…Œ์ด๋ธ”์˜ ๋ชจ๋“  ํ–‰๊ณผ, Bํ…Œ์ด๋ธ”์˜ ๋ชจ๋“  ํ–‰์˜ ๋ชจ๋“  ๊ฐ€๋Šฅํ•œ ์กฐํ•ฉ์„ ๊ตฌํ•œ๋‹ค.
A.NAME B.RULE
Smith S%
Smith %T%
Allen S%
Allen %T%
Scott S%
Scott %T%

๋”ฐ๋ผ์„œ, ์ € ์ค‘ a.name์ปฌ๋Ÿผ์ด b.rule์„ ๋”ฐ๋ฅด๋Š”(like ์—ฐ์‚ฐ์„ ํ–ˆ์„ ๋•Œ, ์ฐธ์ธ ๊ฒฐ๊ณผ๋Š”)

Smith S%
Smith %T%
Scott S%
Scott %T%

์ด 4๊ฐœ์ด๋‹ค.


  • . ๋‹ค์Œ ๋นˆ์นธ์— ๋“ค์–ด๊ฐˆ UNION ์—ฐ์‚ฐ์˜ ๊ฒฐ๊ณผ๊ฐ’์„ ์ž‘์„ฑํ•˜์‹œ์˜ค. Pasted image 20250415181225.png
[์ฟผ๋ฆฌ]
SELECT A FROM  T1
UNION
SELECT A FROM  T2
ORDER BY A DESC;
  • UNION โ†’ ์ค‘๋ณต ์ œ๊ฑฐ
  • UNION ALL โ†’ ์ค‘๋ณต ํ—ˆ์šฉ

๋‹ต :

4 3 1


  • ๋‹ค์Œ ์กฐ๊ฑด์„ ์ฐธ๊ณ ํ•˜์—ฌ, SQL๋ฌธ์—์„œ ๊ด„ํ˜ธ์•ˆ์— ์•Œ๋งž๋Š” ๋‹จ์–ด๋ฅผ ์ž‘์„ฑํ•˜์‹œ์˜ค.

[์กฐ๊ฑด] ํ•™์ƒ ํ…Œ์ด๋ธ”์„ ์ฐธ์กฐํ•˜๋Š” ๋‹ค๋ฅธ VIEW๋‚˜ ์ œ์•ฝ ์กฐ๊ฑด๊นŒ์ง€ ๋ชจ๋‘ ์‚ญ์ œ๋˜์–ด์•ผ ํ•œ๋‹ค. ๋‹จ, ์šฉ์–ด์˜ ๋Œ€ยท์†Œ๋ฌธ์ž๋Š” ์ƒ๊ด€ํ•˜์ง€ ์•Š๋Š”๋‹ค.


DROP VIEW ํ•™์ƒ ( )

๊ด€๋ จ๋œ ๊ฒƒ ๋ชจ๋‘ ์‚ญ์ œ โ†’ ์ผ€์Šค ์ผ€์ด๋“œ

๋‹ต :

CASCADE


  • ๋‹ค์Œ์€, ํ…Œ์ด๋ธ”์—์„œ ์กฐ๊ฑด๊ฐ’์„ ์‹คํ–‰ํ•œ ํ™”๋ฉด์ด๋‹ค. ์ด์— ๋Œ€ํ•œ ์•Œ๋งž๋Š” ๊ฒฐ๊ณผ๊ฐ’์„ ์ž‘์„ฑํ•˜์‹œ์˜ค. Pasted image 20250417121150.png

  • CROSS JOIN ์€ ์นด๋””์…˜ ๊ณฑ์œผ๋กœ, ๊ฐ ํ–‰์œผ๋กœ ๋งŒ๋“ค์ˆ˜ ์žˆ๋Š” ๋ชจ๋“  ๊ฒฝ์šฐ ์ฆ‰ 6๊ฐœ์˜ ํ–‰์ด ์ƒ๊ธด๋‹ค.

  • ๊ทธ ์ค‘, s๋กœ ์‹œ์ž‘ํ•˜๊ณ  , t๋ฅผ ํฌํ•จํ•˜๊ณ  ์žˆ๋Š” ์ปฌ๋Ÿผ์€ ์ด 4๊ฐœ์ด๋‹ค.

๋‹ต :

4