호테의 노트에 오신 것을 환영합니다 🙌

Tableau와 Salesforce, Python과 SQL 등 데이터의 전반적인 것들을 다루는 기술 블로그입니다.

SQL 15

SQL에서의 LATERAL JOIN

SQL을 사용하다 보면 하위 쿼리(Subquery) 나 인라인 뷰 안에서 메인 쿼리의 값을 활용하고 싶은 경우가 종종 있습니다. 이런 상황에서 강력한 기능을 제공하는 것이 바로 LATERAL JOIN입니다.이번 글에서는 LATERAL JOIN의 개념, 사용법, 실무 예시, 주의점까지 하나하나 정리해드릴게요.1. LATERAL JOIN이란?SQL에서 일반적으로 하위 쿼리(Subquery) 는 외부 쿼리의 컬럼을 참조할 수 없습니다. 그러나 LATERAL 키워드를 사용하면 하위 쿼리에서 외부 쿼리의 컬럼을 사용할 수 있게 됩니다.즉, LATERAL JOIN은 하위 쿼리를 외부 쿼리의 각 행마다 실행하며, 외부 쿼리의 값을 내부에서 참조할 수 있도록 해주는 기능입니다.💡 쉽게 말하면, LATERAL은 SQ..

SQL 2025.06.26

OLAP과 OLTP란?

1. OLAP과 OLTP란?OLTP (Online Transaction Processing)OLTP는 온라인 거래 처리 시스템으로, 주로 실시간으로 데이터를 입력, 수정, 삭제하는 업무에 초점을 둡니다. 은행 이체, 온라인 쇼핑 결제, 항공권 예약 등이 이에 해당합니다. OLTP 시스템은 빠른 응답 시간과 높은 트랜잭션 처리량이 중요합니다.OLAP (Online Analytical Processing)OLAP는 온라인 분석 처리 시스템으로, 대규모 데이터를 바탕으로 분석, 요약, 의사결정 지원에 중점을 둡니다. OLAP 시스템은 사용자가 여러 관점에서 데이터를 조회하고 패턴이나 인사이트를 발견할 수 있도록 설계되어 있습니다. BI 도구(예: Tableau, Power BI)와 함께 사용되는 경우가 많습..

SQL 2025.06.23

슈퍼키란?

1. 정의슈퍼키는 테이블에서 각 행을 유일하게 구별할 수 있게 해주는 속성(열)들의 집합입니다.즉, 같은 슈퍼키 값을 가진 두 개의 행은 존재할 수 없습니다.2. 비유: “사람을 구분하는 방법”한 반에 학생이 30명 있다고 가정해볼게요.학생을 “유일하게” 구분할 수 있는 정보가 필요하겠죠? 슈퍼키가 될 수 있는 것들:주민등록번호이름 + 전화번호이름 + 이메일학번이름 + 생일 + 주소➡ 이 중 어떤 조합이든 겹치지만 않으면 슈퍼키가 될 수 있어요!4. 슈퍼키 vs 후보키 vs 기본키구분설명예시슈퍼키유일성을 만족하는 모든 열 조합주민등록번호 / 이름+전화번호후보키최소한의 컬럼 조합으로 유일성 만족 (불필요한 컬럼 없음)주민등록번호, 학번기본키후보키 중 선택된 대표 키학번 (후보키 중 하나 선택)🔑 후보키는..

SQL 2025.05.17

스키마(Schema)란?

1) 스키마(Schema)의 정의스키마란, 데이터베이스의 논리적 구조를 정의한 메타데이터의 집합입니다.테이블, 열, 데이터 유형, 관계, 제약조건 등 데이터 구조를 명확하고 상세하게 기술합니다.데이터베이스 관리 관점에서는 다음과 같이 3단계 스키마 구조로 구분합니다:단계설명외부 스키마사용자나 응용 프로그램 관점에서 본 데이터 구조 (View)개념 스키마전체 데이터베이스의 논리적 구조 정의 (ERD, 테이블 간 관계 등)내부 스키마물리적인 데이터 저장 방식 정의 (인덱스, 파일 구조 등)이 구조를 3단계 데이터베이스 구조(Three-Schema Architecture) 라고 부릅니다. 2) 스키마의 구성 요소구성 요소설명테이블데이터를 저장하는 기본 단위 (행과 열로 구성)열(Column)각 열은 특정 속성..

SQL 2025.05.17

NoSQL이란?

1. NoSQL이란?NoSQL = Not Only SQL의 약자로, “SQL만이 유일한 해답은 아니다”라는 의미입니다.고정된 스키마 없이 데이터를 저장할 수 있으며, 대규모 데이터를 빠르게 처리하는 데 적합합니다.수평 확장이 쉬워 대규모 트래픽 처리에 유리합니다.2. NoSQL의 주요 특징특징설명스키마 유연성미리 정해진 테이블 구조 없이 데이터 저장 가능수평적 확장성서버를 늘려서(Scale-Out) 성능 확장 가능비정형 데이터 지원JSON, XML, 이미지, 로그 등 다양한 형태의 데이터 저장 가능고속 읽기/쓰기 성능대용량 데이터를 빠르게 처리3. NoSQL의 주요 유형유형설명예시문서(Document)형JSON, BSON 등 문서 단위로 저장MongoDB, CouchDB키-값(Key-Value)형키에 ..

SQL 2025.05.17

명시적 조인 vs 비명시적 조인

SQL에서 두 개 이상의 테이블을 조인할 때, 우리는 명시적 조인(explicit join) 과 비명시적 조인(implicit join) 두 가지 방식 중 하나를 선택할 수 있습니다. 이번 글에서는 이 두 방식의 차이와, 예제를 통해 어떻게 전환하는지도 함께 정리해보겠습니다. 1. 명시적 조인 (Explicit Join)명시적 조인은 SQL 표준(ANSI SQL-92 이후)에서 권장하는 방식으로, INNER JOIN ... ON 형태로 조인 조건을 명확하게 기술합니다. 가독성이 좋고, 조인 조건이 명확하게 구분되기 때문에 유지보수에도 유리합니다.-- 명시적 조인 예제SELECT t1.shop_id, t1.shop_nm, t1.shop_size, t2.ord_no, t2.ord_dtm, t2...

SQL 2025.05.06

DBeaver SQL 한글 마지막 글자 없어짐 현상 해결 방법

만약 SQL 작성 도중 엔터(줄바꿈) 치면 한글 마지막 글자가 사라지는 문제가 발생하시나요?다양한 원인이 있을 수 있지만 저는 아래와 같은 방법으로 해결 했습니다.먼저, 문제가 발생할 수 있는 원인들 입니다. 1. 문제 원인 요약DBeaver, DataGrip 등의 SQL 편집기 버그→ 특정 테마나 폰트, 키보드 설정에서 이런 증상이 보고된 적 있습니다.맥북에서 한글 입력기 / 키보드 설정 충돌→ 한글 입력기 사용 중 엔터 입력 시 조합이 끝나기 전에 확정되며 문자 삭제되는 현상이 생깁니다.단축키 충돌 or 시스템 키맵 문제→ 특정 확장 도구나 키보드 툴이 엔터 기능을 override 했을 수 있습니다.저의 경우 1번 DBeaver, DataGrip 등의 SQL 편집기 버그로 발생하는 문제였는데요,아래 ..

SQL 2025.04.16

관계형 데이터베이스(RDB)와 NoSQL 데이터베이스의 차이

관계형 데이터베이스(RDB)와 NoSQL 데이터베이스는 구조, 목적, 사용 환경에서 큰 차이가 있어요.아래에 비교표와 함께 자세히 설명드릴게요.1. 관계형 데이터베이스(RDB, Relational Database)구조테이블 기반(행과 열로 구성)스키마고정된 스키마 필요 (사전에 구조 정의)데이터 형식정형 데이터(숫자, 문자열 등)확장성수직적 확장(서버 성능 증가) 중심쿼리 언어SQL 사용정합성트랜잭션(ACID) 보장 → 데이터 무결성 보장예시MySQL, PostgreSQL, Oracle, SQL Server 등적합한 사례전통적인 업무 시스템(ERP, 금융, 인사 등) 2.  NoSQL (Not Only SQL)구조테이블이 아닌 유연한 구조 (문서, 키-값, 그래프, 컬럼형 등 다양)스키마스키마가 유동적이..

SQL 2025.04.13

MySQL Public Key Retrieval 오류 해결법 (DataGrip, Workbench 모두 적용 가능)

만약  “Public Key Retrieval is not allowed” 에러가 발생해서 연결이 안 되는 상태라면JDBC URL에 옵션을 추가해줘야 합니다.✅ 해결 방법 (DataGrip에서)1. 위 화면에서 “URL” 쪽에 다음처럼 수정하세요:기존:jdbc:mysql://localhost:3306/수정:jdbc:mysql://localhost:3306/?allowPublicKeyRetrieval=true&useSSL=false✅ 주의: ? 뒤에 옵션들을 붙여야 하고, 여러 개일 땐 &로 연결해줘야 해요.2. 또는 “Driver Properties” 탭에서 설정해도 됨 1. 왼쪽 탭에서 Driver properties 클릭 2. 아래쪽에 + 버튼 눌러서 새 속성 추가 3. 다음처럼 추가:NameValu..

SQL 2025.04.03

(MYSQL) Primary Key & Index 지정하는 방법

안녕하세요, 오늘은 MYSQL에서 인덱스를 지정하는 방법에 대해 포스팅 해보려고 합니다.먼저 Primary Key와 Index에 대해 알아보겠습니다.Primary Key란 ?Primary Key(기본 키)는 데이터베이스 테이블에서 각 행(row)을 고유하게 식별하는 데 사용되는 하나 이상의 컬럼(column)으로, 기본 키에는 중복 값이 있을 수 없고 NULL 값이 허용되지 않습니다. 기본 키는 데이터 무결성을 보장하는 중요한 역할을 하며, 각 레코드를 구분할 수 있게 해줍니다.Index란 ?SQL에서 인덱스는 테이블의 데이터를 빠르게 검색하고 조회하는 데 도움을 주는 데이터 구조입니다.데이터베이스 테이블의 특정 컬럼에 대해 인덱스를 생성하면, SQL 쿼리가 이 컬럼을 조회할 때 데이터베이스가 해당 인덱..

SQL 2024.10.10