SQL

SQL

SQL : Structured Query Language

Data Base ์‹œ์Šคํ…œ์—์„œ ์ž๋ฃŒ๋ฅผ ์ฒ˜๋ฆฌํ•˜๋Š” ์šฉ๋„๋กœ ์‚ฌ์šฉ๋˜๋Š” ๊ตฌ์กฐ์  ๋ฐ์ดํ„ฐ ์งˆ์˜ ์–ธ์–ด. ์—์Šคํ์—˜, ํ˜น์€ ์‹œํ€„์ด๋ผ๊ณ  ์ฝ๋Š”๋‹ค. Data Base์— ์ ‘๊ทผํ•  ๋•Œ ์‚ฌ์šฉ๋œ๋‹ค.

๋งŽ์€ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๊ฐ€ ์กด์žฌํ•œ๋‹ค, ๊ฐ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ํƒ€์ž…๋งˆ๋‹ค ๋‹ค๋ฅด๊ฒ ์ง€๋งŒ ๊ฑฐ์˜ ๋ชจ๋“  ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋Š”
SQL์€ interface ๊ธฐ๋ฐ˜์œผ๋กœ ์–ด๋А ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์—์„œ๋‚˜ ์‚ฌ์šฉ์ด๊ฐ€๋Šฅํ•˜๋‹ค.

์ˆœ์„œ

  • ์กฐํšŒ / ๊ฒ€์ƒ‰ โ€“ Select => Query
  • ์ž…๋ ฅ / ์ˆ˜์ • / ์‚ญ์ œ โ€“ insert / update / delete => DML
  • table ์ƒ์„ฑ / ์‚ญ์ œ / ์ˆ˜์ • โ€“ create / drop/ alter => DDL
  • ์ €์žฅ / ์ทจ์†Œ โ€“ TCL
# Notation Rule

* ๋Œ€๋ฌธ์ž : keyword
* ์†Œ๋ฌธ์ž : identifier
* [   ]  : 0  ~  N
* table Name : t/n
* Columm Name : c/n

t/n์˜ ์ •๋ณด๋ฅผ ๋ถˆ๋Ÿฌ์˜จ๋‹ค

# Query : Select * from t/n

table ์ƒ์„ฑ

# DDL ==> create/drop

create table t/n{
    C/N DataType [ default ],
    C/N DataType [ default ],
    ....
    C/N DataType [ default ]
}

table data ์ž…๋ ฅ / ์‚ญ์ œ / ์ˆ˜์ •

# DML ==> insert , DELETE , UPDATE

Insert
into(SET) ( C/N, C/N, ....)
Value (value, value, ....);

table์˜ ์ €์žฅ๋œ data๋ฅผ data base์— ์ €์žฅ์‹œํ‚ด

# TCL ==> Commit / rollback

์šฐ๋ฆฌ๊ฐ€ ์ง‘์ค‘์ ์œผ๋กœ ๋ด์•ผํ•˜๋Š” ๋ถ€๋ถ„์€ ๋ฐ์ดํ„ฐ๋ฅผ ์ฝ๋Š” Qurey๋ถ€๋ถ„์˜ select์ด๋‹ค.
์ž…๋ ฅ๋ฐ›์€ ํ…Œ์ด๋ธ”์˜ ๋ฐ์ดํ„ฐ๋ฅผ Select์„ ํ†ตํ•ด์„œ ์—ฐ์‚ฐ , ์ˆ˜์ • ๋“ฑโ€ฆ. ์„ ํ•  ์ˆ˜ ์žˆ๋‹ค.

์กด์žฌํ•˜์ง€ ์•Š๋Š” C/N์„ ๋ถˆ๋Ÿฌ ์—ฐ์‚ฐ๊ณผ ํ•จ์ˆ˜๋ฅผ ํ†ตํ•ด ์ƒˆ๋กœ์šด ๋ฐ์ดํ„ฐ ์ปฌ๋Ÿผ์„ ๋งŒ๋“ค์–ด ๋‚ผ ์ˆ˜ ์žˆ๋‹ค.

name        salary // as๋ฅผ ํ†ตํ•ด ์ด๋ฆ„์„ ์ง€์ •
ํ™๊ธธ๋™      200
ํ™๊ธธ์ˆœ      400
๊ธธ๋™์ด      300

SELECT
salary [as] ์›”๊ธ‰, salary*12 ์—ฐ๋ด‰    // ํ•„์š”ํ•œ ์ปฌ๋Ÿผ๋งŒ ๋ถˆ๋Ÿฌ์˜ฌ ์ˆ˜ ์žˆ๋‹ค.
from emp_test;

salary (์›”๊ธ‰)  salary*12 (์—ฐ๋ด‰)
200             2400
400             4800
300             3600

์œ„์™€ ๊ฐ™์ด ์กด์žฌํ•˜์ง€ ์•Š๋˜ ์›”๊ธ‰ ์ปฌ๋Ÿผ์„ ์—ฐ์‚ฐ์„ ํ†ตํ•ด ๋งŒ๋“ค์–ด ๋‚ผ ์ˆ˜ ์žˆ๋‹ค.

์ด๊ฒƒ๋ฟ๋งŒ ์•„๋‹ˆ๋ผ ๋ฐ์ดํ„ฐ๋ฅผ ๊ด€๋ฆฌํ•˜๋Š”๋ฐ ์œ ์šฉํ•œ ๊ธฐ๋Šฅ๋“ค์„ ๋งŽ์ด ์ง€์›ํ•ด์ค€๋‹ค.

C/N [AS] ~


// select์‹œ ์ปฌ๋Ÿผ๋„ค์ž„ ์ง€์ •
name [as] ์ด๋ฆ„ , salary [as] ์›”๊ธ‰ , salary*12 [as] ์—ฐ๋ด‰
* as ์—†์ด๋„ ์‚ฌ์šฉ์ด ๊ฐ€๋Šฅํ•˜๋‹ค

์˜ค๋ฆ„์ฐจ์ˆœ(ASC) ๋‚ด๋ฆผ์ฐจ์ˆœ(DESC)


// ์˜ค๋ฆ„์ฐจ์ˆœ(ASC) ๋‚ด๋ฆผ์ฐจ์ˆœ(DESC)
SELECT
name ์ด๋ฆ„ , salary ์›”๊ธ‰, salary*12 ์—ฐ๋ด‰    // ํ•„์š”ํ•œ ์ปฌ๋Ÿผ๋งŒ ๋ถˆ๋Ÿฌ์˜ฌ ์ˆ˜ ์žˆ๋‹ค.
from emp_test
order by salary [ASC(DESC)];

์ด๋ฆ„         ์›”๊ธ‰           ์—ฐ๋ด‰
ํ™๊ธธ๋™       200            2400
๊ธธ๋™์ด       300            3600
ํ™๊ธธ์ˆœ       400            4800

ASC ๋Š” ์˜ค๋ฆ„์ฐจ์ˆœ , DESC๋Š” ๋‚ด๋ฆผ์ฐจ์ˆœ ๋‘˜๋‹ค ์—†์ด ์‚ฌ์šฉ์ด ๊ฐ€๋Šฅํ•˜๋‹ค. defualt ๊ฐ’์€ ASC ๋ฟ๋งŒ ์•„๋‹ˆ๋ผ ๋ชจ๋“  ๋ฐ์ดํ„ฐ๋Š”
์ˆœ์„œ๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ๋‹ค๋ฅธ ๋ฌธ์ž ์ปฌ๋Ÿผ์ด๋‚˜ ๋‚ ์งœ ์ปฌ๋Ÿผ๋“ฑ ๋˜ํ•œ ์ •๋ ฌ์ด ๊ฐ€๋Šฅํ•˜๋‹ค. order by name , salary ๋„ ๊ฐ€๋Šฅํ•˜๋‹ค.

์ด๋ ‡๊ฒŒ ์ •๋ ฌ์„ ํ•˜๊ฒŒ๋˜๋ฉด NULL๊ฐ’์„ ๊ฐ€์ง„ ๋ฐ์ดํ„ฐ๊ฐ€ ์กด์žฌํ•  ๊ฒƒ์ด๋‹ค. NULL์€ ๋ฐ์ดํ„ฐ์˜ ์ตœ์ƒ์œ„๋กœ ์กด์žฌํ•œ๋‹ค.
์ด๊ฒƒ์ด ๋ง˜์— ์•ˆ๋“ค๋ฉด ์ˆ˜์ •์ด ๊ฐ€๋Šฅํ•œ๋ฐ NULLS FIRST, NULLS LAST๋ฅผ ๋ถ™์—ฌ ์‚ฌ์šฉ์ด ๊ฐ€๋Šฅํ•˜๋‹ค.

NULL


SQL์˜ ๋ฐ์ดํ„ฐ๋ฅผ ๋ณด๋ฉด ์•„๋ฌด๋Ÿฐ ๋ฐ์ดํ„ฐ๊ฐ’์ด ์ž…๋ ฅ๋˜์žˆ์ง€ ์•Š์€ ๊ฒƒ์„ ๋ณผ ์ˆ˜ ์žˆ๋‹ค.
์ด๊ฒƒ์€ ๋น„์–ด์žˆ๋Š” ๊ฐ’์ด ์•„๋‹Œ NULL ๊ฐ’์ด๋ผ๊ณ  ํ•  ์ˆ˜ ์žˆ๋‹ค.
NULL๋กœ ๋น„์–ด ์žˆ๋Š” ๊ฐ’์„ ์•ฝ๊ฐ„์˜ ์ฝ”๋“œ๋ฅผ ํ†ตํ•ด ์›ํ•˜๋Š” ๋ฐ์ดํ„ฐ๋กœ ๋ณ€๊ฒฝ๊ณผ ์ˆ˜์ •์ด ๊ฐ€๋Šฅํ•˜๋‹ค.

// NVL
NVL(C/N, 0)
* C/N ์˜ NULL๊ฐ’์€ 0์œผ๋กœ ์ดˆ๊ธฐํ™”ํ•œ๋‹ค.

// NVL2
NVL2(salary, ~~~, 0)
* C/N์˜ NULL๊ฐ’์€ 0์œผ๋กœ ์ดˆ๊ธฐํ™”, NULL์ด ์•„๋‹Œ ๊ฐ’์€ ~~~ ์œผ๋กœ ์ดˆ๊ธฐํ™” ์‹œํ‚จ๋‹ค.

DECODE()๋ผ๋Š” ํ•จ์ˆ˜๊ฐ€ ์กด์žฌํ•˜๋Š”๋ฐ ๋‹ค๋ฅธ ์–ธ์–ด๋กœ ์น˜๋ฉด if๋ฌธ์œผ๋กœ ๋ณผ ์ˆ˜ ์žˆ๋‹ค.

// DECODE()
SELECT
name , Decode(title,
		NULL, '<์ง๊ธ‰์—†์Œ>',                // if else  title์ด NULL์ด๋ฉด <์ง๊ธ‰์—†์Œ>
		'์‚ฌ์žฅ' , 'ํšŒ์‚ฌ์˜์•„๋ฒ„์ง€',           // if else ์‚ฌ์žฅ์ด๋ฉด ํšŒ์‚ฌ์˜์•„๋ฒ„์ง€
		'๋ถ€์‚ฌ์žฅ' , 'ํšŒ์‚ฌ์˜ ์–ด๋จธ๋‹ˆ',        // if else ๋ถ€์‚ฌ์žฅ์ด๋ฉด ํšŒ์‚ฌ์˜ ์–ด๋จธ๋‹ˆ
		'์ง๊ธ‰์žˆ์Œ'), title                 // else    ์•„๋ฌด๊ฒƒ๋„ ์†ํ•˜์ง€ ์•Š์œผ๋ฉด ์ง๊ธ‰์žˆ์Œ
from emp_test;

WHERE์ ˆ ์กฐ๊ฑด


SELECT์„ ํ†ตํ•ด ๋ฐ์ดํ„ฐ๋ฅผ ์ฝ์œผ๋ฉด ์›ํ•˜๋Š” ๋ฐ์ดํ„ฐ๋งŒ ์ถœ๋ ฅํ•˜๊ณ  ์‹ถ์„๋•Œ๊ฐ€ ์žˆ๋‹ค ๊ทธ๋Ÿด ๋•Œ ์‚ฌ์šฉํ•˜๋Š”๊ฒƒ์ด WHERE์ด๋‹ค.
| ์—ฐ์‚ฐ์ž | ์„ค๋ช… |
|โ€”โ€”โ€”-|:โ€”โ€”โ€”โ€”-:|
| BETWEEN a AND b | a์™€ b์‚ฌ์ด์˜ ๋ฐ์ดํ„ฐ๋ฅผ ์ถœ๋ ฅ (a , b ๊ฐ’ ํฌํ•จ) |
| IN (list) | list์˜ ๊ฐ’ ์ค‘ ์–ด๋А ํ•˜๋‚˜์™€ ์ผ์น˜ํ•˜๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ์ถœ๋ ฅ |
| LIKE | ๋ฌธ์ž ํ˜•ํƒœ๋กœ ์ผ์น˜ํ•˜๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ์ถœ๋ ฅ(% , _ ์‚ฌ์šฉ) |
| IS NULL| NULL ๊ฐ’์„ ๊ฐ€์ง„ ๋ฐ์ดํ„ฐ๋ฅผ ์ถœ๋ ฅ |
| NOT ~ | NOT์„ ๋ถ™์ด๋ฉด ์—ฐ์‚ฐ์ž์˜ ์กฐ๊ฑด์— ๋ฐ˜๋Œ€๋˜๋Š” ๊ฐ’์„ ์ถœ๋ ฅ |

// BETWEEN a AND b
salary BETWEEN 200 AND 300
* 200์—์„œ 300 ์‚ฌ์ด์— ์กด์žฌํ•˜๋Š” ํ–‰๋งŒ ์ถœ๋ ฅ

// IN (list)
salary IN (200, 300)
* 200 ๋˜๋Š” 300์„ ๊ฐ€์ง€๋Š” ํ–‰๋งŒ ์ถœ๋ ฅ

// LIKE
salary LIKE '20%'   // 20์„ ํฌํ•จํ•˜๋Š” 20 ~ ๊ฐ€์ง€๋Š” ํ–‰์„ ์ถœ๋ ฅ
salary LIKE '%0'    // 0์œผ๋กœ ๋๋‚˜๊ณ  ~ 0 ๊ฐ€์ง€๋Š” ํ–‰์„ ์ถœ๋ ฅ
salary LIKE '2__'   // 2๋กœ ์‹œ์ž‘ํ•˜๋Š” ๋ฌธ์ž์ˆ˜๊ฐ€ 3๊ฐœ์ธ ๋ฌธ์ž๋ฅผ ์ถœ๋ ฅ
* ' % ' ๋Š” ์ž…๋ ฅ ๋ฌธ์ž๋ถ€ํ„ฐ๋ฅผ ๋งํ•œ๋‹ค.
  ' _ ' ๋Š” ์ž…๋ ฅ ๋ฌธ์ž์™€ ๋ฌธ์ž์ˆ˜ ํ•œ๊ฐœ์˜ ๊ฐฏ์ˆ˜๋ฅผ ์˜๋ฏธ

// IS NULL
salary IS NULL
* salary ๊ฐ€ NULL์„ ๊ฐ€์ง€๋Š” ํ–‰์„ ์ถœ๋ ฅ

// NOT~
NOT์„ ์‚ฌ์šฉํ•˜๋ฉด ํ•ด๋‹น ์กฐ๊ฑด์— ๋ฐ˜๋Œ€๋˜๋Š” ํ–‰์„ ์ถœ๋ ฅํ•œ๋‹ค.

Categories:

Updated:

Leave a comment