๐ method
-
ํธ๋์ญ์
๊ด๋ฆฌ ๋ช
๋ น์ด
- BEGIN TRANSACTION: ํธ๋์ญ์
์์
- COMMIT: ํธ๋์ญ์
์๋ฃ, ๋ณ๊ฒฝ ์ฌํญ ์ ์ฉ
- ROLLBACK: ํธ๋์ญ์
์ทจ์, ๋ณ๊ฒฝ ์ฌํญ ์ทจ์
- SAVEPOINT: ํธ๋์ญ์
๋ด ํน์ ์ง์ ์ ์ฅ
- RELEASE SAVEPOINT: ์ ์ฅ์ ํด์
- SET TRANSACTION: ํธ๋์ญ์
์ ๊ฒฉ๋ฆฌ ์์ค ์ค์
-
TIMESTAMP : 4๋ฐ์ดํธ ๋๋ 8๋ฐ์ดํธ์ ์ ์ฅ๊ณต๊ฐ ํ์ฉ, ์๊ฐ๋ ์ ์ฅ์ผ๋ก ์๋ ๊ฐฑ์ ๊ฐ๋ฅ (TCL)
-
DATETIME : 8๋ฐ์ดํธ ์ ์ฅ๊ณต๊ฐ์ผ ์ฌ์ฉ, ๋ ์ง์ ์๊ฐ ํฌํจ, ์๊ฐ๋ ๋ณํ ์์ด ๊ทธ๋๋ก ์ ์ฅ, ๊ฐฑ์ ํ์X
-
ENUM() : ๋ฐ๋์ ํ๋์ ๊ฐ๋ง ์ ์ฅ
-
TRUNCATE : ํ
์ด๋ธ์ ๋ชจ๋ ๋ ์ฝ๋๋ฅผ ์ญ์ ํ์ง๋ง ํ
์ด๋ธ์ ์ ์ง
๐ Constraints
- UNIQUE : ํด๋น ์นผ๋ผ์ ์ค๋ณต๋ ๊ฐ์ ํ์ฉํ์ง ์์
- DEFAULT : ์๋ก์ด ๋ ์ฝ๋๊ฐ ์ฝ์
๋ ๋ ํด๋น ์นผ๋ผ์ ์ง์ ๋ ๊ฐ์ ์ฌ์ฉ
- ENUM() : ๋ฐ๋์ ํ๋์ ๊ฐ๋ง ์ ์ฅ
- CHECK : ํด๋น ์นผ๋ผ์ ์ ์ฅ๋ ์ ์๋ ๊ฐ์ ๋ฒ์๋ ์กฐ๊ฑด์ ์ง์
๐ grammer
- SUBSTR(์ปฌ๋ผ๋ช
,start,end) : ์ถ๋ ฅํ ์๋ฆฌ ~ ๋๋ ์๋ฆฌ
- CONCAT(์ปฌ๋ผ๋ช
,"x") : ์ปฌ๋ผ๋ช
์ x ๋ฅผ ๋ถ์ฌ์ ์ถ๋ ฅ cm๋ ๊ทธ๋ฐ๊ฑฐ ์ถ๋ ฅ
- ORDER BY X DESC, Y ASC X ๋ฅผ ๋ด๋ฆผ์ฐจ์์ผ๋ก ์ ๋ ฌํ์๋ ๊ฐ์๊ฐ์ด ์์ผ๋ฉด 2๋ฒ์งธ ๊ธฐ์ค ์ ์ฉ
- DATE_FORMAT(a,'%Y-%m-%d) : ๋ ์ง๊น์ง๋ง ์ถ๋ ฅ๋๊ฒ y๊ฐ ์๋ฌธ์๋ฉด ๋ค์ 2์๋ฆฌ๋ง ์ถ๋ ฅ m์ด ๋๋ฌธ์๋ฉด ์์ด๋ก d๊ฐ ๋๋ฌธ์๋ฉด 24th ์ด๋ฐ์์ผ๋ก ์ถ๋ ฅ
- ์ธ๋ฑ์ค : ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์ฑ๋ฅ์ ์ต์ ํํ๊ณ ์ฟผ๋ฆฌ ์ฒ๋ฆฌ์๋๋ฅผ ๊ฐ์
- ํ
์ด๋ธ์ ํน์ ์ด์ ๋ํด ์ ๋ ฌ ๊ตฌ์กฐ๋ฅผ ์์ฑํ์ฌ, ๊ฒ์ ์๊ฐ ๋จ์ถ
- WHERE, JOIN, ODRER BY, GROUP BY ๊ตฌ๋ฌธ์ด ํ๋ง๋ ์ฟผ๋ฆฌ์์ ์กฐํ ๋ฐ ์ ๋ ฌ ์๋ ๊ฐ์
- ๊ณ ์ ์ธ๋ฑ์ค๋ฅผ ์ฌ์ฉํ๋ฉด ํน์ ์ด์ ๋ฐ์ดํฐ ์ค๋ณต ๋ฐฉ์ง
- ์ธ๋ฑ์ค๊ฐ ์์ผ๋ฉด ๋์ฉ๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค ๋๋คํ๊ฒ ์ ๊ทผํด์ผํ๋ค -> B-Tree...๋ฑ ๊ตฌ์กฐ๋ฅผ ํ์ฉํด ํจ์จ์ ์ผ๋ก ์ํ
- ๋จ์ฉ์ ์ฑ๋ฅ ์ ํ ๋ฌธ์ ์ฃผ์ํ ๊ฒ
CREATE INDEX ์ธ๋ฑ์ค๋ช
ON ํ
์ด๋ธ๋ช
(์ด1 [ASC|DESC], ์ด2 [ASC|DESC], ...);
- CASE WHEN(SELECT ์ ์ ์ฌ์ฉ)
SELECT CASE WHEN ๊ธฐ์กด ์ด = ์กฐ๊ฑด THEN '๊ฐ1'
WHEN ๊ธฐ์กด์ด = ์กฐ๊ฑด2 THEN '๊ฐ2'
...
(ELSE '๊ฐ N')
END AS ์๋ก์ด ์ด
SELECT *,
CASE WHEN ageband BETWEEN 20 AND 30 THEN '2030'
WHEN ageband BETWEEN 40 AND 50 THEN '4050'
ELSE 'other' END AS ageband_seg
FROM [MEMBER]
SELECT ์ง๊ณํจ์(DISTINCT) CASE WHEN ๊ธฐ์กด์ด = ์กฐ๊ฑด THEN ์ง๊ณ์ด(ELSE๊ฐ) END AS ์๋ก์ด์ด
SELECT gender, ageband,
COUNT(CASE WHEN YEAR(join_date) = 2018 THEN mem_no END) AS join_18,
COUNT(CASE WHEN YEAR(join_date) = 2019 THEN mem_no END) AS join_19
FROM [MEMBER]
GROUP BY gender, ageband
ORDER BY 1
SELECT employee_id
, first_name
, CASE job_id
WHEN 13 THEN 'CLERK'
WHEN 14 THEN 'MANAGER'
ELSE 'N/A'
END AS [job_title]
FROM employees
WHERE department_id IN (1,3)
๐ word
- TCL : ํธ๋์ญ์
์ ์ ์ด๋ฅผ ๋ด๋นํ๋ sql์ ํ , ์ปค๋ฐ ๋กค๋ฐฑ
๐ definition
- ๋ฐ์ดํฐ๋ฒ ์ด์ค, ์ผ๊ด์ฑ, ๋ฌด๊ฒฐ์ฑ, ๋ณด์์ฑ ์ด๋?
- ์ผ๊ด์ฑ : ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์ํ๊ฐ ํญ์ ์ผ๊ด๋ ์ํ๋ฅผ ์ ์งํ๋๋ก ํ๋ ๊ฒ
- ํธ๋์ญ์
:ACID ์์ฑ์ ๋ณด์ฅํ๋ฉฐ, ์ผ๊ด์ฑ์ ์ ์งํ๋ ํต์ฌ
- A(Atomicity),C(Consistency),I(Isolation),D(Durability)
- ๋ฌด๊ฒฐ์ฑ : ๋ฐ์ดํฐ์ ์ ํ์ฑ๊ณผ ์ ๋ขฐ์ฑ์ ์ ์งํ๋ ๊ฒ
- PRIMARY KEY, FOREIGN KEY, UNIQUE, CHECK
- ๋ณด์์ฑ : ๋ถ์ ์ ํ ์ ๊ทผ ๋ฐ ์กฐ์ ๋ฐฉ์ง
- ํธ๋์ญ์
: ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์ํ๋ฅผ ๋ณํ์ํค๊ธฐ ์ํด ์ํํ๋ ์์
์ ๋
ผ๋ฆฌ์ ๋จ์, DBMS ์์ ํ๋์ ๋
ผ๋ฆฌ์ ์ธ ์์
๋จ์๋ฅผ ๋ฌถ์ ์์
์งํฉ
- ๋์ ๊ณผ์ : 1. commit : ๋์ ์๋ฃ,๋ณ๊ฒฝ๋ด์ฉ ํ์ 2.rollback : ์ค๋ฅ๋ฐ์ ์์
์ด ์ทจ์๋๋ฉฐ ํธ๋์ญ์
์ด์ ์ผ๋ก ๋์๊ฐ
- Query : ๋ฐ์ดํฐ๋ฒ ์ด์ค์์ ์ ๋ณด๋ฅผ ๊ฒ์ํ๊ฑฐ๋ ์กฐ์ํ๊ธฐ ์ํด ์ฌ์ฉํ๋ ๋ช
๋ น์ด
- INDEX : DB ํ
์ด๋ธ์ ๋ํ ๊ฒ์ ์๋๋ฅผ ๋์ฌ์ฃผ๋ ์๋ฃ ๊ตฌ์กฐ
- B-tree Index : ๊ฐ์ฅ ์ผ๋ฐ์ ์ธ ์ธ๋ฑ์ค ์ ํ์ผ๋ก, ๊ท ํ ํธ๋ฆฌ ๊ตฌ์กฐ๋ฅผ ์ฌ์ฉํ์ฌ ๊ฒ์ ์๋๋ฅผ ์ต์ ํ
- Bitmap Index : ๋ฐ์ดํฐ๊ฐ ์ค๋ณต๋ ๊ฒฝ์ฐ ์ ๋ฆฌํ๋ฉฐ, ๋๋ ๋ฐ์ดํฐ ๋ถ์์ ์ ํฉ
- IOT Index : ๋ฐ์ดํฐ๋ฅผ ํ
์ด๋ธ ํํ๊ฐ ์๋ ์ธ๋ฑ์ค ํํ๋ก ์ ์ฅ
- Clustered Index : ํ
์ด๋ธ์ ์ค์ ๋ฐ์ดํฐ๊ฐ ์ ๋ ฌ๋ ์์๋ก ์ ์ฅ
- ์๊ฐ ์ฑ๋ฅ

๐ Tip
- IS NULL ๋ก ํ์ธํด์ผํจ =null ๋ถ๊ฐ
- ๋ฐ์ดํฐ ํ์์ด date ์ฌ๋ ๋บ์
๊ฐ๋ฅ ๋ช
์์ ์ผ๋ก DATEDIFF ๋ฅผ ์จ์ ๋ช
์์ ์ผ๋ก ๋ณ์ค์๋ ์์ผ๋ END_DATE - START_DATE ์ด๋ ๊ฒ ๋นผ๋ ๋จ