๐Ÿ’ป

[SQLD] Chapter 3. SQL ๊ธฐ๋ณธ ๋ณธ๋ฌธ

TIL/SQLD

[SQLD] Chapter 3. SQL ๊ธฐ๋ณธ

๋˜ํšจ๋‹ˆ 2020. 5. 2. 21:01

- ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋ž€?

: ํŠน์ • ๊ธฐ์—…์ด๋‚˜ ์กฐ์ง ๋˜๋Š” ๊ฐœ์ธ์ด ํ•„์š”์— ์˜ํ•ด(์˜ˆ: ๋ถ€๊ฐ€๊ฐ€์น˜๊ฐ€ ๋ฐœ์ƒํ•˜๋Š”) ๋ฐ์ดํ„ฐ๋ฅผ ์ผ์ •ํ•œ ํ˜•ํƒœ๋กœ ์ €์žฅํ•ด๋†“์€ ๊ฒƒ.

 

 

- DBMS?

: ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๊ด€๋ฆฌ ์†Œํ”„ํŠธ์›จ์–ด

 

- SQL?

: RDBMS ๋ฐ์ดํ„ฐ๋ฅผ ๊ด€๋ฆฌํ•˜๊ธฐ ์œ„ํ•ด ์„ค๊ณ„๋œ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด

 

- ๊ด€๊ณ„ํ˜• ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค

: ๋ฐ์ดํ„ฐ๋ฅผ ํ…Œ์ด๋ธ” ํ˜•ํƒœ๋กœ ์ €์žฅํ•ด๋†“์€ ๊ฒƒ.

 

  • ์žฅ์ 
    • ์ •๊ทœํ™”๋ฅผ ํ†ตํ•ด ์ด์ƒํ˜„์ƒ์„ ์ œ๊ฑฐํ•˜๊ณ  ๋ฐ์ดํ„ฐ ์ค‘๋ณต์„ ํ”ผํ•  ์ˆ˜ ์žˆ๋‹ค.
    • ๋™์‹œ์„ฑ ๊ด€๋ฆฌ, ๋ณ‘ํ–‰ ์ œ์–ด๋ฅผ ํ†ตํ•ด ๋ฐ์ดํ„ฐ๋ฅผ ๊ณต์œ ํ•œ๋‹ค.
    • ๋ฐ์ดํ„ฐ์˜ ํ‘œํ˜„ ๋ฐฉ๋ฒ• ๋“ฑ์„ ์ฒด๊ณ„ํ™”ํ•  ์ˆ˜ ์žˆ๊ณ , ๋ฐ์ดํ„ฐ ํ‘œ์ค€ํ™”ํ•  ์ˆ˜ ์žˆ๋‹ค.
    • ๋ณด์•ˆ ๊ธฐ๋Šฅ
    • ๋ฐ์ดํ„ฐ ๋ฌด๊ฒฐ์„ฑ์„ ๋ณด์žฅํ•œ๋‹ค.
    • ๋ฐ์ดํ„ฐ๋ฅผ ํšŒ๋ณต/๋ณต๊ตฌํ•˜๋Š” ๊ธฐ๋Šฅ

 

- SQL

  • ๋ฐ์ดํ„ฐ ์กฐ์ž‘์–ด(DML)
    • SELECT, INSERT, UPDATE, DELETE
  • ๋ฐ์ดํ„ฐ ์ •์˜์–ด(DDL)
    • CREATE, ALTER, DROP, RENAME
  • ๋ฐ์ดํ„ฐ ์ œ์–ด์–ด(DCL)
    • GRANT, REVOLKE
  • ํŠธ๋žœ์žญ์…˜ ์ œ์–ด์–ด(TCL)
    • COMMIT, ROLLBACK

 

 

- ํ…Œ์ด๋ธ”(Table)

: ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•˜๋Š” ๊ฐ์ฒด(Object)๋กœ์„œ ๊ด€๊ณ„ํ˜• ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์˜ ๊ธฐ๋ณธ ๋‹จ์œ„

 

 

- ํ…Œ์ด๋ธ”์˜ ๊ตฌ์กฐ

  • ์นผ๋Ÿผ/์—ด : 2์ฐจ์›  ๊ตฌ์กฐ๋ฅผ ๊ฐ€์ง„ ํ…Œ์ด๋ธ”์—์„œ ์„ธ๋กœ ๋ฐฉํ–ฅ์œผ๋กœ ์ด๋ฃจ์–ด์ง„ ํ•˜๋‚˜ํ•˜๋‚˜์˜ ํŠน์ • ์†์„ฑ
  • ํ–‰ : 2์ฐจ์› ๊ตฌ์กฐ๋ฅผ ๊ฐ€์ง„ ํ…Œ์ด๋ธ”์—์„œ ๊ฐ€๋กœ ๋ฐฉํ–ฅ์œผ๋กœ ์ด๋ฃจ์–ด์ง„ ์—ฐ๊ฒฐ๋œ ๋ฐ์ดํ„ฐ

 

- ํ…Œ์ด๋ธ” ๊ด€๊ณ„ ์šฉ์–ด

  • ์ •๊ทœํ™”(Normalization) : ํ…Œ์ด๋ธ”์„ ๋ถ„ํ• ํ•˜์—ฌ ๋ฐ์ดํ„ฐ์˜ ์ •ํ•ฉ์„ฑ์„ ํ™•๋ณดํ•˜๊ณ , ๋ถˆํ•„์š”ํ•œ ์ค‘๋ณต์„ ์ค„์ด๋Š” ํ”„๋กœ์„ธ์Šค
  • ๊ธฐ๋ณธํ‚ค(Primary Key) : ํ…Œ์ด๋ธ”์— ์กด์žฌํ•˜๋Š” ๊ฐ ํ–‰์„ ํ•œ ๊ฐ€์ง€ ์˜๋ฏธ๋กœ ํŠน์ •ํ•  ์ˆ˜ ์žˆ๋Š” ํ•œ ๊ฐœ ์ด์ƒ์˜ ์นผ๋Ÿผ
  • ์™ธ๋ถ€ํ‚ค(Foreign Key) : ๋‹ค๋ฅธ ํ…Œ์ด๋ธ”์˜ ๊ธฐ๋ณธํ‚ค๋กœ ์‚ฌ์šฉ๋˜๊ณ  ์žˆ๋Š” ๊ด€๊ณ„๋ฅผ ์—ฐ๊ฒฐํ•˜๋Š” ์นผ๋Ÿผ

 - ERD(Entity Relationship Diagram)

: ERD์˜ ๊ตฌ์„ฑ์š”์†Œ๋Š” ์—”ํ„ฐํ‹ฐ(Entity), ๊ด€๊ณ„(Relationship), ์†์„ฑ(Attiribute) 3๊ฐ€์ง€

 

 


 

 

- ๋ฐ์ดํ„ฐ ์œ ํ˜•

  • ์ˆซ์ž ํƒ€์ž…
    • NUMERIC, DECIMAL, DEC, SMALLINT, INTEGER, INT, BIGINT, FLOAT, REAL, DOUBLE...
  • ๋ฌธ์ž ํƒ€์ž…
    • CHAR : ๊ฐ€๋ณ€ ๊ธธ์ด
    • VARCHAR : ๊ณ ์ • ๊ธธ์ด
    • CHAR ์—์„œ๋Š” ๋ฌธ์ž์—ด์„ ๋น„๊ตํ•  ๋•Œ ๊ณต๋ฐฑ์„ ์ฑ„์›Œ์„œ ๋น„๊ตํ•˜๊ณ  VARCHAR ์œ ํ˜•์—์„œ๋Š” ๋งจ ์ฒ˜์Œ๋ถ€ํ„ฐ ํ•œ ๋ฌธ์ž์”ฉ ๋น„๊ตํ•˜๊ณ  ๊ณต๋ฐฑ๋„ ํ•˜๋‚˜์˜ ๋ฌธ์ž๋กœ ์ทจ๊ธ‰ํ•œ๋‹ค. ์˜ˆ) CHAR ์œ ํ˜• 'AA' = 'AA '  vs VARCHAR ์œ ํ˜• 'AA' ≠ 'AA '

 

- ์ œ์•ฝ์กฐ๊ฑด(CONSTRAINT)

: ๋ฐ์ดํ„ฐ ๋ฌด๊ฒฐ์„ฑ์„ ์œ ์ง€ํ•˜๊ธฐ ์œ„ํ•œ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์˜ ๋ณดํŽธ์ ์ธ ๋ฐฉ๋ฒ•

๋„๋ฉ”์ธ ์ œ์•ฝ์กฐ๊ฑด, ํ‚ค ์ œ์•ฝ์กฐ๊ฑด, ๋ฌด๊ฒฐ์„ฑ ์ œ์•ฝ์กฐ๊ฑด

 

  • ์ข…๋ฅ˜ 
    • PRIMARY KEY(๊ธฐ๋ณธํ‚ค)
    • UNIQUE KEY(๊ณ ์œ ํ‚ค) : ํ…Œ์ด๋ธ”์— ์ €์žฅ๋œ ํ–‰ ๋ฐ์ดํ„ฐ๋ฅผ ๊ณ ์œ ํ•˜๊ฒŒ ์‹๋ณ„ํ•˜๊ธฐ ์œ„ํ•œ ๊ณ ์œ ํ‚ค๋ฅผ ์ •์˜ํ•œ๋‹ค. NULL ๊ฐ’ ํ—ˆ์šฉ
    • NOT NULL
    • CHECK : ์ž…๋ ฅํ•  ์ˆ˜ ์žˆ๋Š” ๊ฐ’์˜ ๋ฒ”์œ„ ๋“ฑ์„ ์ œํ•œํ•œ๋‹ค. 
    • FOREIGN KEY(์™ธ๋ž˜ํ‚ค)

- NULL ์˜ ์˜๋ฏธ : ์กฐ๊ฑด์— ๋งž๋Š” ๋ฐ์ดํ„ฐ๊ฐ€ ์—†์„ ๋•Œ์˜ ๊ณต์ง‘ํ•ฉ๊ณผ๋„ ๋‹ค๋ฅด๋‹ค. ์•„์ง ์ •์˜๋˜์ง€ ์•Š์€ ๋ฏธ์ง€์˜ ๊ฐ’, ๋˜๋Š” ํ˜„์žฌ ๋ฐ์ดํ„ฐ๋ฅผ ์ž…๋ ฅํ•˜์ง€ ๋ชปํ•˜๋Š” ๊ฒฝ์šฐ๋ฅผ ์˜๋ฏธํ•œ๋‹ค.

- DEFAULT ์˜ ์˜๋ฏธ : ๋ฐ์ดํ„ฐ ์ž…๋ ฅ ์‹œ์— ์นผ๋Ÿผ์˜ ๊ฐ’์ด ์ง€์ •๋˜์–ด ์žˆ์ง€ ์•Š์„ ๊ฒฝ์šฐ ๊ธฐ๋ณธ๊ฐ’

 

 

- DDL

: ์ƒ์„ฑ, ๋ณ€๊ฒฝ, ์ˆ˜์ •

 

  1. CREATE TABLE : CREATE TABLE copy_student AS SELECT * FROM student;
  2. ALTER TABLE
    1. ADD COLUMN : ALTER TABLE copy_student ADD (address VARCHAR2(80));
    2. DROP COLUMN : ALTER TABLE copy_student DROP COLUMN address;
    3. MODIFY COLUMN : ALTER TABLE copy_student MODIFY (univ_name VARCHAR2(20) DEFAULT '์ˆ™๋ช…์—ฌ์ž๋Œ€ํ•™๊ต' NOT NULL);
    4. RENAME COLUMN : ALTER TABLE copy_student RENAME COLUMN univ_name TO university);
    5. DROP CONSTRAINT : ALTER TABLE copy_student DROP CONSTRAINT sub_fk;
    6. ADD CONSTRAINT : ALTER TABLE copy_student ADD CONSTRAINT sub_fk FOREIGN KEY (sub_no) REFERENCES subject(sub_no);
  3. RENAME TABLE : RENAME copy_student TO cp_student;
  4. DROP TABLE : DROP TABLE copy_student CASCADE CONSTRAINT; (* cascade ์˜ต์…˜์€ ํ•ด๋‹น ํ…Œ์ด๋ธ”๊ณผ ๊ด€๊ณ„๊ฐ€ ์žˆ์—ˆ๋˜ ์ฐธ์กฐ๋˜๋Š” ์ œ์•ฝ์กฐ๊ฑด์— ๋Œ€ํ•ด์„œ๋„ ์‚ญ์ œํ•œ๋‹ค๋Š” ๊ฒƒ์„ ์˜๋ฏธํ•œ๋‹ค.)
  5. TRUNCATE TABLE : TRUNCATE TABLE copy_student; (* ํ…Œ์ด๋ธ” ์ž์ฒด๊ฐ€ ์‚ญ์ œ๋˜๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๊ณ , ํ•ด๋‹น ํ…Œ์ด๋ธ”์— ๋“ค์–ด์žˆ๋˜ ๋ชจ๋“  ํ–‰๋“ค์ด ์ œ๊ฑฐ๋˜๊ณ  ์ €์žฅ ๊ณต๊ฐ„์„ ์žฌ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•˜๋„๋ก ํ•ด์ œํ•œ๋‹ค. ํ…Œ์ด๋ธ” ๊ตฌ์กฐ๊นŒ์ง€ ์™„์ „ํžˆ ์‚ญ์ œํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” DROP TABLE ์„ ์‹คํ–‰)

 

ํ…Œ์ด๋ธ” ์ „์ฒด ๋ฐ์ดํ„ฐ๋ฅผ ์‚ญ์ œํ•˜๋Š” ๊ฒฝ์šฐ, ์‹œ์Šคํ…œ ํ™œ์šฉ ์ธก๋ฉด์—์„œ๋Š” DELETE TABLE ๋ณด๋‹ค๋Š” ์‹œ์Šคํ…œ ๋ถ€ํ•˜๊ฐ€ ์ ์€ TRUNCATE TABLE ์„ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด ๋” ๋‚ซ๋‹ค. ๋‹จ, TRUNCATE TABLE ์˜ ๊ฒฝ์šฐ ์ •์ƒ์ ์ธ ๋ณต๊ตฌ๊ฐ€ ๋ถˆ๊ฐ€๋Šฅํ•˜๋ฏ€๋กœ ์ฃผ์˜ํ•ด์•ผํ•œ๋‹ค. 

 

 

 


 

 

- DML

: ์ž…๋ ฅ, ์ˆ˜์ •, ์‚ญ์ œ, ์กฐํšŒ ๋ช…๋ น์–ด

 

  1. INSERT : INSERT INTO student VALUES (1510599, '๊น€๋•ก๋•ก', '์ปดํ“จํ„ฐ๊ณผํ•™', 1); 
  2. UPDATE : UPDATE student SET stu_grade = 4 WHERE stu_no = 1510599; 
  3. DELETE : DELETE FROM student; (*student ํ…Œ์ด๋ธ” ์‚ญ์ œ)
  4. SELECT : SELECT * FROM student;

 

  • DROP vs TRUNCATE vs DELETE 
DROP TRUNCATE DELETE
DDL DDL(์ผ๋ถ€ DML ์„ฑ๊ฒฉ ๊ฐ€์ง) DML
Rollback ๋ถˆ๊ฐ€๋Šฅ Rollback ๋ถˆ๊ฐ€๋Šฅ Commit ์ด์ „ Rollback ๊ฐ€๋Šฅ
Auto Commit Auto Commit ์‚ฌ์šฉ์ž Commit
ํ…Œ์ด๋ธ”์ด ์‚ฌ์šฉํ–ˆ๋˜ Storage๋ฅผ ๋ชจ๋‘ Release ํ…Œ์ด๋ธ”์ด ์‚ฌ์šฉํ–ˆ๋˜ Storage ์ค‘ ์ตœ์ดˆ ํ…Œ์ด๋ธ” ์ƒ์„ฑ์‹œ ํ• ๋‹น๋œ Storage๋งŒ ๋‚จ๊ธฐ๊ณ  Release ๋ฐ์ดํ„ฐ๋ฅผ ๋ชจ๋‘ Deleteํ•ด๋„ ์‚ฌ์šฉํ–ˆ๋˜ Storage๋Š” Release๋˜์ง€ ์•Š์Œ
ํ…Œ์ด๋ธ”์˜ ์ •์˜ ์ž์ฒด๋ฅผ ์™„์ „ํžˆ ์‚ญ์ œํ•จ ํ…Œ์ด๋ธ”์„ ์ตœ์ดˆ ์ƒ์„ฑ๋œ ์ดˆ๊ธฐ์ƒํƒœ๋กœ ๋งŒ๋“ฌ ํ…Œ์ดํ„ฐ๋งŒ ์‚ญ์ œ

* ์‹œํ€€์Šค๊ฐ€ ์žˆ์„ ๋•Œ truncate๋Š” ์‹œํ€€์Šค๋ฒˆํ˜ธ๊ฐ€ ์ดˆ๊ธฐํ™”๋˜์ง€๋งŒ delete๋Š” ๊ทธ๋ ‡์ง€ ์•Š๋‹ค.

 

 


 

- ํŠธ๋žœ์žญ์…˜์ด๋ž€?

  • ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์˜ ๋…ผ๋ฆฌ์  ์—ฐ์‚ฐ๋‹จ์œ„ 
  • ํŠธ๋žœ์žญ์…˜์€ ๋ถ„ํ• ํ•  ์ˆ˜ ์—†๋Š” ์ตœ์†Œ์˜ ๋‹จ์œ„์ด๋‹ค. (์ „๋ถ€ ์ ์šฉํ•˜๊ฑฐ๋‚˜ ์ „๋ถ€ ์ทจ์†Œ/ ALL OR NOTHING)
  • ๋ถ„๋ฆฌ๋  ์ˆ˜ ์—†๋Š” ํ•œ ๊ฐœ ์ด์ƒ์˜ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์กฐ์ž‘์„ ์˜๋ฏธํ•œ๋‹ค.
  • ํ•˜๋‚˜์˜ ํŠธ๋žœ์žญ์…˜์—๋Š” ํ•˜๋‚˜ ์ด์ƒ์˜ SQL๋ฌธ์žฅ์ด ํฌํ•จ๋œ๋‹ค.

- ํŠธ๋žœ์žญ์…˜์˜ ํŠน์ง•

  • ์›์ž์„ฑ(Atomicity) : ํŠธ๋žœ์žญ์…˜์—์„œ ์ •์˜๋œ ์—ฐ์‚ฐ์€ ๋ชจ๋‘ ์„ฑ๊ณตํ•˜๋˜์ง€ ์•„๋‹ˆ๋ฉด ์ „ํ˜€ ์‹คํ–‰๋˜์ง€ ์•Š์•„์•ผํ•œ๋‹ค.
  • ์ผ๊ด€์„ฑ(Consistency) : ํŠธ๋žœ์žญ์…˜์ด ์‹คํ–‰๋˜๊ธฐ ์ „ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์— ์ด์ƒ์ด ์—†๋‹ค๋ฉด ์‹คํ–‰ ํ›„์—๋„ ์ด์ƒ์ด ์—†์–ด์•ผํ•œ๋‹ค.
  • ๊ณ ๋ฆฝ์„ฑ(Isolation) : ํŠธ๋žœ์žญ์…˜์ด ์‹คํ–‰๋˜๋Š” ๋„์ค‘์— ๋‹ค๋ฅธ ํŠธ๋žœ์žญ์…˜์˜ ์˜ํ–ฅ์„ ๋ฐ›์•„ ์ž˜๋ชป๋œ ๊ฒฐ๊ณผ๋ฅผ ๋งŒ๋“ค์–ด์„œ๋Š” ์•ˆ๋œ๋‹ค.
  • ์ง€์†์„ฑ(Durability) : ํŠธ๋žœ์žญ์…˜์ด ์„ฑ๊ณต์ ์œผ๋กœ ์ˆ˜ํ–‰๋˜๋ฉด ๊ทธ ํŠธ๋žœ์žญ์…˜์ด ๊ฐฑ์‹ ํ•œ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์˜ ๋‚ด์šฉ์€ ์˜๊ตฌ์ ์œผ๋กœ ์ €์žฅ๋œ๋‹ค. 

- ํŠธ๋žœ์žญ์…˜์— ๋Œ€ํ•œ ๊ฒฉ๋ฆฌ์„ฑ์ด ๋‚ฎ์€ ๊ฒฝ์šฐ ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ๋Š” ๋ฌธ์ œ์ 

  • Dirty Read : ๋‹ค๋ฅธ ํŠธ๋žœ์žญ์…˜์— ์˜ํ•ด ์ˆ˜์ •๋˜์—ˆ์ง€๋งŒ ์•„์ง ์ปค๋ฐ‹๋˜์ง€ ์•Š๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ์ฝ๋Š” ๊ฒƒ์„ ๋งํ•œ๋‹ค.
  • Non-Repeatable Read : ํ•œ ํŠธ๋žœ์žญ์…˜ ๋‚ด์—์„œ ๊ฐ™์€ ์ฟผ๋ฆฌ๋ฅผ ๋‘ ๋ฒˆ ์ˆ˜ํ–‰ํ–ˆ๋Š”๋ฐ, ๊ทธ ์‚ฌ์ด์— ๋‹ค๋ฅธ ํŠธ๋žœ์žญ์…˜์ด ๊ฐ’์„ ์ˆ˜์ • ๋˜๋Š” ์‚ญ์ œํ•˜๋Š” ๋ฐ”๋žŒ์— ๋‘ ์ฟผ๋ฆฌ ๊ฒฐ๊ณผ๊ฐ€ ๋‹ค๋ฅด๊ฒŒ ๋‚˜ํƒ€๋‚˜๋Š” ํ˜„์ƒ์„ ๋งํ•œ๋‹ค.
  • Phantom Read : ํ•œ ํŠธ๋žœ์žญ์…˜ ๋‚ด์—์„œ ๊ฐ™์€ ์ฟผ๋ฆฌ๋ฅผ ๋‘ ๋ฒˆ ์ˆ˜ํ–‰ํ–ˆ๋Š”๋ฐ, ์ฒซ๋ฒˆ์งธ ์ฟผ๋ฆฌ์—์„œ ์—†๋˜ ์œ ๋ น ๋ ˆ์ฝ”๋“œ๊ฐ€ ๋‘๋ฒˆ์งธ ์ฟผ๋ฆฌ์—์„œ ๋‚˜ํƒ€๋‚˜๋Š” ํ˜„์ƒ์„ ๋งํ•œ๋‹ค.

- TCL

: ํŠธ๋žœ์žญ์…˜์„ ์ปจํŠธ๋กคํ•˜๋Š” TCL

  1. COMMIT : ์ž…๋ ฅ, ์ˆ˜์ •, ์‚ญ์ œํ•œ ์ž๋ฃŒ์— ๋Œ€ํ•ด์„œ ๋ฌธ์ œ๊ฐ€ ์—†์„ ๊ฒฝ์šฐ ํŠธ๋žœ์žญ์…˜์„ ์™„๋ฃŒํ•œ๋‹ค.
  2. ROLLBACK : ์ž…๋ ฅ, ์ˆ˜์ •, ์‚ญ์ œํ•œ ๋ฐ์ดํ„ฐ์— ๋Œ€ํ•ด์„œ ์ปค๋ฐ‹ ์ด์ „์— ๋ณ€๊ฒฝ ์‚ฌํ•ญ์„ ์ทจ์†Œํ•  ์ˆ˜ ์žˆ๋Š” ๊ธฐ๋Šฅ์ด๋‹ค.
  3. SAVEPOINT : ์ €์žฅ์ . ์ €์žฅ์ ์„ ์ •์˜ํ•จ์œผ๋กœ์จ ๋กค๋ฐฑํ•  ๋•Œ ์ „์ฒด ๋กค๋ฐฑ์ด ์•„๋‹Œ ์ผ๋ถ€๋งŒ ๋กค๋ฐฑํ•  ์ˆ˜ ์žˆ๋‹ค. 

COMMIT ๊ณผ ROLLBACK ์„ ์‚ฌ์šฉํ•จ์œผ๋กœ์จ ๋ฐ์ดํ„ฐ ๋ฌด๊ฒฐ์„ฑ์„ ๋ณด์žฅํ•˜๊ณ , ์˜๊ตฌ์ ์ธ ๋ณ€๊ฒฝ์„ ํ•˜๊ธฐ ์ „์— ๋ฐ์ดํ„ฐ์˜ ๋ณ€๊ฒฝ ์‚ฌํ•ญ์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ, ๋…ผ๋ฆฌ์ ์œผ๋กœ ์—ฐ๊ด€๋œ ์ž‘์—…์„ ๊ทธ๋ฃนํ™”ํ•˜์—ฌ ์ฒ˜๋ฆฌ ๊ฐ€๋Šฅํ•˜๋‹ค.

 

 


 

 

- WHERE ์ ˆ

 

- ROWNUM , TOP

: where ์ ˆ์—์„œ ํ–‰์˜ ๊ฐœ์ˆ˜๋ฅผ ์ œํ•œํ•˜๋Š” ๋ชฉ์ ์œผ๋กœ ์‚ฌ์šฉํ•œ๋‹ค.

์˜ˆ) SELECT student_name FROM student where ROWNUM = 1; SELECT TOP(1) FROM student;

 

๋‘ ๊ฑด ์ด์ƒ์˜ N๊ฐœ์˜ ํ–‰์„ ๊ฐ€์ ธ์˜ค๊ณ  ์‹ถ์€ ๊ฒฝ์šฐ SELECT student_name FROM student WHERE ROWNUM <= 2; (X) ์ด๋ ‡๊ฒŒ ์‚ฌ์šฉํ•  ์ˆ˜ ์—†๋‹ค.

 

SELECT TOP(N) WITH TIES ~ : WITH TIES ํ‚ค์›Œ๋“œ๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ๋™์ผํ•œ ๊ฐ’๋„ ํฌํ•จํ•˜์—ฌ ์ถœ๋ ฅํ•œ๋‹ค.

 

 


 

 

- ๋‚ด์žฅํ•จ์ˆ˜

 

 

- ๋ฌธ์žํ˜• ํ•จ์ˆ˜

 

dual ํ…Œ์ด๋ธ”์€ ๋ฐ์ดํ„ฐ ๋”•์…”๋„ˆ๋ฆฌ์™€ ํ•จ๊ป˜ ์˜ค๋ผํด์—์„œ ์ž๋™์œผ๋กœ ์ƒ์„ฑ๋˜๋Š” ํ…Œ์ด๋ธ”์ž…๋‹ˆ๋‹ค. ์‚ฌ์šฉ์ž sys๊ฐ€ ์†Œ์œ ํ•˜๋ฉฐ ๋ชจ๋“  ์‚ฌ์šฉ์ž๊ฐ€ ์•ก์„ธ์Šค ๊ฐ€๋Šฅํ•œ ํ…Œ์ด๋ธ”์ž…๋‹ˆ๋‹ค. 

 

- ๋‚ ์งœํ˜• ํ•จ์ˆ˜

 

 

- ๋ณ€ํ™˜ํ˜• ํ•จ์ˆ˜

 

 

 

 

- CASE ํ‘œํ˜„

: IF-THEN-ELSE ๋…ผ๋ฆฌ์™€ ์œ ์‚ฌํ•œ ๋ฐฉ์‹์œผ๋กœ ํ‘œํ˜„์‹์„ ์ž‘์„ฑํ•ด์„œ SQL์˜ ๋น„๊ต ์—ฐ์‚ฐ ๊ธฐ๋Šฅ์„ ๋ณด์™„ํ•˜๋Š” ์—ญํ• ์„ ํ•œ๋‹ค. 

 

IF SAL > 2000

    THEN revised_salary = sal

    ELSE revised_salary = 2000

END-IF.

 

SELECT ename, 

             CASE 

             WHEN sal > 2000

             THEN sal

             ELSE 2000

             END resvised_salary

 

 

 

- NVL/ ISNULL ํ•จ์ˆ˜

 

SELECT NVL(mgr, -1) mgr

FROM employees

 

SELECT * FROM employees WHERE mgr IS NULL;

 

- NULLIF 

: NULLIF ํ•จ์ˆ˜๋Š” ํ‘œํ˜„์‹1์ด ํ‘œํ˜„์‹2์™€ ๊ฐ™์œผ๋ฉด NULL์„, ๊ฐ™์ง€ ์•Š์œผ๋ฉด ํ‘œํ˜„์‹1์„ ๋ฆฌํ„ดํ•œ๋‹ค. ํŠน์ • ๊ฐ’์„ NULL๋กœ ๋Œ€์ฒดํ•˜๋Š” ๊ฒฝ์šฐ์— ์œ ์šฉํ•˜๊ฒŒ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.

NULLIF(ํ‘œํ˜„์‹1, ํ‘œํ˜„์‹2)

 

- COALESCE

: ์ธ์ˆ˜์˜ ์ˆซ์ž๊ฐ€ ํ•œ์ •๋˜์–ด ์žˆ์ง€ ์•Š์œผ๋ฉฐ, ์ž„์˜์˜ ๊ฐœ์ˆ˜ ํ‘œํ˜„์‹์—์„œ NULL์ด ์•„๋‹Œ ์ตœ์ดˆ์˜ ํ‘œํ˜„์‹์„ ๋‚˜ํƒ€๋‚ธ๋‹ค. ๋ชจ๋“  ํ‘œํ˜„์‹์ด NULL์ด๋ผ๋ฉด NULL์„ ๋ฆฌํ„ดํ•œ๋‹ค. 

COALESCE (ํ‘œํ˜„์‹1, ํ‘œํ˜„์‹2, ... )

 

์ผ๋ฐ˜ํ˜• ํ•จ์ˆ˜ ํ•จ์ˆ˜ ์„ค๋ช…
NVL(ํ‘œํ˜„์‹1, ํ‘œํ˜„์‹2)-Oracleํ•จ์ˆ˜/  ISNULL(ํ‘œํ˜„์‹1, ํ‘œํ˜„์‹2)-SQL Serverํ•จ์ˆ˜ ํ‘œํ˜„์‹1์˜ ๊ฒฐ๊ณผ๊ฐ’์ด NULL์ด๋ฉด ํ‘œํ˜„์‹2์˜ ๊ฐ’์„ ์ถœ๋ ฅํ•œ๋‹ค. ๋‹จ, ํ‘œํ˜„์‹1๊ณผ ํ‘œํ˜„์‹2์˜ ๊ฒฐ๊ณผ ๋ฐ์ดํ„ฐ ํƒ€์ž…์ด ๊ฐ™์•„์•ผํ•œ๋‹ค. NULL๊ด€๋ จ ๊ฐ€์žฅ ๋งŽ์ด ์‚ฌ์šฉ๋˜๋Š” ํ•จ์ˆ˜์ด๋ฏ€๋กœ ์ƒ๋‹นํžˆ ์ค‘์š”ํ•˜๋‹ค.
NULLIF(ํ‘œํ˜„์‹1, ํ‘œํ˜„์‹2) ํ‘œํ˜„์‹1์ด ํ‘œํ˜„์‹2์™€ ๊ฐ™์œผ๋ฉด NULL์„, ๊ฐ™์ง€ ์•Š์œผ๋ฉด ํ‘œํ˜„์‹1์„ ๋ฆฌํ„ดํ•œ๋‹ค.
COALESCE(ํ‘œํ˜„์‹1, ํ‘œํ˜„์‹2, ....) ์ž„์˜์˜ ๊ฐœ์ˆ˜ ํ‘œํ˜„์‹์—์„œ NULL์ด ์•„๋‹Œ ์ตœ์ดˆ์˜ ํ‘œํ˜„์‹์„ ๋‚˜ํƒ€๋‚ธ๋‹ค. ๋ชจ๋“  ํ‘œํ˜„์‹์ด NULL์ด๋ผ๋ฉด NULL์„ ๋ฆฌํ„ดํ•œ๋‹ค.

 

 


 

 

- ์ง‘๊ณ„ํ•จ์ˆ˜

: select ์ ˆ, having ์ ˆ, order by ์ ˆ์— ์‚ฌ์šฉ๊ฐ€๋Šฅํ•˜๋‹ค. 

 

โญ๏ธโญ๏ธโญ๏ธNULL๊ฐ’์„ ํฌํ•จํ•˜๋Š” ์ง€ ์•ˆํ•˜๋Š” ์ง€

 

- GROUP BY ์ ˆ

: FROM ์ ˆ๊ณผ WHERE ์ ˆ ๋’ค์— ์˜ค๋ฉฐ, ๋ฐ์ดํ„ฐ๋“ค์„ ์ž‘์€ ๊ทธ๋ฃน์œผ๋กœ ๋ถ„๋ฅ˜ํ•˜์—ฌ ์†Œ๊ทธ๋ฃน์— ๋Œ€ํ•œ ํ•ญ๋ชฉ๋ณ„ ํ†ต๊ณ„ ์ •๋ณด๋ฅผ ์–ป์„ ๋•Œ ์‚ฌ์šฉํ•œ๋‹ค. 

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

- HAVING ์ ˆ

: ์ง‘๊ณ„ํ•จ์ˆ˜๋ฅผ ์กฐ๊ฑด์œผ๋กœ ํ•˜์—ฌ ๋ฐ์ดํ„ฐ๋ฅผ ์กฐํšŒํ•˜๊ณ  ์‹ถ์„ ๋•Œ ์‚ฌ์šฉํ•œ๋‹ค. 

 

 

- ORDER BY ์ •๋ ฌ

: ์นผ๋Ÿผ๋ช… ๋Œ€์‹  SELECT ์ ˆ์—์„œ ์‚ฌ์šฉํ•œ ALIAS ๋ช…์ด๋‚˜ ์นผ๋Ÿผ ์ˆœ์„œ๋ฅผ ๋‚˜ํƒ€๋‚ด๋Š” ์ •์ˆ˜๋„ ์‚ฌ์šฉ ๊ฐ€๋Šฅ. ๊ธฐ๋ณธ์ ์œผ๋กœ ์˜ค๋ฆ„์ฐจ์ˆœ ์ •๋ ฌ(ASC)

 

- JOIN 

 

๋ฐ˜์‘ํ˜•
Comments