TIL70: SQL
νΈλμμ (Transaction)
MySQLμμ DB μνλ₯Ό λ°κΎΈλ μμ μ μ΅μ λ¨μλ₯Ό λ§ν©λλ€.
Transactionμ΄ μ€μ λλ©΄ DBMSλ‘λΆν° μ€μ λ Transaction μμ μ λν ACID μμ±μ λΆμ¬λ°μ΅λλ€.
Atomicity (μμμ±) : All or Nothing -> λ€ μ§νλκ±°λ μμ μλκ² νλ μμ±
Consistency (μΌκ΄μ±)
Isolation (λ 립μ±)
Durability (μμμ±) : λλ κ²°κ³Όλ μꡬμ μΌλ‘ λμ€ν¬μ!
commit -> Transaction νμ
rollback -> Transaction λλ리기
νΈλμμ μ μμ ν μ μμ μΌλ‘ μ²λ¦¬λμ λλ§ μ μ μ’ λ£λκΈ° λλ¬Έμ κ±°λμ μμ μ±μ ν보ν μ μλ λ°©λ²μ λλ€.
DISTINCT
μ€λ³΅λ κ²μ νλλ§ λ¨κΈ°κ³ μΆμ λ μ¬μ©ν©λλ€.
SELECT DISTINCT addr FROM usertbl;
μ§κ³ ν¨μ MAX(), MIN()
SELECT name, weight
FROM usertbl
WHERE weight = (SELECT MAX(weight) FROM usertbl)
OR weight = (SELECT MIN(weight)from usertbl);
HAVING
HAVINGμ WHEREκ³Ό λΉμ·ν κ°λ μΌλ‘ 쑰건μ μ ννλ κ²μ΄μ§λ§, μ§κ³ ν¨μμ λν΄ μ‘°κ±΄μ μ ννλ κ²μ λλ€.
HAVING μ μ κΌ GROUP BYμ λ€μμ λμμΌ ν©λλ€.
SELECT userName, SUM(price*amount)
FROM buytbl
GROUP BY userName
HAVING SUM(price*amount) > 10000;
ROLLUP
GROUP BYμ κ³Ό ν¨κ» WITH ROLLUPλ¬Έμ μ¬μ©νλ©΄ μ΄ν© λλ μ€κ° ν©κ³κ° λνλκ² λ©λλ€.
μΉΌλΌ λΉμΉΈμ μ±μ°κΈ° μν΄μλ IFNULLμ μ¬μ©ν©λλ€.