SQL ๋ฒผ๋ฝ์น๊ธฐ ๊ณต๋ถํ๋ฉด์ ์ ํ๋ธ์ ์ฌ๋ผ์จ ๊น๊ฐ๋ฏผ ๋์ ๊ฐ์๋ฅผ ๋ณด๊ณ ํค์๋๋ง ์ ๋ฆฌํ์์ต๋๋ค.
์ ์ฒ๋ผ ๋ฒผ๋ฝ์น๊ธฐ ํ์๋ ๋ถ๋ค์ ์ํด ์ ๋ฆฌํ ๋ฌธ์ ์ถ์ ํค์๋๋ค์ ๋๋ค. ๊น๊ฐ๋ฏผ ๊ฐ์ฌ๋๊ป์ 1ํธ ์์์์ ์ธ๊ธํ์ ๋ด์ฉ๋ค
ํ๋๋ ๋์น์ง ์๊ณ ์ ๋ฆฌํ์ง๋ง ํค์๋๋ง ์ ๋ฆฌํ๊ณ ๋ฐ๋ก ๊ฐ๋ ๋ฐ ์ค๋ช ์ ๋ฌ์ง ์์์ต๋๋ค.
์ํ์ ๋์ค๋ ํค์๋/์ ํ์ด ๋ฌด์์ธ์ง ํ์ ํ๋ ์ฉ๋๋ก ๋ด์ฃผ์ธ์!
https://www.youtube.com/watch?v=PC3ypt_VGWI
1. SQL ๋ช ๋ น๋ฌธ ๊ฐ๊ด
- ์ฐ์ฐ๋ฌธ ์์ : From - where - group by - having - select - order by
- DML : select, insert, delete, update
- DDL : alter, create, modify, drop
- TCL : rollback, commit
- DCL : grant, revoke
2. SELECT
- distinct ์ํ๋ ์ ๋ณด๋ก๋ง ์ง์ฝ ๊ธฐ๋ฅ
Distinct deptno, mgr ์๋ฏธ - group by(deptno, mgr)๊ณผ ์ ์ฌํ๋ค
- AS : select - as์๋ต ๊ฐ๋ฅ, ์ปฌ๋ผ ๋ช ์ ๋์ด์ฐ๊ธฐ ์๋ ๊ฒฝ์ฐ ex. " ์ง์ ~ ๋ฒํธ" / - from : as ์ฌ์ฉ๋ถ๊ฐ!
- Concat : ์ฐ์ฐ์ ๊ธฐํธ + : sql server / || : orcale /
: concat (),() ์ธ์๊ฐ ๋ฐ๋์ ๋๊ฐ
3. ๋ ผ๋ฆฌ์ฐ์ฐ์
- and ๋๋ค ๋ง์กฑ
- or ๋ ์ค ํ๋
- not ๋๋ค no
- ์ฐ์ฐ์์ ์ฐ์ฐ ์์ : not(1์์) -> and -> or
[์์]
not(์กฐ๊ฑด) -> not ์ ํฌํจํ ์กฐ๊ฑด์ผ๋ก ์๋ก ๋ง๋ค๊ธฐ (1)
and(์กฐ๊ฑด)
and, not(์กฐ๊ฑด) -> not ์ ํฌํจํ ์กฐ๊ฑด์ผ๋ก ์๋ก ๋ง๋ค๊ธฐ (2)
or(์กฐ๊ฑด)
=> (not ์กฐ๊ฑด 1) and ์กฐ๊ฑด and (not ์กฐ๊ฑด 2) or ์กฐ๊ฑด
=> ์กฐ๊ฑด or ์กฐ๊ฑด (and์กฐ๊ฑด๋ผ๋ฆฌ ์กฐ๊ฑด ํฉ์นจ )
4. SQL ์ฐ์ฐ์
- Between and -> 1 and 2 : 1๊ณผ 2 ์ฌ์ด
- in -> A in (1,2,3) : A๋ 1or 2or 3
- LIKE : _ (์ธ๋ ๋ฐ): ์๋ฏธ๋ ๋ฏธ์ง์ ํ ๊ธ์๋ฅผ ์๋ฏธ , % : 0 ์ด์์ ๊ธ์๋ฅผ ์๋ฏธ
- escape : ์์) ename like 'A_A' ์์ผ๋ ์นด๋์ธ _์ %๋ฅผ ๋ฌธ์๋ก ์ทจ๊ธํ์ฌ ํ๊ธฐ -> 'A@_A' ๋ก ์ถ์ ํ์ฌ ์ฌ์ฉํ๋ค
์ํ์์ @ ์๋๋ผ #๋ ๊ฐ๋ฅ
- Rownum (oracle) : where์กฐ๊ฑด ์ ์์ Rownum์ด 1์ธ ๊ฒฝ์ฐ๋ฅผ ํฌํจํด์ผํ๋ค.
- [rownum ex][๋งค์ฐ ์ค์!!!]
select empno, sal from where rownum <= 3 order by sal desc ์ด๋ค ๊ฒฐ๊ณผ?
=> sal ์ ๋ ฌ ์ / sal ์ ๋ ฌ ํ ์ฐจ์ด
order by sal์ด ๊ฐ์ฅ ๋ง์ง๋ง์ ์ฌ์ฉ๋๋ค. => ์ ๋ ฌ ์ ์ rownum์ ์ํ ์กฐ๊ฑด์ ์ด ์คํ๋๋ค. ์ฆ ์ด๋ฏธ 3๊ฐ ์ดํ๋ก ๋ฝ๊ณ ์ ๊ทธ ํ์ ์ ๋ ฌ์ด ์คํ๋๋ค.
- Top (sql server) : select ์ ์์ ์ฌ์ฉ. ์์ n๊ฐ์ ํ์ ๊ฐ์ ธ์จ๋ค. select Top(n) <์ปฌ๋ผ๋ช > ์ปฌ๋ผ์ ์ถ๋ ฅํ ๋, ์์ n๊ฐ์ ๊ฒฐ๊ณผ ๊ฐ์ ๊ฐ์ ธ์ค๊ฒ ๋ค๋ ์๋ฏธ
5. NULL [๋งค์ฐ ์ค์!!!]
- null์ ์ ์ : ๋ถ์ฌ, ๋ชจ๋ฅด๋ ๊ฐ
- null +2, null-4, null*null => null์ ์ฐ์ ์ฐ์ฐ
- null = null, null = 2 ๋น๊ต์ฐ์ฐ : ์์์์(unknown)๋ ผ๋ฆฌ:where์กฐ๊ฑด ์ ์ด unknown์ด๋ผ๋ฉด False๋ก ๋ํ๋จ.
- ์ ๋ ฌ์์์ ์๋ฏธ ์ฐจ์ด
oracle : ๋ฌดํ๋. ์ค๋ฆ์ฐจ์ ์ ๋ ฌ์ผ๋ ๊ฐ์ฅ ๋ง์ง๋ง์ ๋์ด
sql server : ์ต์์ ๊ฐ (-๋ฌดํ๋). ์ค๋ฆ์ฐจ์ ์ ๋ ฌ์ผ๋ ๊ฐ์ฅ ์ฒ์ ๋์ด
- nvl(๊ฐ1, ๊ฐ2), nvl2(๊ฐ1, ๊ฐ2,๊ฐ3), isnull(๊ฐ1,๊ฐ2) (๋๋ฐ๊ธฐ)
nvl : ๊ฐ1 is null์ด๋ฉด ๊ฐ 2 / is not null์ด๋ฉด (null์ด ์๋๋ผ๋ฉด) ๊ฐ 1
nvl2์ ๊ฐ3 : ๊ฐ1 is null์ด๋ฉด ๊ฐ3 / is not null์ด๋ฉด ๊ฐ2
- is null : nvl๊ณผ ๋์ผ
- null if(๊ฐ1,๊ฐ2) (๊ฐ์ด ๋์) : ๋๊ฐ์ ๊ฐ์ด ๊ฐ์ผ๋ฉด null, ๋ค๋ฅด๋ฉด ๊ฐ1
-coalesce(๊ฐ1, ๊ฐ2, ....๋ฌดํ๋) (null ์๋ ์ฒซ๋ฒ์งธ ๊ฐ) : ๊ฐ๊ฐ์ ๊ฐ์ด null์ธ์ง ์๋์ง ํ๋จํด์ ์ฒ์ ๋์จ ๊ฐ ์ฐพ๊ธฐ
6. ์ ๋ ฌ
- ์ ๋ ฌ์ ์ ์, ์ ๋ ฌ์ ํน์ฑ : ๊ฐ์ฅ ๋ง์ง๋ง์ ์คํ, (์ฟผ๋ฆฌ๋ฌธ ๋๋ฆฌ๋๋ฐ) ์ฑ๋ฅ์ด ๋๋ ค์ง ๊ฐ๋ฅ์ฑ ์์
- null๊ฐ ๊ณผ์ ๊ด๊ณ - oracle๊ณผ sql server์์์ ์ฐจ์ด (๋ฌดํ๋, ์ต์๊ฐ : ์์ ๋ฌดํ๋)
- ์ปฌ๋ผ ๋ฒํธ๋ก ์ ๋ ฌ : ์ถ๋ ฅ๋๋ ์ปฌ๋ผ์ ์๋ณด๋ค ํฐ ๊ฐ์ ๋ถํ (์ค๋ฅ ๋์ค๋ ์ ์ง ์ ํ์ธํ๊ธฐ)
- ์ธ์ ๋๊ฐ ์ ๋ ฌ : [ex] sal desc, ename asc ์๋ฏธ : sal์ด ๊ฐ์ผ๋ฉด ename ์ค๋ฆ์ฐจ์
- ์ถ๋ ฅ๋์ง ์๋ ์ปฌ๋ผ๋ช ์ผ๋ก ์ ๋ ฌ ๊ฐ๋ฅ : [ex] select ename order by sal : ename ๋ค์ sal์ด ์์ง๋ง sal ๊ธฐ์ค์ผ๋ก ์ ๋ ฌ์ด ๊ฐ๋ฅํ๋ค.
- ์ ๋ ฌ์ ๊ฐ์ฅ ๋ง์ง๋ง์ ์คํ๋๋ค๋ ์ ๊ธฐ์ตํ๊ธฐ
7. ์ซ์ ํจ์
- Round ์๋ฆฟ์ ํ์ธ [ex] Round(138.94)(์ธ์) ์ผ๋ ์ธ์ ์๋ฆฌ์ ๋ญ๊ฐ ๋ค์ด๊ฐ๋์ง!
- ceil (orcale ๊ธฐ์ค) / ceiling (sql server ๊ธฐ์ค)
8. ๋ฌธ์์ด ํจ์
- ๋์๋ฌธ์ ๋ฐ๊ฟ์ฃผ๋ upper / lowerํจ์๋ ๊ธฐ๋ณธ
- LPad, RPad, LTrim, RTrim ๋ณด๊ธฐ
- substr, nstr ์ค์ต๋ง ํด๋ณด๊ธฐ
(- replaceํจ์๋ ์์ฆ ์ ์ ๋์ด)
9. ๋ ์ง ํจ์
- TO_Char, TO_date ์ค์ตํด๋ณด๊ธฐ : ํ๋ณํ ๊ฐ๋ฅ ์ฌ๋ถ ๋ฌป๋ ๋ฌธ์ ๋์ด
[ex] ๋ค์ ์ค ๋ฐ์ดํฐ์ ํ๋ณํ์ ์ด๋ฅดํค๋/ ํ๋ณํ์ด ๊ฐ๋ฅํ๊ฒ ํ๋ ํจ์๋? -> ๋ต ์ ์ง์ TO_Char, TO_date ์ ํ
- sysdate (oracle) : ํ์ฌ ์๊ฐ ์ถ๋ ฅํด์ฃผ๋ ํจ์. ๋์ผ ๊ธฐ๋ฅํจ์ Getdate() (SQL server์์ ์ฌ์ฉ)
- ๋ ์ง ๋ฐ์ดํฐ + ์ซ์(n) : ์ซ์(n)๋งํผ์ ๋ ์ดํ๋ฅผ ์๋ฏธ,n์ day๋ก ์ธ์ํจ
10. DECODE/CASE
- case๋ง ๋์ด.
- case when / case when then / when then / else end : else๊ฐ ์๋ค๋ฉด, ์กฐ๊ฑด1, ์กฐ๊ฑด2 ๋ง์กฑํ์ง ์๋ ๊ฒฝ์ฐ null์ด ์ถ๋ ฅ๋๋ค.
- DECODE๋ ๋ณ๊ฑฐ ์์. ์ค์ต ํ๋ฒ ํด๋ณด๊ธฐ
11. ์ง๊ณํจ์[๋งค์ฐ ์ค์!!!]
- null๊ณผ์ ๊ด๊ณ
null + ์ฐ์ฐ = null
null + null = null
์ซ์ +์ซ์=์ซ์
- sum(A)+sum(B)+sum(C) vs sum(A+B+C)์ ์ฐจ์ด ์๊ธฐ ๊ผญ!!
12. GROUP BY
- ์ง์ฝ ๊ธฐ๋ฅ์ด ์๋ค.
- where๋ค์์ ์คํ๋๋ค.
- ๊ทธ๋ฃน ์์ค์ ์ ๋ณด๋ฅผ ๋ฐ๊พผ๋ค. having๋ ๊ทธ๋ฃน์ ๋ํ ์กฐ๊ฑด์.
13. JOIN
- natural join, using ๋๊ฐ์ ๊ฒฝ์ฐ ์ด์ธ์๋ ์ค๋ณต๋ ์ปฌ๋ผ์ด ์ฌ๋ผ์ง๋ค. ์ค๋ณต๋ ์ปฌ๋ผ ํ๋๋ง ์ถ๋ ฅ, ์ ์ผ ์์ ๋ฑ์ฅ.
- using์ ๊ฒฝ์ฐ alias ์ฌ์ฉ ๋ถ๊ฐ.
- left outer join : a left outer join ์๋ฏธ ๋์ผ a coll = b coll(+) ๋ผ๊ณ ์จ์ ธ์์๋ ์๋ฏธ ๋์ผํ๋ค.
- right outer join๋ ๋์ผ, ํ์ธํ๊ธฐ
- joinํ๋ฉด ํ ์๋ก ์ปฌ๋ผ์ ๋์ด๋๋ค.
- ์กฐ์ธ ์์ ์๋ ๊ทธ๋ฆผ ์ฐธ๊ณ
14. ์๋ธ์ฟผ๋ฆฌ
- select from where group by having order by ์ด ์ค group by๋ง ์๋ธ์ฟผ๋ฆฌ๊ฐ ์ ๋ค์ด๊ฐ๋ค
- slect -> scalar / from ->inline view, ๋ฉ์ธ์ฟผ๋ฆฌ์ ์ปฌ๋ผ ์ฌ์ฉ ๊ฐ๋ฅ / where, having -> ๊ฑฐ์ ๋ชจ๋ ์๋ธ์ฟผ๋ฆฌ, ์ค์ฒฉ ์๋ธ์ฟผ๋ฆฌ๋ผ๊ณ ๋งํจ / order by -> scalar
- In, any/some, all, exist ํจ์ ์๋ฏธ ๊ธฐ์ต
- exist ์ ๊ฒฝ์ฐ '1', 'x', 'a' ๋ชจ๋ ์ถ๋ ฅ ๊ฐ๋ฅ =>True๋ก ์ถ๋ ฅ, ์๋ฌด๊ฒ๋ ์์ด 0 rows์ผ ๊ฒฝ์ฐ False ์ถ๋ ฅ
15. ์งํฉ ์ฐ์ฐ์
- union, interest, minus(oracle)-Except(sql server), => 3๊ฐ์ง ๋ชจ๋ ์ ๋ ฌ ์์ ์ด ์๋ค. ์๋๊ฐ ๋๋ฆฌ๋ค.
- unionall : ์ค๋ณต ๋ฐ์ดํฐ ์กด์ฌ, ์ ๋ ฌ ์์ ์์, ์๋ ๋น ๋ฆ
์๋ ๊ทธ๋ฆผ์์ ๋ํ๋์๋ฏ์ด, ์ฐ์ฐ์ ๊ฐ๊ฐ์ ์๋ฏธ ์๊ณ ์๊ธฐ
16. DDL
- TCL๊ณผ ์ฐ๊ฒฐ์ง์ด์ ์๊ฐ
- Truncate vs Drop ์ฐจ์ด : ์ ์๋ ์ ์ฃผ๋ฐ ํด๊ฑฐ, ๊ตฌ์กฐ๋ ๋จ์์์. drop์ ๊ฑด๋ฌผ ์ฒ ๊ฑฐ, ์๋ฌด๊ฒ๋ ์ ๋จ๋๋ค.
- Truncate vs delete ์ฐจ์ด : DDL vs DML -rollback๊ณผ commit ์ฐ๊ด์ง์ด์ ๋์จ๋ค.
17. DML
- insert, update, delete : TCL commit, rollback๊ณผ ์ฐ๊ฒฐ์ง์ด ๋์จ๋ค. *์ค๋ฅ ์ํฉ๋ง ๊ณต๋ถ/์์ ์ ์ ๋์ด
- merge : ์ ์ ํ 37ํ๋ง ์ฐธ๊ณ
18. ์ ์ฝ์กฐ๊ฑด [๋งค์ฐ ์ค์!!!]
- PK(unique + not null, ํ๋๋ง ์กด์ฌ), unique, not null ๊ธฐ์ตํ๊ธฐ
19. DCL
- grant, revoke ์ ์๋ฅผ ๋ฌป๋ ์ง๋ฌธ
- role์ ํน์ง : ๋ช ๋ น์ด๋ ์๋๊ณ ๊ฐ์ฒด-object์ ํ๋
20. VIEW
- "๋ ํธ๋ถ" : ๋ ๋ฆฝ์ฑ, ํธ๋ฆฌ์ฑ, ๋ณด์์ฑ ์ ์ฅ์
21. ๊ทธ๋ฃน ํจ์ [๋งค์ฐ ์ค์!!!]
- roll up, cube, grouping sets, => ๊ฒฐ๊ณผ๊ฐ ์ฃผ๊ณ 3๊ฐ ์ค ๋ฌด์์ ์ผ๋์ง ๋ฌป๋ ๋ฌธ์ , ๋น๊ตํ ๋์ฌ ๊ฐ๋ฅ์ฑ ๋์
[ex]
rollup(A,B) vs rollup(B,A) ๊ฐ์ ๊ฒฐ๊ณผ๊ฐ ๋์ค๋? -> no. ๊ณ์ธต๊ตฌ์กฐ๋ก ์งํ๋๊ธฐ๋๋ฌธ์
cube(A,B) vs cube(B,A) -> ๊ฐ์ ๊ฒฐ๊ณผ ๋์ด
* rollup์ธ์ง cube์ธ์ง ์ฐพ๋ ๋ฐฉ๋ฒ *๊ธฐ์ถ๋ฌธ์ ๋ณด๋ฉด์ ์ฐ์ตํ๊ธฐ
1) null ๋ค ์ฐพ๊ธฐ 2) ์ดํฉํ ์๋์ง ์ฐพ๊ธฐ->์์ : rollup(ํ์ชฝ๋ง ๊ฒฐ๊ณผ), cube(์์ชฝ ๋ค ๊ฒฐ๊ณผ) / ์์ -> groupingsets
- grouping : ์์ ์ ์๋์ด
22. TCL
- commit, rollback ๊ธฐ์ตํ๊ธฐ
- auto commit off, Begin transaction : ์์ฆ ์ ์ ๋์ด, DDL์ commit ๊ธฐ๋ฅ ์์ค ๊ฒ
'์๊ฒฉ์ฆ_์ ์ฒ๊ธฐ,DAsP,COSpro..' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[์ํ์ ํ๋ !] SQLD ๊ธฐ์ถ ๋ฌธ์ ์ฐธ๊ณ ์ฌ์ดํธ ๋ชจ์ (2) | 2022.09.03 |
---|---|
51ํ DAsP ๋ ํ ํฉ๊ฒฉ ํ๊ธฐ/๊ณต๋ถ ๋ฐฉ๋ฒ/for (๋น)์ ๊ณต์๐ (2) | 2022.08.05 |
์ ๋ณด์ฒ๋ฆฌ๊ธฐ์ฌ ์ค๊ธฐ ํฉ๊ฒฉ ํ๊ธฐ for ๋น์ ๊ณต (2) | 2022.06.21 |
๋น์ ๊ณต์ ์์ค์ ์ ๊ณต์ ์ ๋ณด์ฒ๋ฆฌ๊ธฐ์ฌ ํ๊ธฐ ํฉ๊ฒฉํ๊ธฐ, ๊ณต๋ถ๋ฒ (0) | 2022.05.15 |
์ ๋ณด์ฒ๋ฆฌ ์ดํ ์ ๋ฆฌ (0) | 2022.02.15 |