AI 개발 공부 공간

AI, 머신러닝, 딥러닝, Python & PyTorch, 실전 프로젝트

SQLD 22

2.22 DROP, TRUNCATE, DELETE

2.22 DROP, TRUNCATE, DELETE🔸 1. DELETE – “조건 걸어서 지우기”무엇을 하냐?→ 테이블 안에 있는 데이터만 삭제→ "조건" 걸 수 있어서 필요한 것만 삭제 가능예시DELETE FROM 주문 WHERE 고객번호 = 3;➤ 고객번호가 3인 주문만 지움특징테이블 구조(형태)는 유지롤백(되돌리기) 가능!트랜잭션 필요 (커밋해야 적용됨)느릴 수 있음 (조건 확인 필요하니까) 🔸 2. TRUNCATE – “싹 지우기 (형태만 남기고)”무엇을 하냐?→ 테이블 안 전체 데이터 삭제→ 구조(테이블 뼈대)는 유지예시TRUNCATE TABLE 주문;➤ 주문 테이블의 모든 데이터 삭제특징매우 빠름조건 지정 불가능 (전부 삭제만 가능)롤백 ❌ (복구 안 됨, 실수 조심!)디스크 공간도 정리됨 ..

2.21 참조 무결성 제약조건

2.21 참조 무결성참조 무결성은 두 테이블 사이에서 데이터가 일치하도록 강제하는 규칙입니다.예를 들어, 주문 테이블의 고객번호가 고객 테이블에 존재하지 않으면 안 됩니다.즉, 없는 고객 번호로 주문을 넣는 일은 발생하면 안 됩니다.이걸 DBMS가 자동으로 검사해서 막아주는 것이 참조 무결성입니다. 📌 1. 언제 참조 무결성이 필요할까?두 테이블이 서로 연결(관계)되어 있을 때 필요합니다.예:고객 테이블(PK) ←→ 주문 테이블(FK)주문이 등록되려면 반드시 해당 고객이 존재해야 합니다. 📌 2. 부모 / 자식 테이블 개념 📌 3. 참조 무결성 제약 조건 종류✅ A. 삭제/수정(DELETE/MODIFY) 시 ✅ B. 삽입(INSERT) 시 📌 4. 꼭 외워야 할 차이점 정리 📌 5. 시험에..

2.20 트랜잭션

📘 트랜잭션(Transaction)더 이상 쪼갤 수 없는 데이터 처리 단위예: 은행 이체 = 출금 + 입금→ 둘 다 되어야 하므로 하나의 트랜잭션 🔷 ACID 특성 (트랜잭션의 4대 원칙) 📌 암기 팁:원-일-고-지(원자성, 일관성, 고립성, 지속성) 🧩 TCL 명령어 3가지: 트랜잭션 제어어 (Transaction Control Language) 🔁 COMMIT & ROLLBACK 흐름 예시-- 트랜잭션 시작UPDATE account SET balance = balance - 10000 WHERE user_id = 1;SAVEPOINT step1;UPDATE account SET balance = balance + 10000 WHERE user_id = 2;-- 문제가 생겼다면ROLLBAC..

2.19 복합 쿼리 예제 4

✅ 복합 쿼리 예제 4📌 1. 이 쿼리의 목적상품별 + 월별 주문 수량을 집계하고,각 상품의 총합과 전체 상품의 총합계도 함께 보여주는 통계 보고서 형태를 만들자! 📌 2. 사용된 핵심 SQL 기능 📌 3. SQL 쿼리 예시 (전체) SELECT CASE WHEN GROUPING(p.product_name) = 1 THEN '상품 전체' ELSE p.product_name END AS 상품명, CASE WHEN GROUPING(TO_CHAR(o.order_date, 'MM')) = 1 THEN '총계' ELSE TO_CHAR(o.order_date, 'MM') || '월' END AS 주문월, COUNT(*) AS 주문건수FROM orders oJOIN produ..

2.18 복합 쿼리 예제 3

✅ 목표: 특정 값이 이전 행, 다음 행 모두 같은 경우만 출력하기데이터를 A/B 그룹으로 나누고그룹 내에서 값이 연속으로 반복되는 행만 뽑아내는 쿼리입니다. 🔍 예제 테이블(tbl) 📄 최종 목표:같은 그룹(a, b) 안에서evl값이 이전 행과도 같고, 다음 행과도 같으면 출력! ✅ 전체 SQL 코드SELECT *FROM ( SELECT id, svl, evl, SUBSTR(id, 1, 1) AS gr, -- 그룹 나누기: id 앞글자 (a, b) CASE WHEN svl = LAG(evl) OVER (PARTITION BY SUBSTR(id, 1, 1) ORDER BY svl, NVL(evl,..

2.17 정규 표현식

🎯 2.17 정규 표현식 (Regular Expression) 🧠 1. 정규 표현식이 뭔가요?문자열 속에서 일정한 규칙(패턴)을 찾아내는 방법이에요.마치 "문자열 탐지기"라고 생각하면 돼요.평소엔 눈으로 “010으로 시작하는 번호”를 찾지만, 정규표현식은 이를 기계적으로 정확하게 찾아줘요. 🏁 2. 언제 써요?전화번호에서 숫자만 추출하고 싶을 때이메일 형식이 맞는지 검사할 때로그나 코드에서 특정 규칙의 문자 찾을 때다양한 기호를 하나로 통일하고 싶을 때 (예: /, ., - → -로 바꾸기) 🧱 3. 정규표현식은 어떻게 생겼나요?정규 표현식은 **“메타 문자”**라는 특수 기호들을 사용해서 “찾고 싶은 규칙”을 말해요. 🔧 4. 메타문자 – 자주 쓰는 것만 꼭 외우기 🧪 5. 예제✅ 예제 1:..

2.16 피벗(PIVOT) & 언피벗(UNPIVOT)

📌 2.16 피벗(PIVOT) & 언피벗(UNPIVOT)✅ 1. 피벗(PIVOT)이란?행의 데이터를 열(column)로 바꾸는 것.데이터를 보고서처럼 정리해서 보기 좋게 만들 때 사용.특히 엑셀 피벗테이블처럼 한눈에 통계 보기 좋게 정리하고 싶을 때 유용. ✅ 2. 언피벗(UNPIVOT)이란?열(column)의 데이터를 다시 행(row) 형태로 바꾸는 것.즉, 피벗의 반대.데이터 정규화나 분석용 가공 등에 활용됨. ✅ 3. 왜 시험에 나올까?2024년부터 시험 범위에 새롭게 추가됨.특히 엑셀 사용자들에게 익숙한 기능이고, SQL에서도 동일한 개념이 반영됨.실제 업무에서 통계표/보고서 작성 시 자주 활용됨. ✅ 4. 문법 포인트 – 외우는 공식📍 PIVOT 문법SELECT *FROM ( SELECT..

2.15 계층형 질의

📚 2.15 계층형 질의 (Hierarchical Query) 1️⃣ 계층형 질의란?부모-자식 관계를 가지는 데이터를 트리 구조로 탐색할 수 있게 해주는 SQL 방식입니다.조직도, 카테고리 구조, 사원-상사 관계처럼 상하 구조가 있는 데이터를 처리할 때 사용합니다.일반적인 SQL로는 불가능한 재귀적 탐색을 SQL 문장 한 줄로 처리할 수 있게 해줍니다. 2️⃣ 계층형 질의 핵심 문법✅ START WITH트리 탐색의 시작점 지정보통 루트 노드(상위, 부모)를 지정하는 데 사용START WITH mgr_no IS NULL✅ CONNECT BY [PRIOR ... = ...]부모-자식 관계를 연결하는 구문앞뒤에 PRIOR가 어느 쪽에 있느냐에 따라 **탐색 방향(전개 방향)**이 달라짐✅ ORDER SIBL..

2.14 Top-N 쿼리

✅ 2.14 Top-N쿼리뜻: 어떤 데이터 중에서 **상위 몇 개(N개)**만 골라내는 쿼리예시:급여가 가장 높은 직원 3명가장 많이 팔린 상품 10개점수가 높은 학생 5명 ✅ ROW_NUMBER() 함수란?뜻: 데이터 한 줄마다 번호를 매겨주는 함수→ 번호는 1부터 시작해서 정렬된 순서대로 매겨짐🧾 예시 코드:SELECT ROW_NUMBER() OVER (ORDER BY score DESC)👉 score가 높은 순서로 번호를 매깁니다 (1등부터). ⚠️ 중요한 시험 포인트! (정말 많이 틀리는 부분)📌 ROW_NUMBER는 WHERE 절에서 직접 못 씀!왜?SQL은 실행 순서가 WHERE → SELECT 이기 때문그런데 ROW_NUMBER()는 SELECT에서 만들어짐→ WHERE에서 그걸 참조하..

2.13 윈도우 함수

2.13 윈도우 함수윈도우(Window)는 "창문"이라는 뜻으로, 전체 데이터 중 일부(범위)를 지정해서 그 안에서 계산하는 함수.주로 순위 함수와 집계 함수를 응용해서, 그룹핑 없이도 행별 연산이 가능하게 도와줌.OVER() 구문을 꼭 동반함. (이게 윈도우 창을 정의하는 부분) 💡 예시 ❓질문: 반마다 학생들 순위를 구하려면?👉 여기서 윈도우 함수가 필요합니다!SELECT 이름, 반, 점수, RANK() OVER (PARTITION BY 반 ORDER BY 점수 DESC) AS 순위FROM 학생; ✅ 윈도우 함수 종류 정리① RANK()동점 허용, 순위 건너뜀예: 1등 1등 3등...② DENSE_RANK()동점 허용, 순위 안 건너뜀예: 1등 1등 2등...③ ROW_NUMBER..