SQLD

[SQLD] 2-1. SQL ๊ธฐ๋ณธ

์ด์•™์ง€ 2023. 6. 7. 16:34

๐Ÿ“–SQL ๋ฌธ์žฅ ์ข…๋ฅ˜

DML SELECT, INSERT, UPDATE, DELETE ๋ฐ์ดํ„ฐ ์กฐํšŒ, ๊ฒ€์ƒ‰์„ ํ•˜๊ธฐ ์œ„ํ•œ ๋ช…๋ น์–ด
๋ฐ์ดํ„ฐ์— ๋ณ€ํ˜•์„ ๊ฐ€ํ•˜๋Š” ๋ช…๋ น์–ด
aka  ๋ฐ์ดํ„ฐ ๋ถ€์†์–ด(Data Sub Language), ๋น„์ ˆ์ฐจ์  ๋ฐ์ดํ„ฐ ์กฐ์ž‘์–ด
DDL CREATE, ALTER, DROP, RENAME ๋ฐ์ดํ„ฐ ๊ตฌ์กฐ ์ •์˜, ๊ตฌ์กฐ ์ƒ์„ฑ, ๋ณ€๊ฒฝ, ์‚ญ์ œ ๋“ฑ ๋ฐ์ดํ„ฐ ๊ตฌ์กฐ์™€ ๊ด€๋ จ๋œ ๋ช…๋ น์–ด
DCL GRANT, REVOKE DB์— ์ ‘๊ทผํ•˜๊ณ  ๊ฐ์ฒด๋“ค์„ ์‚ฌ์šฉํ•˜๋„๋ก ๊ถŒํ•œ์„ ์ฃผ๊ณ  ํšŒ์ˆ˜ํ•˜๋Š” ๋ช…๋ น์–ด
TCL COMMIT, ROLLBACK DML์— ์˜ํ•ด ์กฐ์ž‘๋œ ๊ฒฐ๊ณผ๋ฅผ ํŠธ๋žœ์žญ์…˜ ๋ณ„๋กœ ์ œ์–ดํ•˜๋Š” ๋ช…๋ น์–ด

 

 

๐Ÿ“–๋น„์ ˆ์ฐจ์  ๋ฐ์ดํ„ฐ ์กฐ์ž‘์–ด vs ์ ˆ์ฐจ์  ๋ฐ์ดํ„ฐ ์กฐ์ž‘์–ด

  • ๋น„์ ˆ์ฐจ์  : ์‚ฌ์šฉ์ž๊ฐ€ ๋ฌด์Šจ ๋ฐ์ดํ„ฐ๋ฅผ ์›ํ•˜๋Š”์ง€
  • ์ ˆ์ฐจ์  : ์‚ฌ์šฉ์ž๊ฐ€ ๋ฌด์Šจ ๋ฐ์ดํ„ฐ๋ฅผ ์›ํ•˜๋Š”์ง€, ์–ด๋–ป๊ฒŒ ์ ‘๊ทผํ•ด์•ผ ๋˜๋Š”์ง€ ๋ช…์„ธ(PL/SQL, T-SQL) 

 

๐Ÿ“–PK ์ง€์ • ๋ฐฉ๋ฒ•

<!-- ์„ ์–ธ๋ฌธ ๋‚ด๋ถ€ -->
CREATE TABLE A
( AA VARCHAR2(10) NOT NULL, ...
	, CONSTRAINT A_PK PRIMARY KEY (AA) );
    
<!-- ์„ ์–ธ๋ฌธ ์™ธ๋ถ€ -->
ALTER TABLE A ADD CONSTRAINT A_PK PRIMARY KEY(AA);

 

โœ๏ธ์ปฌ๋Ÿผ์— ๋Œ€ํ•œ ์ •์˜ ๋ณ€๊ฒฝ

<!-- ORACLE -->
ALTER TABLE A MODIFY (AA VARCHAR2(30) NOT NULL);

<!-- SQL SERVER -->
ALTER TABLE A ALTER COLUMN AA VARCHAR(30) NOT NULL;

 

๐Ÿ“–์ œ์•ฝ์กฐ๊ฑด(Constraints) ์ข…๋ฅ˜

  • PRIMARY KEY = UNIQUE + NOT NULL
  • UNIQUE KEY : ํ…Œ์ด๋ธ” ๋‚ด ์ค‘๋ณต๋˜๋Š” ๊ฐ’์ด ์—†์Œ, NULL ๊ฐ€๋Šฅ
  • NOT NULL
  • CHECK
  • FOREIGN KEY
  • ์ดˆ๊ธฐ ์„ ์–ธ์— PRIMARY KEY๋ผ๊ณ  ์„ ์–ธํ•˜๋ฉด NOT NULL ์•ˆ๊ฑธ์–ด๋„ ๋จ
  • ์ด๋ฏธ PK ์ง€์ •ํ–ˆ์œผ๋ฉด ALTER TABLE์—์„œ PK ์žฌ์ง€์ • X

 

โœ๏ธSQL๊ตฌ๋ถ„

<!-- ANSI ํ…Œ์ด๋ธ” ๋ช… ์ˆ˜์ • -->
RENAME A TO AA;

<!-- ํ…Œ์ด๋ธ”์˜ ๋ถˆํ•„์š” ์ปฌ๋Ÿผ ์‚ญ์ œ -->
ALTER TABLE A DROP COLUMN AA;

 

๐Ÿ“–์ฐธ์กฐ ๋™์ž‘

  • DELETE(/MODIFY)
  1. CASCADE : MASTER ์‚ญ์ œ ์‹œ CHILD ๊ฐ™์ด ์‚ญ์ œ
  2. SET NULL : MASTER ์‚ญ์ œ ์‹œ CHILD ํ•ด๋‹น ํ•„๋“œ NULL
  3. SET DEFAULT : MASTER ์‚ญ์ œ ์‹œ CHILD ํ•ด๋‹น ํ•„๋“œ DEFAULT ๊ฐ’์œผ๋กœ ์„ค์ •
  4. RESTRICT : CHILD ํ…Œ์ด๋ธ”์— PK ๊ฐ’์ด ์—†๋Š” ๊ฒฝ์šฐ๋งŒ MASTER ์‚ญ์ œ ํ—ˆ์šฉ
  5. NO ACTION : ์ฐธ์กฐ ๋ฌด๊ฒฐ์„ฑ์„ ์œ„๋ฐ˜ํ•˜๋Š” ์‚ญ์ œ/์ˆ˜์ • ์•ก์…˜์„ ์ทจํ•˜์ง€ ์•Š์Œ
  • INSERT ACTION
  1. AUTOMATIC : MASTER ํ…Œ์ด๋ธ”์— PK๊ฐ€ ์—†๋Š” ๊ฒฝ์šฐ MASTER PK๋ฅผ ์ƒ์„ฑ ํ›„ CHILD ์ž…๋ ฅ
  2. SET NULL : MASTER ํ…Œ์ด๋ธ”์— PK๊ฐ€ ์—†๋Š” ๊ฒฝ์šฐ CHILD ์™ธ๋ถ€ํ‚ค๋ฅผ NULL  ๊ฐ’์œผ๋กœ ์ฒ˜๋ฆฌ
  3. SET DEFAULT : MASTER ํ…Œ์ด๋ธ”์— PK๊ฐ€ ์—†๋Š” ๊ฒฝ์šฐ CHILD ์™ธ๋ถ€ํ‚ค๋ฅผ ์ง€์ •๋œ ๊ธฐ๋ณธ๊ฐ’์œผ๋กœ ์ž…๋ ฅ
  4. DEPENDENT : MASTER ํ…Œ์ด๋ธ”์— PK๊ฐ€ ์กด์žฌํ•  ๋•Œ๋งŒ CHILD ์ž…๋ ฅ ํ—ˆ์šฉ
  5. NO ACTION : ์ฐธ์กฐ๋ฌด๊ฒฐ์„ฑ์„ ์œ„๋ฐ˜ํ•˜๋Š” ์ž…๋ ฅ ์•ก์…˜์„ ์ทจํ•˜์ง€ ์•Š์Œ

 

๐Ÿ“–DROP / TRUNCATE / DELETE ์ฐจ์ด ์ •๋ฆฌ

DROP TRUNCATE DELETE
DDL DDL (์ผ๋ถ€ DML) DML
ROLLBACK ๋ถˆ๊ฐ€๋Šฅ ROLLBACK ๋ถˆ๊ฐ€๋Šฅ COMMIT ์ด์ „ ROLLBACK
AUTO COMMIT AUTO COMMIT ์‚ฌ์šฉ์ž COMMIT
STORAGE ์ „๋ถ€ RELEASE ํƒœ์ดˆ STORAGE๋งŒ ๋‚จ๊น€ ๋ฐ์ดํ„ฐ๋งŒ DELETE, STORAGE ์˜จ์ „
ํ…Œ์ด๋ธ” ์ •์˜ ์ž์ฒด ์‚ญ์ œ ํ…Œ์ด๋ธ”์„ ํƒœ์ดˆ ํ˜•ํƒœ๋กœ ๋งŒ๋“ฌ ๋ฐ์ดํ„ฐ๋งŒ ์‚ญ์ œ

 

 

๐Ÿ“–ํŠธ๋žœ์žญ์…˜(DB ๋…ผ๋ฆฌ์  ์—ฐ์‚ฐ๋‹จ์œ„) ํŠน์„ฑ

  • ์›์ž์„ฑ : ํŠธ๋žœ์žญ์…˜์—์„œ ์ •์˜๋œ ์—ฐ์‚ฐ๋“ค์€ ๋ชจ๋‘ ์„ฑ๊ณต์ด๋˜์ง€ ์ „ํ˜€ ์‹คํ–‰ ์•ˆ๋œ ์ƒํƒœ๋˜์ง€
  • ์ผ๊ด€์„ฑ : ํŠธ๋žœ์žญ์…˜ ์‹คํ–‰ ์ „ DB ๋‚ด์šฉ์— ์ž˜๋ชป์ด ์—†๋‹ค๋ฉด ์‹คํ–‰ ํ›„์—๋„ ์—†์–ด์•ผํ•จ
  • ๊ณ ๋ฆฝ์„ฑ(๊ฒฉ๋ฆฌ์„ฑ) : ํŠธ๋žœ์žญ์…˜์ด ์‹คํ–‰๋˜๋Š” ์ค‘ ๋‹ค๋ฅธ ํŠธ๋žœ์žญ์…˜์— ์˜ํ–ฅ์„ ๋ฐ›์œผ๋ฉด ์•ˆ๋จ
  • ์ง€์†์„ฑ : ํŠธ๋žœ์žญ์…˜์ด ์„ฑ๊ณต์ ์œผ๋กœ ์ˆ˜ํ–‰๋˜๋ฉด ๊ทธ ํŠธ๋žœ์žญ์…˜์ด ๊ฐฑ์‹ ํ•œ DB์˜ ๋‚ด์šฉ์€ ์˜๊ตฌ์ ์œผ๋กœ ์ €์žฅ
  • ๊ฒฉ๋ฆฌ์„ฑ์ด ๋‚ฎ์€ ๊ฒฝ์šฐ
  1. DIRTY READ : ๋‹ค๋ฅธ ํŠธ๋žœ์žญ์…˜์— ์˜ํ•ด ์ˆ˜์ •๋˜์—ˆ์ง€๋งŒ ์ปค๋ฐ‹๋˜์ง€ ์•Š์€ ๋ฐ์ดํ„ฐ
  2. NON-REPEATABLE READ : ํ•œ ํŠธ๋žœ์žญ์…˜์ด ๊ฐ™์€ ์ฟผ๋ฆฌ๋ฅผ ๋‘ ๋ฒˆ ์ˆ˜ํ–‰ํ–ˆ๋Š”๋ฐ, ๊ทธ ์‚ฌ์ด ๋‹ค๋ฅธ ํŠธ๋žœ์žญ์…˜์ด ์ˆ˜์ •์ด๋‚˜ ์‚ญ์ œ
  3. PHANTOM-READ : ๋‘๋ฒˆ ์‹คํ–‰ํ–ˆ๋Š”๋ฐ ์ฒซ๋ฒˆ์งธ์—์„œ ์—†๋˜ ์œ ๋ น ๋ ˆ์ฝ”๋“œ๊ฐ€ ๋‚˜ํƒ€๋‚จ
ORACLE = ์ž๋™ COMMIT
SQL SERVER = ์ˆ˜๋™ COMMIT

 

 

โœ๏ธํŠธ๋žœ์žญ์…˜ ์šฉ์–ด ์ •๋ฆฌ

  • BEGIN TRANSACTION : ํŠธ๋žœ์žญ์…˜ ์‹œ์ž‘
  • COMMIT / ROLLBACK์œผ๋กœ ์ข…๋ฃŒ
  • ROLLBACK : ์ตœ์กฐ์˜ BEGIN TRANSACTION ๊นŒ์ง€ ROLLBACK ์ˆ˜ํ–‰
  • SAVEPOINT ์ •์˜ํ•˜๋ฉด ROLLBACK์˜ ์ผ๋ถ€๋งŒ ๊ฐ€๋Šฅ

 

 

โœ๏ธ์—ฐ์‚ฐ ์šฉ์–ด ์ •๋ฆฌ

  • WHERE์ ˆ์€ FROM์ ˆ ๋‹ค์Œ
  • NULL๊ณผ์˜ ์—ฐ์‚ฐ์€ NULL
  • NULL ๋น„๊ต์—ฐ์‚ฐ ๋ถˆ๊ฐ€
  • !=, ^=, <> ๋ชจ๋‘ ๊ฐ™์ง€ ์•Š๋‹ค
  • IN : ๋ฆฌ์ŠคํŠธ ์žˆ๋Š” ๊ฐ’ ์ค‘ ์–ด๋А ํ•˜๋‚˜๋ผ๋„ ์ผ์น˜ํ•˜๋ฉด ๋œ๋‹ค.
  • BETWEEN : ์‚ฌ์ด๊ฐ’์ด ํฌํ•จ๋จ, ์ง€์ •ํ•œ ์ˆซ์ž๊นŒ์ง€ ํฌํ•จ

 

 

๐Ÿ“–๋‚ด์žฅํ•จ์ˆ˜

  • ํ•จ์ˆ˜์˜ ์ž…๋ ฅ ํ–‰์ˆ˜์— ๋”ฐ๋ผ ๋‹จ์ผํ–‰/๋‹ค์ค‘ํ–‰
  • ๋‹จ์ผํ–‰ : SELECT, WHERE, ORDER BY, UPDATE์˜ SET์ ˆ์— ์‚ฌ์šฉ
  • 1:M ๊ด€๊ณ„์—์„œ ๋‘ ํ…Œ์ด๋ธ” ์กฐ์ธ = M์ชฝ์— ์ถœ๋ ฅ ๋‹จ์ผํ–‰ = ๋‹จ์ผํ–‰ ํ•จ์ˆ˜ ์‚ฌ์šฉ ๊ฐ€๋Šฅ
  • ๋‹ค์ค‘ํ–‰ ํ•จ์ˆ˜๋„ ๋‹จ์ผํ–‰ ํ•จ์ˆ˜์™€ ๋™์ผํ•˜๊ฒŒ ๋‹จ์ผ ๊ฐ’ ๋ฐ˜ํ™˜
  • ๋‹ค์ค‘ํ–‰ ํ•จ์ˆ˜ : ์ง‘๊ณ„ ํ•จ์ˆ˜, ๊ทธ๋ฃน ํ•จ์ˆ˜, ์œˆ๋„์šฐ ํ•จ์ˆ˜

 

 

โœ๏ธ๋‹จ์ผํ–‰ ํ•จ์ˆ˜ ์ข…๋ฅ˜ ๋‹จ์ผํ–‰

์ข…๋ฅ˜ ํ•จ์ˆ˜
๋ฌธ์žํ˜• LOWER, UPPER, SUBSTR/SUBSTRING, LENTH/LEN, LTRIM, RTRIM, TRIM, ASCII
์ˆซ์žํ˜• ABS, MOD, ROUND, TRUNC, SIGN, CHR/CHAR, CEIL/CEILING, FLOOR, EXP, LOG, LN, POWER, SIN, COS, TAN
๋‚ ์งœํ˜• SYSDATE/GETDATE, EXTRACT/DATEPART, TO_NUMBER~
๋ณ€ํ™˜ํ˜• TO_NUMBER, TO_CHAR, TO_DATE/CAST, CONVERT
NULL NVL/ISNULL, NULLIF, COALSCE

 

 

โœ๏ธ๋ฌธ์žํ˜• ํ•จ์ˆ˜ ์ข…๋ฅ˜

๋ฌธ์žํ˜• ํ•จ์ˆ˜ ํ•จ์ˆ˜ ์„ค๋ช…
LOWER ๋ฌธ์ž์—ด์˜ ์•ŒํŒŒ๋ฒณ ๋ฌธ์ž๋ฅผ ์†Œ๋ฌธ์ž๋กœ ๋ฐ”๊พธ์–ด ์ค€๋‹ค
UPPER ๋ฌธ์ž์—ด์˜ ์•ŒํŒŒ๋ฒณ ๋ฌธ์ž๋ฅผ ๋Œ€๋ฌธ์ž๋กœ ๋ฐ”๊พธ์–ด ์ค€๋‹ค
ASCII ๋ฌธ์ž๋‚˜ ์ˆซ์ž๋ฅผ ์•„์Šคํ‚ค ์ฝ”๋“œ ๋ฒˆํ˜ธ๋กœ ๋ฐ”๊พธ์–ด ์ค€๋‹ค
CHR/CHAR ์•„์Šคํ‚ค ์ฝ”๋“œ ๋ฒˆํ˜ธ๋ฅผ ๋ฌธ์ž๋‚˜ ์ˆซ์ž๋กœ ๋ฐ”๊พธ์–ด ์ค€๋‹ค
CONCAT ORACLE, MY SQL๋งŒ ๊ฐ€๋Šฅ
๋ฌธ์ž์—ด ์—ฐ๊ฒฐ, ํ•ฉ์„ฑ ์—ฐ์‚ฐ์ž ORACLE'||' / MYSQL '+'๋ฅผ ์‚ฌ์šฉ
SUBSTR/SUBSTRING ๋ฌธ์ž์—ด ์ค‘ M์˜ ์œ„์น˜์—์„œ N๊ฐœ์˜ ๋ฌธ์ž ๊ธธ์ด์— ํ•ด๋‹นํ•˜๋Š” ๋ฌธ์ž๋ฅผ ๋Œ๋ ค์ค€๋‹ค.
N์ด ์—†์„ ์‹œ ๋งˆ์ง€๋ง‰ ๋ฌธ์ž๊นŒ์ง€
LENGTH/LEN ๋ฌธ์ž์—ด์˜ ๊ฐœ์ˆ˜๋ฅผ ์ˆซ์ž๊ฐ’์œผ๋กœ ๋Œ๋ ค์ค€๋‹ค
LTRIM ๋ฌธ์ž์—ด ์ฒซ ๋ฌธ์ž๋ถ€ํ„ฐ ์ง€์ • ๋ฌธ์ž๊ฐ€ ๋‚˜ํƒ€๋‚˜๋ฉด ํ•ด๋‹น ๋ฌธ์ž ์ œ๊ฑฐ
*SQL SERVER์€ LTRIM ์ง€์ • ๋ฌธ์ž ์‚ฌ์šฉ ๋ชปํ•จ = ๊ณต๋ฐฑ๋งŒ ์ œ๊ฑฐ ๊ฐ€๋Šฅ
RTRIM ๋ฌธ์ž์—ด ๋งˆ์ง€๋ง‰ ๋ฌธ์ž๋ถ€ํ„ฐ ์ง€์ • ๋ฌธ์ž๊ฐ€ ๋‚˜ํƒ€๋‚˜๋ฉด ํ•ด๋‹น ๋ฌธ์ž ์ œ๊ฑฐ
*SQL SERVER์€ RTRIM ์ง€์ • ๋ฌธ์ž ์‚ฌ์šฉ ๋ชปํ•จ = ๊ณต๋ฐฑ๋งŒ ์ œ๊ฑฐ ๊ฐ€๋Šฅ
TRIM ๋ฌธ์ž์—ด์—์„œ ์–‘์ชฝ์— ์žˆ๋Š” ์ง€์ • ๋ฌธ์ž ์ œ๊ฑฐ
*SQL SERVER์€ TRIM ์ง€์ • ๋ฌธ์ž ์‚ฌ์šฉ ๋ชปํ•จ = ๊ณต๋ฐฑ๋งŒ ์ œ๊ฑฐ ๊ฐ€๋Šฅ
REPLACE ๋ฌธ์ž์—ด์„ ์น˜ํ™˜ํ•˜๋Š” ํ•จ์ˆ˜, CHR(10)์œผ๋กœ ๋ฐ”๊พธ๋ฉด ์ค„๋ฐ”๊ฟˆ ์ œ๊ฑฐ

 

 

โœ๏ธNULL ํ•จ์ˆ˜ ์ข…๋ฅ˜

ํ•จ์ˆ˜ ์„ค๋ช…
NVL(1,2)/ISNULL(1,2) 1์˜ ๊ฐ’์ด NULL์ด๋ฉด 2์˜ ๊ฐ’ ์ถœ๋ ฅ
NULLIF(1,2) 1๊ณผ 2๊ฐ€ ๊ฐ™์œผ๋ฉด NULL, ๊ฐ™์ง€ ์•Š์œผ๋ฉด 1 ๋ฆฌํ„ด
COALSCE(1,2) NULL์ด ์•„๋‹Œ ์ตœ์ดˆ์˜ ํ‘œํ˜„์‹ ๋ฆฌํ„ด

 

โœ๏ธNOTE

  • CASE WHEN A ='AA' THEN 'B' == CASE A WHEN 'AA' THEN 'B'
  • ORACLE์—์„œ NULL์€ ๊ฐ€์žฅ ํฐ ๊ฐ’
  • SQL SERVER์—์„œ NULL์€ ๊ฐ€์žฅ ์ž‘์€ ๊ฐ’
  • EQUI JOIN = FROM์ ˆ์— , ๋กœ ํ…Œ์ด๋ธ” ๊ฐ€์ ธ์˜ค๊ณ  WHERE์—์„œ = ๋„ฃ์–ด์ฃผ๊ธฐ / FROM์—์„œ JOIN ๊ฑธ๊ณ  ON ์“ฐ๊ธฐ

 

 

๐Ÿ“–GROUP BY์™€ HAVING ํŠน์„ฑ

  • GROUP BY์ ˆ์„ ํ†ตํ•ด ์†Œ๊ทธ๋ฃน๋ณ„ ๊ธฐ์ค€์„ ์ •ํ•œ ํ›„, SELECT ์ ˆ์— ์ง‘๊ณ„ ํ•จ์ˆ˜๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค.
  • ์ง‘๊ณ„ ํ•จ์ˆ˜์˜ ํ†ต๊ณ„ ์ •๋ณด๋Š” NULL ๊ฐ’์„ ์ œ์™ธํ•˜๊ณ  ์ˆ˜ํ–‰ํ•œ๋‹ค.
  • GROUP BY ์ ˆ์—์„œ SELECT ์ ˆ๊ณผ๋Š” ๋‹ฌ๋ฆฌ ALIAS ๋ช…์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์—†๋‹ค.
  • ์ง‘๊ณ„ ํ•จ์ˆ˜๋Š” WHERE์ ˆ์— ์˜ฌ ์ˆ˜ ์—†๋‹ค
  • WHERE ์ ˆ์€ ์ „์ฒด ๋ฐ์ดํ„ฐ๋ฅผ GROUP์œผ๋กœ ๋‚˜๋ˆ„๊ธฐ ์ „์— ํ–‰์„ ๋ฏธ๋ฆฌ ์ œ๊ฑฐํ•œ๋‹ค.
  • HAVING ์ ˆ์€ GROUP BY  ์ ˆ์˜ ๊ธฐ์ค€ ํ•ญ๋ชฉ์ด๋‚˜ ์†Œ๊ทธ๋ฃน์˜ ์ง‘๊ณ„ ํ•จ์ˆ˜๋ฅผ ์ด์šฉํ•œ ์กฐ๊ฑด์„ ํ‘œ์‹œํ•  ์ˆ˜ ์žˆ๋‹ค.
  • GROUP BY ์ ˆ์— ์˜ํ•œ ์†Œ๊ทธ๋ฃน๋ณ„๋กœ ๋งŒ๋“ค์–ด์ง„ ์ง‘๊ณ„ ๋ฐ์ดํ„ฐ ์ค‘, HAVING ์ ˆ์—์„œ ์ œํ•œ ์กฐ๊ฑด์„ ๋‘์–ด ์กฐ๊ฑด์„ ๋งŒ์กฑํ•˜๋Š” ๋‚ด์šฉ๋งŒ ์ถœ๋ ฅํ•œ๋‹ค.
  • HAVING ์ ˆ์€ ์ผ๋ฐ˜์ ์œผ๋กœ GROUP BY ์ ˆ ๋’ค์— ์œ„์น˜ํ•œ๋‹ค.
  • GROUP BY๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด GROUP BY ํ‘œํ˜„์‹์ด ์•„๋‹Œ ๊ฐ’์€ ๊ธฐ์ˆ ๋  ์ˆ˜ ์—†๋‹ค.

 

๐Ÿ“–SELECT ์‹คํ–‰ ์ˆœ์„œ

 FROM - WHERE - GROUP BY - HAVING - SELECT - ORDER BY

 

 

โœ๏ธJOIN ์„ค๋ช…

  • ์ผ๋ฐ˜์ ์œผ๋กœ JOIN์€ PK์™€ FK์˜ ๊ฐ’ ์—ฐ๊ด€์„ฑ์— ์˜ํ•ด ์„ฑ๋ฆฝ๋œ๋‹ค.
  • DBMS ์˜ตํ‹ฐ๋งˆ์ด์ €๋Š” FROM์ ˆ์— ๋‚˜์—ด๋œ ํ…Œ์ด๋ธ”๋“ค์„ ์ž„์˜๋กœ 2๊ฐœ์”ฉ ๋ฌถ์–ด์„œ JOIN ์ฒ˜๋ฆฌ
  • EQUI JOIN์€ JOIN์— ๊ด€์—ฌํ•˜๋Š” ํ…Œ์ด๋ธ” ๊ฐ„์˜ ์ปฌ๋Ÿผ ๊ฐ’๋“ค์ด ์ •ํ™•ํ•˜๊ฒŒ ์ผ์น˜ํ•˜๋Š” ๊ฒฝ์šฐ์— ์‚ฌ์šฉ๋˜๋Š” ๋ฐฉ๋ฒ•์ด๋‹ค.
  • EQUI JOIN์€ =์— ์˜ํ•ด์„œ๋งŒ ์ˆ˜ํ–‰๋˜๋ฉฐ, ๊ทธ ์™ธ๋Š” ๋ชจ๋‘ NON EQUI JOIN์ด๋‹ค
  • ๋Œ€๋ถ€๋ถ„ NON EQUI JOIN์„ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ์ง€๋งŒ, ๋•Œ๋กœ๋Š” ์„ค๊ณ„์ƒ์˜ ์ด์œ ๋กœ ๋ถˆ๊ฐ€๋Šฅํ•œ ๊ฒฝ์šฐ๋„ ์žˆ๋‹ค.