๐Ÿ“ Confusing things in SQL

Haks.ยท2024๋…„ 12์›” 12์ผ
0

Study

๋ชฉ๋ก ๋ณด๊ธฐ
9/65

๐Ÿ“Œ 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 ์ธ๋ฑ์Šค๋ช… -- ex)idx_~~
ON ํ…Œ์ด๋ธ”๋ช…(์—ด1 [ASC|DESC], ์—ด2 [ASC|DESC], ...);
  • CASE WHEN(SELECT ์ ˆ์— ์‚ฌ์šฉ)
-- 1) ์ƒˆ๋กœ์šด ์—ด์„ ์ƒ์„ฑํ•˜๋Š” ๊ฒฝ์šฐ
SELECT CASE WHEN ๊ธฐ์กด ์—ด = ์กฐ๊ฑด THEN '๊ฐ’1'
			WHEN ๊ธฐ์กด์—ด = ์กฐ๊ฑด2 THEN '๊ฐ’2'
            ...
            (ELSE '๊ฐ’ N')
            END AS ์ƒˆ๋กœ์šด ์—ด        
-- ex) 
SELECT *,
	CASE WHEN ageband BETWEEN 20 AND 30 THEN '2030'
    WHEN ageband BETWEEN 40 AND 50 THEN '4050'
    ELSE 'other' END AS ageband_seg -- else ์•ˆ์จ๋„๋จ 
FROM [MEMBER]
-- 2) ์—ด์„ ์ง‘๊ณ„ํ•˜๋Š” ๊ฒฝ์šฐ
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
-- 3) switch ๋ฐฉ์‹
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 ์ด๋ ‡๊ฒŒ ๋นผ๋„ ๋จ

0๊ฐœ์˜ ๋Œ“๊ธ€

๊ด€๋ จ ์ฑ„์šฉ ์ •๋ณด