λ³Έλ¬Έ λ°”λ‘œκ°€κΈ°

Certificate/SQLD

Part 3 - 01. SQL κΈ°λ³Έ

β–‘ κ΄€κ³„ν˜• λ°μ΄ν„°λ² μ΄μŠ€ 집합 μ—°μ‚°κ³Ό 관계 μ—°μ‚°

집합 μ—°μ‚°

- 합집합: 두 개의 λ¦΄λ ˆμ΄μ…˜μ„ ν•˜λ‚˜λ‘œ ν•©μΉ¨ / μ€‘λ³΅λœ 행은 ν•œ 번만 쑰회

- 차집합: 본래 λ¦΄λ ˆμ΄μ…˜μ—λŠ” μ‘΄μž¬ν•˜κ³  λ‹€λ₯Έ λ¦΄λ ˆμ΄μ…˜μ—λŠ” 쑴재 ν•˜μ§€ μ•ŠλŠ” 것을 쑰회

- ꡐ집합: 두 개의 λ¦΄λ ˆμ΄μ…˜ 간에 κ³΅ν†΅λœ 것을 쑰회

- 곱집합: 각 λ¦΄λ ˆμ΄μ…˜μ— μ‘΄μž¬ν•˜λŠ” λͺ¨λ“  λ°μ΄ν„°μ˜ μ‘°ν•© μ—°μ‚°

관계 μ—°μ‚°

- 선택 μ—°μ‚°: 쑰건에 λ§žλŠ” ν–‰λ§Œ 쑰회

- 투영 μ—°μ‚°: 쑰건에 λ§žλŠ” μ†μ„±λ§Œμ„ 쑰회

- κ²°ν•© μ—°μ‚°: μ—¬λŸ¬ λ¦΄λ ˆμ΄μ…˜μ˜ κ³΅ν†΅λœ 속성을 μ‚¬μš©ν•˜μ—¬ μƒˆλ‘œμš΄ λ¦΄λ ˆμ΄μ…˜ 생성

- λ‚˜λˆ„κΈ° μ—°μ‚°: κΈ°μ€€ λ¦΄λ ˆμ΄μ…˜μ— λ‚˜λˆ„λŠ” λ¦΄λ ˆμ΄μ…˜μ΄ 가지고 μžˆλŠ” 속성과 λ™μΌν•œ 값을 κ°€μ§€λŠ” 행을 μΆ”μΆœν•˜κ³  λ‚˜λˆ„λŠ” λ¦΄λ ˆμ΄μ…˜μ˜ 속성을 μ‚­μ œν•œ ν›„ μ€‘λ³΅λœ 행을 μ œκ±°ν•˜λŠ” μ—°μ‚°

 

β–‘ DDL(Data Definition Language), DML(Data Manipulation Language), DCL(Data Control Language), TCL(Transaction Control Language)

- DDL: 데이터 μ •μ˜ μ–Έμ–΄, ν…Œμ΄λΈ” ꡬ쑰 μ •μ˜ / CREATE, ALTER, DROP, RENAME, TRUNCATE λ“±

- DML: 데이터 μ‘°μž‘ μ–Έμ–΄, 데이터λ₯Ό μ‹€μ§μœΌλ‘œ μ‚¬μš©ν•  λ•Œ μ‚¬μš© / SELECT, UPDATE, INSERT, DELETE λ“±

- DCL: 데이터 μ œμ–΄ μ–Έμ–΄, μ œμ•½μ‘°κ±΄, κΆŒν•œ 등을 μ œμ–΄ / GRANT, REVOKE

- TCL: νŠΈλžœμ μ…˜ μ œμ–΄ μ–Έμ–΄ / COMMIT, ROLLBACK

 

β–‘ νŠΈλžœμž­μ…˜μ˜ νŠΉμ„±

- μ›μžμ„±: νŠΈλžœμž­μ…˜μ˜ μž‘μ—…μ΄ λΆ€λΆ„μ μœΌλ‘œ μ‹€ν–‰λ˜κ±°λ‚˜ μ€‘λ‹¨λ˜μ§€ μ•ŠλŠ” 것을 보μž₯

- 일관성: νŠΈλžœμž­μ…˜μ΄ μ„±κ³΅μ μœΌλ‘œ μ™„λ£Œλ˜λ©΄ 일관적인 DBμƒνƒœλ₯Ό μœ μ§€

- 격리성: νŠΈλžœμž­μ…˜ μˆ˜ν–‰μ‹œ λ‹€λ₯Έ νŠΈλžœμž­μ…˜μ˜ μž‘μ—…μ΄ 끼어듀지 λͺ»ν•˜λ„둝 보μž₯

- 지속성(연속성): μ„±κ³΅μ μœΌλ‘œ μˆ˜ν–‰λœ νŠΈλžœμž­μ…˜μ€ μ˜μ›νžˆ 반영

 

β–‘ SQL μ‹€ν–‰ μˆœμ„œ

νŒŒμ‹±(Parsing) → μ‹€ν–‰(Execution) → 인좜(Fetch)

- νŒŒμ‹±: SQL문의 문법을 ν™•μΈν•˜κ³  ꡬ문뢄석

- μ‹€ν–‰: μ˜΅ν‹°λ§ˆμ΄μ €κ°€ μˆ˜λ¦½ν•œ μ‹€ν–‰ κ³„νšμ— 따라 SQL μ‹€ν–‰

- 인좜: 데이터λ₯Ό μ½μ–΄μ„œ 전솑

 

β–‘ μ™Έλž˜ν‚€

- λ‹€λ₯Έ ν…Œμ΄λΈ”μ˜ κΈ°λ³Έν‚€λ₯Ό μ°Έμ‘°ν•˜λŠ” ν‚€

 

β–‘ ν…Œμ΄λΈ” 관리 SQLλ¬Έ

- CREATE TABLE: ν…Œμ΄λΈ” 생성

예) 

CREATE TABLE EMP

(

empno number(10) primary key,

depno varchar2(2) not null,  

ename varchar2(20), 

sal number(6)

);

- ALTER TABLE: 칼럼 μΆ”κ°€, λ³€κ²½κ³Ό μ‚­μ œ / κΈ°λ³Έν‚€ 및 μ™Έλž˜ν‚€ μ„€μ •

- DROP TABLE: ν•΄λ‹Ή ν…Œμ΄λΈ”μ„ μ‚­μ œ / 데이터 ꡬ쑰뿐만 μ•„λ‹ˆλΌ μ €μž₯된 데이터 λͺ¨λ‘ μ‚­μ œ

 

β–‘ ON DELETE CASCADE

- ν…Œμ΄λΈ” μ‚­μ œν•  λ•Œ, 참쑰된 ν…Œμ΄λΈ”μ˜ 데이터λ₯Ό 같이 μ‚­μ œν•˜κΈ° μœ„ν•΄ μ‚¬μš©

 

β–‘ λ·°(View)

- ν…Œμ΄λΈ”μ—μ„œ μœ λ„λœ κ°€μƒμ˜ ν…Œμ΄λΈ”

- 데이터 관리에 용이

- λ³΄μ•ˆ κΈ°λŠ₯ 제곡

- μ‚½μž…, μˆ˜μ •, μ‚­μ œμ˜ μ œμ•½

- μ°Έμ‘°ν•œ ν…Œμ΄λΈ”μ΄ λ³€κ²½λ˜λ©΄ 뷰도 λ³€κ²½

- μƒμ„±ν•œ λ·°λŠ” λ³€κ²½ν•  수 μ—†κ³ , μ›ν•˜λ©΄ μ‚­μ œ ν›„ μž¬μƒμ„±ν•˜μ—¬μ•Ό 함

- ALTERλ₯Ό μ΄μš©ν•œ 뷰의 λ³€κ²½ λΆˆκ°€

 

β–‘ No logging μ˜΅μ…˜

- INSERT 문의 μ„±λŠ₯을 ν–₯μƒμ‹œν‚€κΈ° μœ„ν•΄μ„œ Buffer Cache의 기둝을 μƒλž΅ν•˜λŠ” μ˜΅μ…˜

 

β–‘ TRUNCATE TABLE

- ν…Œμ΄λΈ”μ˜ κ΅¬μ‘°λŠ” μ‚­μ œν•˜μ§€ μ•Šκ³  λͺ¨λ“  데이터λ₯Ό μ‚­μ œν•˜λŠ” SQL ꡬ문

 

β–‘ || λ˜λŠ” CONCAT

- λ¬Έμžμ—΄ 결합에 μ‚¬μš©

 

β–‘ DISTINCT

- 칼럼λͺ… μ•žμ— μ§€μ •ν•˜μ—¬ μ€‘λ³΅λœ 데이터λ₯Ό ν•œ 번만 쑰회

 

β–‘ COALESCE

- NULL이 μ•„λ‹Œ 첫 번째 인자 값을 λ°˜ν™˜

 


Reference:

μž„ν˜Έμ§„ μ™Έ 1λͺ…, γ€ŒSQL 개발자 μ΄λ‘ μ„œ + λ¬Έμ œμ§‘γ€, μ˜μ§„λ‹·μ»΄(2020)