<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
    <channel>
        <title>data_analyst.log</title>
        <link>https://velog.io/</link>
        <description>데이터분석가를 꿈꾸는 대학생</description>
        <lastBuildDate>Sun, 01 Dec 2024 13:55:25 GMT</lastBuildDate>
        <docs>https://validator.w3.org/feed/docs/rss2.html</docs>
        <generator>https://github.com/jpmonette/feed</generator>
        <copyright>Copyright (C) 2019. data_analyst.log. All rights reserved.</copyright>
        <atom:link href="https://v2.velog.io/rss/data_analyst" rel="self" type="application/rss+xml"/>
        <item>
            <title><![CDATA[BDA X 영진닷컴 SQLD 스터디 후기]]></title>
            <link>https://velog.io/@data_analyst/BDA-X-%EC%98%81%EC%A7%84%EB%8B%B7%EC%BB%B4-SQLD-%EC%8A%A4%ED%84%B0%EB%94%94-%ED%9B%84%EA%B8%B0</link>
            <guid>https://velog.io/@data_analyst/BDA-X-%EC%98%81%EC%A7%84%EB%8B%B7%EC%BB%B4-SQLD-%EC%8A%A4%ED%84%B0%EB%94%94-%ED%9B%84%EA%B8%B0</guid>
            <pubDate>Sun, 01 Dec 2024 13:55:25 GMT</pubDate>
            <description><![CDATA[<p><img src="https://velog.velcdn.com/images/data_analyst/post/3d0ff5e1-c3c0-48fe-9d79-441010cadb08/image.png" alt=""></p>
<p>저는 학회에서 SQL 문법 기초반을 수강하고 있는데요.
강사님이 정말 자세히 잘 설명해주시지만, 중간·기말고사마다 휴회 기간이 있다 보니 강의의 흐름이 끊겨서 좀 아쉽다는 생각이 들더라구요!
저는 공부할 때 전체적인 흐름을 먼저 잡고 나서 세부적으로 들어가는 걸 선호하는데, 그러다 보니 뭔가 흐름이 중요한 SQL 같은 과목은 이런 단절이 더 크게 느껴졌거든요. 그래서 정규반 조별 스터디 모임을 하다가 이런 고민을 얘기해봤고, 자격증 준비를 같이 해볼 학회원 몇 명을 모아서 함께 스터디를 시작하게 되었어요.</p>
<p><img src="https://velog.velcdn.com/images/data_analyst/post/610fdc07-f009-462d-99b7-a4cca9ecdc33/image.png" alt=""></p>
<p>스터디 하면서 가장 좋았던 점은 학회와 영진닷컴의 콜라보로 이기적 문제집을 상대적으로 저렴하게 구매할 수 있었던 게 진짜 좋았습니다! 올해부터 SQLD 자격증 시험의 유형이 변경되었다보니, 개정된 내용을 잘 담고 있지 못한 교재들이 꽤 있더라구요? 그래서 인터넷 검색을 하다보니 이기적 문제집을 올해 시험 응시자분들이 제일 많이 추천하시더라구요! 개념에 대한 오류가 없으면서 필수적으로 알아야할 개념들을 모두 포함하고 있어서 다들 많이 구매하시는 거 같습니다! 교재를 구매하고 나서, 교재의 문제들뿐만 아니라 영진닷컴 카페에서 제공된 정리본이나 추가 문제들도 활용할 수 있어서 자료 걱정 없이 공부할 수 있었어요. 아무래도, 제가 따로 타 자료들을 검색하면서 정리하거나 문제를 찾아보는 시간이 줄어들어서 효율적으로 공부했던 것 같아요.</p>
<p><img src="https://velog.velcdn.com/images/data_analyst/post/2d1c2108-3c4b-4820-acc0-b92b4316d542/image.png" alt=""></p>
<p>또 학회에서 매주 스터디 분량을 정해줘서, 조별로 모여 그걸 바탕으로 학습한 것도 정말 체계적이었어요. 혼자 공부할 때는 놓쳤을 부분도 서로 이야기 나누면서 채울 수 있었고, 특히 시험에 나올 만한 포인트를 자연스럽게 정리할 수 있었어요. 덕분에 시간도 절약되고 학습 효율이 확실히 높아졌어요.</p>
<p>사실 저는 학회 정규 학회원으로 SQL 기초 문법반을 듣고 있지만, 이번 스터디를 통해 SQL의 전반적인 흐름을 익힐 수 있었던 게 가장 큰 수확이었다고 생각해요. 시험 당일에도 조별 요약본 덕분에 중요한 부분만 가볍게 훑고 들어갔는데, 이게 큰 도움이 됐어요. 현장에서 모르는 문제는 딱 3문제밖에 없었어서 무난하게 합격할 것 같아요!</p>
<p><img src="https://velog.velcdn.com/images/data_analyst/post/5a9bb5b8-92ca-4bc1-bd14-5779cad126da/image.png" alt=""></p>
<p>이번 스터디를 통해 단순히 자격증 취득을 위한 공부만 한 게 아니라, SQL에 대한 이해도를 확실히 높일 수 있었고, 데이터베이스에 대해 더 넓은 시야를 가질 수 있었던 것 같아요. 같이 스터디했던 스터디원들과의 경험도 정말 값진 시간이었고요. 앞으로도 학회 활동과 함께 SQL을 더 심화해서 공부해보려고 합니다😆</p>
<p>마지막으로, BDA에서 앞으로도 다양한 자격증과 관련된 스터디 프로그램들이 더 많이 마련되어, 많은 학회원들이 함께 성장하고 도전할 수 있는 기회가 더욱 풍성해졌으면 좋겠습니다❤️</p>
]]></description>
        </item>
        <item>
            <title><![CDATA[BDA X 영진닷컴 4주차 학습내용]]></title>
            <link>https://velog.io/@data_analyst/4%EC%A3%BC%EC%B0%A8-%EC%A0%95%EB%A6%AC</link>
            <guid>https://velog.io/@data_analyst/4%EC%A3%BC%EC%B0%A8-%EC%A0%95%EB%A6%AC</guid>
            <pubDate>Mon, 18 Nov 2024 09:32:48 GMT</pubDate>
            <description><![CDATA[<p><img src="https://velog.velcdn.com/images/data_analyst/post/c819c3c0-682f-4ece-8530-39dfbecdd367/image.png" alt=""></p>
<h3 id="1-데이터-정의어-ddl-data-definition-language">1. 데이터 정의어 (DDL: Data Definition Language)</h3>
<p>데이터베이스와 관련된 구조를 정의하고 관리하는 명령어입니다.</p>
<h4 id="1-create">(1) CREATE</h4>
<p>데이터베이스 객체(테이블, 뷰, 인덱스 등)를 생성합니다.
예시: 테이블 생성</p>
<blockquote>
</blockquote>
<p>CREATE TABLE 테이블명 (
    컬럼명 데이터타입 [제약조건],
    ...
);</p>
<h4 id="2-alter">(2) ALTER</h4>
<p>기존 데이터베이스 객체의 구조를 변경합니다.
예시: 컬럼 추가</p>
<blockquote>
<p>ALTER TABLE 테이블명
ADD 컬럼명 데이터타입 [제약조건];</p>
</blockquote>
<h4 id="3-drop">(3) DROP</h4>
<p>데이터베이스 객체를 삭제합니다.
예시: 테이블 삭제</p>
<blockquote>
<p>DROP TABLE 테이블명;</p>
</blockquote>
<h4 id="4-truncate">(4) TRUNCATE</h4>
<p>테이블의 모든 데이터를 삭제하되, 테이블 구조는 유지합니다.</p>
<blockquote>
<p>TRUNCATE TABLE 테이블명;</p>
</blockquote>
<h3 id="2-데이터-제어어-dcl-data-control-language">2. 데이터 제어어 (DCL: Data Control Language)</h3>
<p>데이터에 대한 접근 권한을 제어하는 명령어입니다.</p>
<h4 id="1-grant">(1) GRANT</h4>
<p>사용자에게 특정 권한을 부여합니다.
예시: SELECT 권한 부여</p>
<blockquote>
<p>GRANT SELECT ON 테이블명 TO 사용자명;</p>
</blockquote>
<h4 id="2-revoke">(2) REVOKE</h4>
<p>사용자에게 부여한 권한을 회수합니다.
예시: SELECT 권한 회수</p>
<blockquote>
<p>REVOKE SELECT ON 테이블명 FROM 사용자명;</p>
</blockquote>
<h3 id="3-트랜잭션-제어어-tcl-transaction-control-language">3. 트랜잭션 제어어 (TCL: Transaction Control Language)</h3>
<p>데이터베이스의 트랜잭션을 제어하는 명령어입니다.</p>
<h4 id="1-commit">(1) COMMIT</h4>
<p>트랜잭션에서 수행한 작업을 영구적으로 반영합니다.</p>
<blockquote>
<p>COMMIT;</p>
</blockquote>
<h4 id="2-rollback">(2) ROLLBACK</h4>
<p>트랜잭션에서 수행한 작업을 취소하고 이전 상태로 되돌립니다.</p>
<blockquote>
<p>ROLLBACK;</p>
</blockquote>
<h4 id="3-savepoint">(3) SAVEPOINT</h4>
<p>트랜잭션 내에서 복구 가능한 지점을 설정합니다.</p>
<blockquote>
<p>SAVEPOINT 저장점명;</p>
</blockquote>
<h4 id="4-set-transaction">(4) SET TRANSACTION</h4>
<p>트랜잭션의 특성을 설정합니다. (예: 격리 수준 설정)</p>
<blockquote>
<p>SET TRANSACTION ISOLATION LEVEL READ COMMITTED;</p>
</blockquote>
<h3 id="4-뷰view와-인덱스index">4. 뷰(View)와 인덱스(Index)</h3>
<h4 id="1-뷰view">(1) 뷰(View)</h4>
<p>SQL 쿼리의 결과를 저장하는 가상의 테이블입니다.
읽기 전용으로 데이터를 조회할 때 주로 사용됩니다.</p>
<blockquote>
<p>CREATE VIEW 뷰명 AS
SELECT 컬럼명1, 컬럼명2
FROM 테이블명
WHERE 조건;</p>
</blockquote>
<h4 id="2-인덱스index">(2) 인덱스(Index)</h4>
<p>테이블 검색 성능을 향상시키기 위해 사용하는 구조입니다.</p>
<blockquote>
<p>CREATE INDEX 인덱스명
ON 테이블명 (컬럼명);</p>
</blockquote>
<h3 id="5-제약-조건constraints">5. 제약 조건(Constraints)</h3>
<p>테이블 생성 시 데이터를 제약하기 위해 사용됩니다.</p>
<blockquote>
<p>NOT NULL :    NULL 값을 허용하지 않음    컬럼명 데이터타입
UNIQUE    : 중복 값을 허용하지 않음    컬럼명 데이터타입 
PRIMARY KEY :    NOT NULL + UNIQUE 기본 키 설정<br>FOREIGN KEY :    외래 키, 다른 테이블 참조<br>CHECK :    조건을 만족하는 값만 입력 가능
DEFAULT :    기본값 설정    컬럼명 데이터타입</p>
</blockquote>
<h3 id="6-sql-관리-구문-사용-시-주의-사항">6. SQL 관리 구문 사용 시 주의 사항</h3>
<p>(1) DROP 명령은 객체를 완전히 삭제하므로 신중하게 사용해야 합니다.
(2) GRANT와 REVOKE로 권한을 적절히 관리해 보안 사고를 방지해야 합니다.
(3) 트랜잭션 명령어(TCL)는 데이터 무결성과 복구 가능성을 보장합니다.
(4) 인덱스는 검색 속도는 향상시키지만, 삽입/삭제 작업에서는 성능 저하를 유발할 수 있으므로 사용 시 고려가 필요합니다.</p>
<p><img src="https://velog.velcdn.com/images/data_analyst/post/dfe1e578-1e4c-4a58-bd22-dd1647d8eb4a/image.jpg" alt=""></p>
<p><img src="https://velog.velcdn.com/images/data_analyst/post/ffce42ac-1582-4249-ad6c-553e96452e58/image.png" alt=""></p>
]]></description>
        </item>
        <item>
            <title><![CDATA[BDA X 영진닷컴 3주차 학습내용]]></title>
            <link>https://velog.io/@data_analyst/BDA-X-%EC%98%81%EC%A7%84%EB%8B%B7%EC%BB%B4-3%EC%A3%BC%EC%B0%A8-%ED%95%99%EC%8A%B5%EB%82%B4%EC%9A%A9</link>
            <guid>https://velog.io/@data_analyst/BDA-X-%EC%98%81%EC%A7%84%EB%8B%B7%EC%BB%B4-3%EC%A3%BC%EC%B0%A8-%ED%95%99%EC%8A%B5%EB%82%B4%EC%9A%A9</guid>
            <pubDate>Fri, 08 Nov 2024 07:22:36 GMT</pubDate>
            <description><![CDATA[<p><img src="https://velog.velcdn.com/images/data_analyst/post/f3e36149-40fd-4b8c-8bbc-1186268bf8ef/image.png" alt=""></p>
<h2 id="1-서브쿼리-subquery">1. 서브쿼리 (Subquery)</h2>
<h4 id="-하나의-sql-문-내에-포함된-또-다른-sql-문으로-주로-내부-쿼리의-결과를-외부-쿼리에서-사용합니다">: 하나의 SQL 문 내에 포함된 또 다른 SQL 문으로, 주로 내부 쿼리의 결과를 외부 쿼리에서 사용합니다.</h4>
<p>• 종류:
단일 행 서브쿼리: 한 개의 행을 반환하며, =과 같은 단일 비교 연산자를 사용.
다중 행 서브쿼리: 여러 개의 행을 반환하며, IN, ANY, ALL 등의 연산자를 사용.
상관 서브쿼리: 외부 쿼리의 각 행에 대해 실행되는 쿼리로, 외부 쿼리의 데이터를 참조.</p>
<p>• 사례: 특정 부서의 사원 목록을 조회할 때, 상관 서브쿼리를 통해 각 사원의 부서명을 조회할 수 있습니다.</p>
<h2 id="2-조인-join">2. 조인 (Join)</h2>
<h4 id="-두-개-이상의-테이블을-특정-조건에-따라-연결하여-데이터를-조회하는-방식입니다">: 두 개 이상의 테이블을 특정 조건에 따라 연결하여 데이터를 조회하는 방식입니다.</h4>
<p>• 종류:
INNER JOIN: 조건이 일치하는 데이터만 반환, 공통 키가 반드시 있어야 함.
LEFT OUTER JOIN: 왼쪽 테이블의 모든 행을 반환하며, 오른쪽 테이블의 일치하는 데이터가 없으면 NULL로 표시.
RIGHT OUTER JOIN: 오른쪽 테이블의 모든 행을 반환하며, 왼쪽 테이블의 일치하지 않는 데이터는 NULL.
FULL OUTER JOIN: 양쪽 테이블의 모든 데이터를 반환하며, 일치하지 않는 데이터는 NULL로 표시.</p>
<p>• 사용 사례: 사원 테이블과 부서 테이블을 JOIN하여 사원의 부서명을 함께 조회하는 방식.</p>
<h2 id="3-그룹-함수-group-functions">3. 그룹 함수 (Group Functions)</h2>
<h4 id="-특정-기준에-따라-데이터를-그룹화하고-요약-통계를-계산하는-함수입니다">: 특정 기준에 따라 데이터를 그룹화하고 요약 통계를 계산하는 함수입니다.</h4>
<p>• 주요 함수
SUM: 합계.
AVG: 평균.
COUNT: 개수.
MAX/MIN: 최대값과 최소값.</p>
<p>• 사용법: GROUP BY 구문을 통해 특정 열에 대해 그룹화 후 집계함수를 적용.
• 사례: 부서별 평균 급여를 계산할 때 GROUP BY 부서와 AVG(급여)를 사용</p>
<h2 id="4-윈도우-함수-window-functions">4. 윈도우 함수 (Window Functions)</h2>
<h4 id="-데이터의-특정-윈도우범위에-대해-계산을-수행하는-함수로-행의-순서나-그룹-내에서-계산이-가능합니다">: 데이터의 특정 윈도우(범위)에 대해 계산을 수행하는 함수로, 행의 순서나 그룹 내에서 계산이 가능합니다.</h4>
<p>• 주요 함수:
ROW_NUMBER(): 각 행에 고유 번호를 부여.
RANK(): 값에 순위를 부여하며 동점 시 순위를 건너뜀.
DENSE_RANK(): 값에 순위를 부여하되 건너뛰지 않음.
NTILE(n): 데이터를 n개의 구간으로 나눔.</p>
<p>• 사례: 사원별 급여 순위를 계산할 때 RANK()를 사용하여 순위를 매길 수 있습니다.</p>
<h2 id="5-top-n-쿼리">5. TOP N 쿼리</h2>
<h4 id="-상위-n개의-데이터를-조회하는-방식으로-예를-들어-상위-10위까지의-상품-또는-사원을-조회할-때-사용됩니다">: 상위 N개의 데이터를 조회하는 방식으로, 예를 들어 상위 10위까지의 상품 또는 사원을 조회할 때 사용됩니다.</h4>
<p>• 사용법: ROWNUM (Oracle), LIMIT (MySQL), TOP (SQL Server) 등으로 구현.
• 사례: 급여가 높은 상위 5명의 사원을 조회할 때 ORDER BY 급여 DESC LIMIT 5와 같은 쿼리를 사용합니다.</p>
<h2 id="6-계층형-조회-hierarchical-query">6. 계층형 조회 (Hierarchical Query)</h2>
<h4 id="-계층-구조를-가진-데이터를-트리-형식으로-조회하는-방법입니다">: 계층 구조를 가진 데이터를 트리 형식으로 조회하는 방법입니다.</h4>
<p>• 키워드:
CONNECT BY: 계층 구조를 정의.
PRIOR: 상위와 하위 데이터를 지정.
LEVEL: 계층 레벨을 나타내는 가상 열.</p>
<p>• 사례: 회사 조직도를 표현하기 위해 상위 부서와 하위 부서 간의 관계를 설정하고 조회합니다.</p>
<h2 id="7-pivot과-unpivot">7. PIVOT과 UNPIVOT</h2>
<h4 id="pivot-특정-열의-값을-행으로-변환하여-데이터를-요약하는-방식입니다">PIVOT: 특정 열의 값을 행으로 변환하여 데이터를 요약하는 방식입니다.</h4>
<p>• 사례: 월별 매출 데이터를 열로 변환하여 한 눈에 보기 쉽게 할 때.</p>
<h4 id="unpivot-행의-데이터를-열로-변환하여-세부-데이터로-확장">UNPIVOT: 행의 데이터를 열로 변환하여 세부 데이터로 확장</h4>
<p>• 사례: 여러 열로 나뉘어진 데이터를 하나의 열로 결합하여 분석할 때.
예제: 제품별 월 매출 데이터를 PIVOT을 사용하여 각 월이 열로 나타나게 합니다.</p>
<h2 id="8-테이블-파티션-table-partition">8. 테이블 파티션 (Table Partition)</h2>
<h4 id="-큰-테이블을-논리적으로-분할하여-관리함으로써-성능을-향상시키는-방법입니다">: 큰 테이블을 논리적으로 분할하여 관리함으로써 성능을 향상시키는 방법입니다.</h4>
<p>• 파티션 종류:
범위 파티션: 특정 범위에 따라 파티션.
해시 파티션: 해시 함수를 사용하여 균등하게 분할.
리스트 파티션: 특정 값 목록에 따라 분할.</p>
<p>• 사례: 연도별로 데이터를 파티션하여 관리하여, 특정 연도의 데이터만 빠르게 조회할 수 있도록 합니다.</p>
<h2 id="9-정규-표현식-regular-expressions">9. 정규 표현식 (Regular Expressions)</h2>
<h4 id="-문자열-검색과-매칭을-위해-패턴을-정의하는-방식으로-복잡한-문자열-패턴을-쉽게-다룰-수-있습니다">: 문자열 검색과 매칭을 위해 패턴을 정의하는 방식으로, 복잡한 문자열 패턴을 쉽게 다룰 수 있습니다.</h4>
<p>• 주요 함수:
 REGEXP_LIKE : LIKE 연산과 비슷하며 정규식 패턴을 검색합니다.
 REGEXP_REPLACE : 정규 표현식을 대상으로 다른 문자로 대체합니다.
 REGEXP_INSTR : 문자열을 검색하고 일치 항목의 위치를 반환합니다.
 REGEXP_SUBSTR : 정규식 패턴과 일치하는 문자열을 반환합니다.
 REGEXP_COUNT : 정규식 패턴을 검색하여 발견된 횟수를 반환합니다</p>
<p>• 사례: 이메일 형식 검사, 전화번호 형식 검사 등</p>
<p>• 정규표현식을 사용하기 위한 메타문자</p>
<p><img src="https://velog.velcdn.com/images/data_analyst/post/63505356-a0a3-4554-8cce-8eb3fb106f6e/image.png" alt=""></p>
<p><img src="https://velog.velcdn.com/images/data_analyst/post/11400619-8ee4-4279-8119-f48abbacdf40/image.png" alt=""></p>
<hr>
<h3 id="학습후기">학습후기</h3>
<p>이번 학습에서는 SQL의 고급 함수와 그룹화, 집계에 대한 다양한 기능을 깊이 있게 이해하고 적용하는 방법을 배웠습니다. SQL이 단순히 데이터를 조회하는 데 그치지 않고, 복잡한 계산과 정교한 분석 작업에 강력한 도구임을 다시 한번 깨닫게 되었습니다. 특히 순위 함수, 집계 함수, 행 순서 관련 함수, 비율 관련 함수는 대규모 데이터 집합을 다루거나 데이터의 흐름을 파악할 때 매우 유용한 기능들이었습니다.</p>
<p>순위 함수와 비율 함수는 데이터를 정렬하고, 각 데이터가 전체에서 차지하는 비중을 쉽게 파악할 수 있도록 돕는데, 예를 들어 RANK()와 DENSE_RANK()의 차이점을 통해 데이터를 정렬하는 방식의 중요성을 알게 되었고, RATIO_TO_REPORT() 함수를 사용해 특정 값이 전체에서 차지하는 비율을 계산하는 것이 상대적인 중요성을 평가하는 데 매우 유용하다는 점을 깨달았습니다. 또한 윈도우 함수는 특정 구간 내에서 누적 합계나 평균 등을 계산하는 데 효과적이며, 시계열 데이터 분석에 특히 적합하다는 점이 인상 깊었습니다. LAG와 LEAD 함수는 현재 행을 기준으로 이전이나 다음 행의 값을 참조할 수 있어, 순차적인 데이터 분석에 매우 유용하다는 점도 배웠습니다.</p>
<p>한편 집계 함수들은 데이터 요약에 탁월한 성능을 발휘해, 대규모 데이터를 간단히 요약하고 인사이트를 도출하는 데 큰 도움이 되었습니다. SUM, AVG, MAX, MIN 등의 함수와 GROUP BY 구문을 통해 다수의 데이터를 간편하게 집계할 수 있어 데이터 보고서나 분석 작업에 필요한 핵심 정보를 효과적으로 얻을 수 있다는 점을 배웠습니다. 이런 집계와 요약 작업을 통해 SQL이 데이터를 정제하고 인사이트를 추출하는 강력한 도구라는 것을 다시 한 번 실감했습니다.</p>
<p>결국 이번 학습은 SQL을 활용한 데이터 분석 능력을 한층 더 향상시키는 계기가 되었고, 앞으로 실무에서 복잡한 데이터 분석 시나리오에 SQL을 자신 있게 적용해보고 싶다는 생각이 들었습니다. 이 과정을 통해 SQL이 데이터 처리와 분석에서 얼마나 중요한 역할을 하는지, 그리고 이를 잘 활용하면 얼마나 효율적으로 데이터를 다룰 수 있는지 깊이 느낄 수 있었습니다.</p>
]]></description>
        </item>
        <item>
            <title><![CDATA[2주차 학습내용]]></title>
            <link>https://velog.io/@data_analyst/2%EC%A3%BC%EC%B0%A8-%ED%95%99%EC%8A%B5%EB%82%B4%EC%9A%A9</link>
            <guid>https://velog.io/@data_analyst/2%EC%A3%BC%EC%B0%A8-%ED%95%99%EC%8A%B5%EB%82%B4%EC%9A%A9</guid>
            <pubDate>Sat, 02 Nov 2024 03:38:12 GMT</pubDate>
            <description><![CDATA[<h3 id="1-관계형-데이터베이스-소개">1. 관계형 데이터베이스 소개</h3>
<ul>
<li><p>역사적 배경: 관계형 데이터베이스는 1970년대 E.F. Codd 박사에 의해 처음 개념화되었으며, 데이터를 테이블(릴레이션)에 저장하고 관리하는 방식으로 큰 변화를 가져왔습니다.</p>
</li>
<li><p>데이터베이스 유형: 주요 유형에는 계층형(트리 구조), 네트워크형(1대N 및 M대N 관계 가능), 관계형(테이블 기반의 릴레이션) 데이터베이스가 있습니다.</p>
</li>
<li><p>대표적인 관계형 데이터베이스 시스템: Oracle, MS SQL Server, MySQL, Sybase와 같은 DBMS들이 널리 사용됩니다.</p>
</li>
</ul>
<h3 id="2-기본-데이터베이스-연산">2. 기본 데이터베이스 연산</h3>
<ul>
<li><p>집합 연산: 합집합(UNION)은 중복 없이 두 릴레이션을 합치는 것이며, 교집합(INTERSECTION)은 두 릴레이션 간 공통된 데이터를 찾고, 차집합(DIFFERENCE)은 하나의 릴레이션에만 있는 데이터를 찾는 연산입니다.</p>
</li>
<li><p>관계 연산: 주요 관계 연산으로는 선택(조건에 맞는 행 조회), 투영(특정 속성만 선택), 조인(공통 속성으로 테이블 결합), 나누기 연산 등이 있으며, 테이블 간의 복잡한 관계를 표현하고 관리하는 데 사용됩니다.</p>
</li>
</ul>
<h3 id="3-테이블-구조의-필수-요소">3. 테이블 구조의 필수 요소</h3>
<ul>
<li><p>기본키 (Primary Key): 각 행을 고유하게 식별하며 데이터 무결성을 보장합니다.</p>
</li>
<li><p>외래키 (Foreign Key): 다른 테이블의 기본키를 참조하여 테이블 간의 관계를 만듭니다.</p>
</li>
<li><p>행과 열: 튜플(행)과 속성(열)로 구성되며, 테이블 설계의 기본 구조가 됩니다.</p>
</li>
</ul>
<h3 id="4-sql의-주요-유형">4. SQL의 주요 유형</h3>
<ul>
<li><p>DDL (데이터 정의 언어): 테이블, 인덱스, 뷰 등 데이터베이스 구조를 정의하고 변경하는 데 사용됩니다.</p>
</li>
<li><p>DML (데이터 조작 언어): 데이터를 삽입, 수정, 삭제, 조회할 때 사용됩니다.</p>
</li>
<li><p>DCL (데이터 제어 언어): 사용자에게 권한을 부여하거나 회수하는 언어로 데이터 접근을 관리합니다.</p>
</li>
<li><p>TCL (트랜잭션 제어 언어): 트랜잭션을 관리하여 데이터 일관성을 유지합니다.</p>
</li>
</ul>
<h3 id="5-트랜잭션의-4대-특성-acid">5. 트랜잭션의 4대 특성 (ACID)</h3>
<ul>
<li><p>원자성 (Atomicity): 트랜잭션이 완전히 수행되거나 전혀 수행되지 않아야 함을 의미합니다.</p>
</li>
<li><p>일관성 (Consistency): 트랜잭션 수행 후에도 데이터베이스가 일관성을 유지해야 합니다.</p>
</li>
<li><p>고립성 (Isolation): 트랜잭션 중간 결과가 다른 트랜잭션에 영향을 주지 않아야 합니다.</p>
</li>
<li><p>영속성 (Durability): 트랜잭션이 완료되면 그 결과가 영구적으로 보존되어야 합니다.</p>
</li>
</ul>
<h3 id="6-sql-실행-순서와-주요-명령어">6. SQL 실행 순서와 주요 명령어</h3>
<ul>
<li><p>SQL 실행 순서: FROM → WHERE → GROUP BY → HAVING → SELECT → ORDER BY 순으로 실행됩니다.</p>
</li>
<li><p>기본 SELECT 문: SELECT * FROM 테이블명 WHERE 조건식을 통해 데이터를 필터링할 수 있으며, ORDER BY를 사용하여 오름차순(ASC) 또는 내림차순(DESC)으로 정렬할 수 있습니다.</p>
</li>
<li><p>DISTINCT: 특정 열에 중복된 값을 한 번만 표시하고, ALIAS를 통해 별칭을 붙일 수 있습니다.</p>
</li>
</ul>
<h3 id="7-형-변환-및-내장형-함수">7. 형 변환 및 내장형 함수</h3>
<ul>
<li><p>명시적 형 변환: TO_NUMBER, TO_CHAR, TO_DATE와 같은 형 변환 함수를 통해 데이터 타입을 일치시킵니다.</p>
</li>
<li><p>문자열 함수: SUBSTR, CONCAT, LOWER, UPPER 등의 함수로 문자열을 조작할 수 있습니다.</p>
</li>
<li><p>날짜형 함수: SYSDATE로 오늘 날짜를 반환하거나, EXTRACT로 특정 날짜 요소를 추출합니다.</p>
</li>
<li><p>숫자형 함수: 절대값을 반환하는 ABS, 반올림하는 ROUND, 나머지를 구하는 MOD 등이 있습니다.</p>
</li>
</ul>
<h3 id="8-조건문-decode와-case문">8. 조건문: DECODE와 CASE문</h3>
<ul>
<li><p>DECODE: IF문과 비슷한 기능을 하며, 조건이 참일 경우 특정 값을 반환하고 거짓일 경우 다른 값을 반환합니다.</p>
</li>
<li><p>CASE 문: 보다 복잡한 조건을 설정할 때 유용하며, IF-THEN-ELSE와 같은 구조를 SQL에서 구현할 수 있습니다.</p>
</li>
</ul>
<hr>
<h3 id="학습후기">학습후기</h3>
<p><img src="https://velog.velcdn.com/images/data_analyst/post/a64ee72a-4e5c-444c-a4e6-fd78df075a0a/image.jpg" alt=""></p>
<p> DDL, DML, DCL, TCL로 나누어진 SQL 언어의 종류와 각 트랜잭션의 ACID 특성을 공부하면서, 데이터의 무결성을 보장하는 것이 얼마나 중요한지 새삼 느꼈습니다. 실무에서 데이터를 다룰 때 고려해야 할 요소들이 이렇게 많다는 점이 인상 깊었습니다. 또한 다양한 SQL 함수와 조건문(CASE, DECODE 등)을 익히면서 실제 데이터를 조회하고 변환하는 데 필요한 구체적인 기술을 배웠습니다.</p>
<p>SQL의 기초를 탄탄히 다지다 보니, 데이터 분석과 관리에 대한 자신감도 생겼습니다. 앞으로 더 깊이 있는 데이터 분석을 위해 SQL 실력을 꾸준히 발전시켜 나가고 싶습니다.</p>
]]></description>
        </item>
        <item>
            <title><![CDATA[1주차 학습내용]]></title>
            <link>https://velog.io/@data_analyst/1%EC%A3%BC%EC%B0%A8-%ED%95%99%EC%8A%B5%EB%82%B4%EC%9A%A9</link>
            <guid>https://velog.io/@data_analyst/1%EC%A3%BC%EC%B0%A8-%ED%95%99%EC%8A%B5%EB%82%B4%EC%9A%A9</guid>
            <pubDate>Wed, 30 Oct 2024 09:39:21 GMT</pubDate>
            <description><![CDATA[<h2 id="1-데이터-모델과-모델링의-개요"><strong>1. 데이터 모델과 모델링의 개요</strong></h2>
<p>모델링의 개념: 현실 세계의 복잡한 구조를 분석하여 특정 방식으로 표현하는 과정이며, 정보 시스템 구축을 위해 데이터의 구조와 관계를 정의하는 데이터 모델링을 통해 이루어집니다.</p>
<p><strong>모델링의 주요 특징</strong></p>
<p>추상화: 복잡한 개념을 이해하기 쉬운 형태로 단순화
핵심화: 핵심 정보에 집중하며 불필요한 요소는 배제
명확성: 모든 이해관계자가 쉽게 이해할 수 있도록 표현</p>
<p><strong>데이터 모델링의 목적</strong></p>
<p>: 일관성 있는 정보 표기법으로 업무 분석의 정확성을 높임
데이터베이스(DB) 설계의 기반을 제공하여 시스템 구축에 활용</p>
<h2 id="2-데이터-모델링의-중요성과-핵심-개념"><strong>2. 데이터 모델링의 중요성과 핵심 개념</strong></h2>
<p><strong>데이터 품질 확보</strong></p>
<p>유일성: 데이터 중복 방지로 신뢰도와 정확성을 향상
유연성: 데이터 정의와 활용을 분리해 변화에 유연하게 대처
일관성: 연관된 데이터 사이의 통합적 일관성을 보장</p>
<p><strong>데이터 독립성</strong></p>
<p>논리적 독립성: 외부와 개념 스키마 간의 분리로, 설계 변경 시 영향을 최소화
물리적 독립성: 저장 방식과 데이터 설계가 독립적이어서 물리적 변경 시 시스템에 미치는 영향을 줄임</p>
<h2 id="3-데이터-모델링의-3단계"><strong>3. 데이터 모델링의 3단계</strong></h2>
<p><strong>개념적 모델링</strong></p>
<p>목적: 엔터티(데이터 개체)와 속성 파악을 통해 전체 시스템 구조 도식화
특징: ERD(엔터티-관계 다이어그램) 사용으로 데이터 관계를 직관적으로 표현
활용: 비즈니스 담당자와 모델러 간의 소통을 위한 기본적 모델링</p>
<p><strong>논리적 모델링</strong></p>
<p>목적: 데이터 구조 정의 및 중복 제거를 위해 정규화 수행
특징: 데이터 무결성 확보와 재사용성 증대를 위한 정교한 속성 정의
정규화: 데이터 중복 최소화로 효율적인 DB 구조 설계</p>
<p><strong>물리적 모델링</strong></p>
<p>목적: 논리 모델을 기반으로 DB를 구축하며 성능과 보안을 고려
특징: 실제 데이터를 저장하는 구체적 방식 설계로 최적의 운영 환경 구현</p>
<h2 id="4-3층-스키마-구조"><strong>4. 3층 스키마 구조</strong></h2>
<p>외부 스키마: 사용자 관점에서의 개인적 DB 스키마를 의미하며, 각 사용자의 응용 프로그램이 접근하는 DB 정의
개념 스키마: 조직 전체를 아우르는 통합적 DB 스키마
내부 스키마: 개발자 관점에서 물리적 데이터 저장 방식을 표현</p>
<h2 id="5-데이터-모델링의-주요-요소"><strong>5. 데이터 모델링의 주요 요소</strong></h2>
<p><strong>엔터티(Entity</strong>): 관리 대상이 되는 데이터 집합으로, 식별자와 여러 인스턴스를 가지며 속성을 포함합니다.</p>
<p>유형 엔터티: 물리적 존재가 있으며 지속적으로 활용됨
개념 엔터티: 물리적 형태는 없지만 비즈니스에서 중요한 개념으로 정의됨</p>
<p><strong>엔터티 분류</strong></p>
<p>기본 엔터티: 독립적으로 생성되는 엔터티
중심 엔터티: 기본 엔터티와 사건 엔터티 간에 위치하며, 중심 역할 수행
행위 엔터티: 비즈니스 활동 중 발생하며 데이터가 지속적으로 추가됨</p>
<p><strong>속성(Attribute)</strong>: 엔터티가 가지는 최소 단위 정보로, 특정 범위 내의 값으로 정의됨.</p>
<p>기본 속성: 비즈니스 프로세스에서 파생된 본질적 속성
설계 속성: 데이터 모델링 중 업무 규칙에 맞추어 생성된 속성
파생 속성: 다른 속성에서 도출된 속성</p>
<p><strong>관계(Relationship)</strong>: 엔터티 간 논리적 연결을 나타내며 다이어그램으로 표현</p>
<p>존재 관계: 엔터티 간의 상태를 나타냄
행위 관계: 엔터티 간 발생하는 행동</p>
<hr>
<p>🌟 <strong>학습 후기</strong>
<img src="https://velog.velcdn.com/images/data_analyst/post/376a20b7-e029-4d09-8d68-27f691ffbca0/image.jpg" alt=""></p>
<p>중간고사 준비와 자격증 공부를 병행하면서 어려움이 많았지만, 학습을 마친 뒤의 성취감을 생각하며 끝까지 집중할 수 있었습니다. 책에 정리한 내용을 다시 블로그에 기록해보니, 머릿속에서 한 번 더 체계적으로 정리되는 느낌이 들어 매우 유익했습니다. 중간고사가 끝난 다음 주차부터는 조금 더 깊이 있는 학습을 할 수 있을 것 같아 기대됩니다. 💪😊</p>
]]></description>
        </item>
    </channel>
</rss>