๐ ์ค๋ ๋ด๊ฐ ๋ฐฐ์ด ๊ฒ
๐ ๋ฐ์ดํฐ๋ฒ ์ด์ค ๊ฐ์
๋ฐ์ดํฐ๋ฒ ์ด์ค๋?
- ๋ชฉ์ ์ ๋ง๋๋ก ๊ด๋ จ๋ ๋ฐ์ดํฐ๋ฅผ ๋ชจ์๋๊ธฐ ์ํ ๋ฐฉ๋ฒ
- ๋ฐ์ดํฐ ๋ชจ์์ ๊ด๋ฆฌ ๋ฐ ์ด์ฉํ๋๋ก ์ ๊ณตํ๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค ๊ด๋ฆฌ ์์คํ ์ ์ผ๋ฐ์ ์ผ๋ก ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ผ๊ณ ๋ ๋ถ๋ฆ
๐ DBMS : ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ ๊ด๋ฆฌ/์ด์ํ๋ ์ญํ
๋ฐ์ดํฐ๋ฒ ์ด์ค ์ข ๋ฅ |
๊ด๊ณํ ๋ฐ์ดํฐ๋ฒ ์ด์ค |
๊ฐ์ฒด์งํฅ ๋ฐ์ดํฐ๋ฒ ์ด์ค |
๊ฐ์ฒด๊ด๊ณํ ๋ฐ์ดํฐ๋ฒ ์ด์ค |
NoSQL |
๐ DB์ Schema
Schema | |
๋ฌผ๋ฆฌ์ ๊ณต๊ฐ | DBMS์ ์ ์ฅ๋๋ ๊ณต๊ฐ |
๋ ผ๋ฆฌ์ ๊ณต๊ฐ | ์ ์ฅ ๊ณต๊ฐ์ ์์ญ |
๐SELECT ๋ฌธ์ ๊ธฐ๋ณธ ๊ตฌ์กฐ
- SELECT ๋ฌธ์ ๋ ผ๋ฆฌ์ ์ฒ๋ฆฌ ์์
SELECT a.job ------------------------------- 5
, COUNT(a.empno) AS cnt_emp
, SUM(a.sal) AS sum_salary
, MAX(a.hiredate) AS latest_hiredate
FROM emp a ------------------------------- 1
WHERE a.sal > 1000 ------------------------------- 2
GROUP BY a.job ------------------------------- 3
HAVING COUNT(a.empno) >= 3 ------------------------------- 4
ORDER BY a.job; ------------------------------- 6
๐ SELECT ์ ๊ณผ FROM ์
- SELECT ๋ฌธ์ ๊ธฐ๋ณธ์ ์ผ๋ก SELECT ์ ๊ณผ FROM ์ ๋ก ๊ตฌ์ฑ๋๋ค.
SELECT ์นผ๋ผ, ์นผ๋ผ, ...
FROM ํ
์ด๋ธ;
- SELECT ์ ์ ์ ์คํฐ๋ฆฌ์คํฌ(*)๋ฅผ ๊ธฐ์ ํ๋ฉด ํ ์ด๋ธ์ ์ ์ฒด ์นผ๋ผ์ด ์กฐํ๋๋ค.
SELECT *
FROM ํ
์ด๋ธ;
- SELECT ์ ์ DISTINCT ํค์๋๋ฅผ ๊ธฐ์ ํ๋ฉด ์ค๋ณต ๊ฐ์ด ์ ๊ฑฐ๋ ๊ฒฐ๊ณผ๊ฐ ๋ฐํ๋๋ค.
- ๊ฐ์ ์นดํ ๊ณ ๋ฆฌ๋ฅผ ํ์ธํ๊ณ ์ถ์ ๋ ์ฌ์ฉ !
SELECT DISRINCT job
FROM emp;
- SELECT ์ ์ ์นผ๋ผ์ ๋ณ์นญ(Column Alias)์ ์ง์ ํ ์ ์๋ค.
- ์นผ๋ผ ๋ณ์นญ์ AS ํค์๋ ์ฌ์ฉ (์๋ต ๊ฐ๋ฅํ์ง๋ง, ๊ฐ๋ ์ฑ ์ธก๋ฉด์์ ์ฌ์ฉ)
- (”)์ ์ฌ์ฉํ๋ฉด ๋ณ์นญ์ ๊ณต๋ฐฑ์ด๋ ํน์๋ฌธ์ ํฌํจ, ๋์๋ฌธ์ ๊ตฌ๋ถ ๊ฐ๋ฅ
SELECT deptno AS dno, dname AS "๋ถ์ ๋ช
", loc "LOC ation!@"
FROM dept ;
- FROM ์ ์ ํ ์ด๋ธ์๋ ๋ณ์นญ(Column Alias)์ ์ง์ ํ ์ ์๋ค.
- ํ ์ด๋ธ๋ช ๋ค์ ํ ์นธ ๋์ฐ๊ณ ๋ฐ๋ก ๊ธฐ์
- ์นผ๋ผ ์์ ํ ์ด๋ธ ๋ณ์นญ์ ์ฌ์ฉํ๋ฉด, ํด๋น ์นผ๋ผ์ด ์ด๋ค ํ ์ด๋ธ์ ์นผ๋ผ์ธ์ง ๋ช ์ ๊ฐ๋ฅ
SELECT a.deptno, a.dname
FROM dept a ;
- SELECT ์ ์ ์นผ๋ผ๊ณผ ํจ๊ป ๋ฆฌํฐ๋ด(Literal)์ ๊ธฐ์ ํ ์ ์๋ค.
- ๋ฆฌํฐ๋ด : ๋ณํ์ง ์๋ ๊ฐ
- (‘)์ผ๋ก ๊ฐ์ธ์ ๊ธฐ์ , ๋ ์ง ๋ฆฌํฐ๋ด์ DATE ํค์๋์ ํจ๊ป ๊ธฐ์
SELECT a.deptno
, 'data' AS char_literal, 99 AS num_literal, DATE '2018-06-05' AS date_literal
FROM dept a ;
[๊ฒฐ๊ณผ]
DEPTNO | CHAR_LITERAL | NUM_LITERAL | DATE_LITERAL |
10 | data | 99 | 2018/06/05 00:00:00 |
20 | data | 99 | 2018/06/05 00:00:00 |
- SELECT ์ ์ ์นผ๋ผ์ด๋ ๋ฆฌํฐ๋ด์ ๋ํด ์ฐ์ฐ์๋ฅผ ์ฌ์ฉํ ์ ์๋ค.
1. ์ฐ์ ์ฐ์ฐ์ : ์ซ์ ๊ฐ, ๋ ์ง ๊ฐ
- ์ซ์ & ์ซ์ : ์ฌ์น์ฐ์ฐ(*, /, +, -)
- ๋ ์ง & ์ซ์ : ๋ํ๊ธฐ(+), ๋นผ๊ธฐ(-)
- ๋ ์ง & ๋ ์ง : ๋นผ๊ธฐ(-)
2. ์ฐ๊ฒฐ ์ฐ์ฐ์(||) : ๋ฌธ์ ๊ฐ
SELECT a.sal
, (a.sal + 1000) / 2 AS new_sal
, a.hiredate
, a.hiredate + 1 AS hdate_plus_1day
, a.hiredate - 1/24/60/60 AS hdate_minus_1sec
, a.hiredate - DATE '1981-02-01' AS diff_days
FROM emp a ;
[๊ฒฐ๊ณผ]
SAL | NEW_SAL | HIREDATE | DATE_PLUS_1DAY | HDATE_MINUS_1SEC | DIFF_DAYS |
800 | 900 | 1980/12/17 00:00:00 | 1980/12/18 00:00:00 | 1980/12/16 23:59:59 | -46 |
- NULL
- NULL์ ํฌํจํ ์ฐ์ ์ฐ์ฐ์ ๊ฒฐ๊ณผ๋ ํญ์ NULL !
๐ WHERE ์
- ์กฐํ๋๋ ๋ฐ์ดํฐ(ํ)๋ฅผ ์ ํ
- ์กฐ๊ฑด์ด TRUE์ธ ๊ฐ๋ง ๊ฒฐ๊ณผ์ ํฌํจ
- ๋น๊ต ์กฐ๊ฑด
A = B | A๊ฐ B์ ๊ฐ๋ค | A <> B | A๊ฐ B์ ๊ฐ์ง ์๋ค |
A > B | A๊ฐ B๋ณด๋ค ํฌ๋ค | A < B | A๊ฐ B๋ณด๋ค ์๋ค |
A >= B | A๊ฐ B๋ณด๋ค ํฌ๊ฑฐ๋ ๊ฐ๋ค | A <= B | A๊ฐ B๋ณด๋ค ์๊ฑฐ๋ ๊ฐ๋ค |
- ๋ ผ๋ฆฌ ์กฐ๊ฑด
(์กฐ๊ฑด1) AND (์กฐ๊ฑด2) | ๋ ์กฐ๊ฑด ๋ชจ๋ TRUE → TRUE |
(์กฐ๊ฑด1) OR (์กฐ๊ฑด2) | ๋ ์กฐ๊ฑด ์ค ํ๋๋ผ๋ TRUE → TRUE |
AND ๋ ผ๋ฆฌ ์กฐ๊ฑด์ด OR ๋ ผ๋ฆฌ ์กฐ๊ฑด๋ณด๋ค ๋จผ์ ํ๊ฐ๋จ !!
๊ดํธ๋ฅผ ์ฌ์ฉํ์ฌ ๋ช ์์ ์ผ๋ก ์ฐ์ ์์ ์ง์ ํ์
NOT (์กฐ๊ฑด) | ๋ฐ๋๋ก ! |
- IN ์กฐ๊ฑด
A IN (b1, b2, …) | A๊ฐ IN List(b1, b2, …) ์ค ์ด๋ค ๊ฐ๊ณผ ๊ฐ๋ค |
A NOT IN (b1, b2, …) | A๊ฐ IN List(b1, b2, …) ์ ๋ชจ๋ ๊ฐ๊ณผ ๊ฐ์ง ์๋ค |
NOT IN ์กฐ๊ฑด ์ฌ์ฉ ์, IN List์ NULL์ด ํฌํจ๋์ง ์์์ผ ํจ
- BETWEEN ์กฐ๊ฑด
A BETWEEN b1 AND b2 | b1, b2 ๊ฐ ํฌํจ |
A NOT BETWEEN b1 AND b2 | b1, b2 ๊ฐ ๋ฏธํฌํจ |
- LIKE ์กฐ๊ฑด
A LIKE (๋ฌธ์์ด ํจํด) | A๊ฐ (๋ฌธ์์ด ํจํด)๊ณผ ์ผ์นํ๋ค |
A NOT LIKE (๋ฌธ์์ด ํจํด) | A๊ฐ (๋ฌธ์์ด ํจํด)๊ณผ ์ผ์นํ์ง ์๋๋ค |
์์ชฝ ๋ชจ๋ ๋ฌธ์ ๊ฐ์ด์ด์ผ ํจ
% | 0๊ฐ ์ด์์ ๋ชจ๋ ๋ฌธ์์ ์ผ์น |
_ | 1๊ฐ์ ๋ชจ๋ ๋ฌธ์์ ์ผ์น |
๐ญ ์ค๋ ๊ธฐ์ตํด์ผ ํ ๋ด์ฉ
โ ๋ฐ์ดํฐ๋ฒ ์ด์ค, ์คํค๋ง, ๊ทธ๋ฆฌ๊ณ ํ ์ด๋ธ ๊ฐ ๊ด๊ณ
์ด์ ์๋ ๊ทธ๋ฅ ํ ์ด๋ธ์ ์ ์ฅ๋ ๋ฐ์ดํฐ๋ฅผ sql์ ์ด์ฉํ์ฌ ๋ถ์ํ๋ ๊ณผ์ ๋ง ์งํํด๋ณด์์,
์ ํํ sql์ด ์ด๋ค ๊ตฌ์กฐ์ธ์ง ๊ทธ๋ฆฌ๊ณ ์คํค๋ง์ ํ ์ด๋ธ์ด ์ด๋ป๊ฒ ์ด๋ฃจ์ด์ง๋์ง์ ๋ํ ์ดํด๊ฐ ์ ํ ์์๋ค.
์ค๋ ๊ฐ์๋ฅผ ํตํด sql์ ๋ํ ๊ทผ๋ณธ์ ์ดํด๊ฐ ์ด๋ฃจ์ด์ก๋ค !
โ๐ป ํ๊ณ
๋๋์ด ํ์ด์ฌ์ด ๋๋๊ณ sql์ ๋ํ ๊ฐ์๊ฐ ์์๋์๋ค !
๊ฐ์ ์ค ์ค๋ฅ๋ก ์ธํด ์ดํด๊ฐ ์ ์๋๋ ๋ถ๋ถ๋ ์์์ง๋ง ํ์๋ถ๋ค์ ๋์์ผ๋ก ์ ์งํํ ์ ์์๋ค :)
๋จ์ sql ๊ฐ์๋ ํ์ดํ !!!!
'STARTERS 4๊ธฐ > [STARTERS] TIL' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[STARTERS 4๊ธฐ TIL] #10์ผ์ฐจ(23.02.17) (0) | 2023.02.20 |
---|---|
[STARTERS 4๊ธฐ TIL] #9์ผ์ฐจ(23.02.16) (0) | 2023.02.20 |
[STARTERS 4๊ธฐ TIL] #7์ผ์ฐจ(23.02.14) (0) | 2023.02.19 |
[STARTERS 4๊ธฐ TIL] #6์ผ์ฐจ(23.02.13) (0) | 2023.02.19 |
[STARTERS 4๊ธฐ TIL] #5์ผ์ฐจ(23.02.10) (1) | 2023.02.17 |