SQL Server 20

순위 함수: ROW_NUMBER(), RANK(), DENSE_RANK(), NTILE() 비교 (예제포함)

SQL Server 순위 함수: ROW_NUMBER(), RANK(), DENSE_RANK(), NTILE() 비교SQL Server에서 제공하는 순위 함수들인 ROW_NUMBER(), RANK(), DENSE_RANK(), NTILE()은 데이터 분석과 보고서 작성에서 매우 유용합니다. 이 함수들은 데이터셋 내의 행들을 특정 기준에 따라 순서를 매기거나 순위를 할당하는 데 사용됩니다. 이 블로그 글에서는 각 함수의 특성과 사용법을 설명하고, 예제를 통해 실제 데이터에서 어떻게 적용하는지를 알아보겠습니다.순위 함수 개요SQL Server에서는 주로 네 가지 순위 함수를 제공합니다:ROW_NUMBER(): 각 행에 고유한 순차적 정수를 할당합니다.RANK(): 결과 집합 내에서 각 행에 순위를 할당합니다...

SQL Server에서 Cross Join 이해하기

SQL Server에서 Cross Join 이해하기Cross Join은 SQL에서 두 테이블 간의 Cartesian Product(데카르트 곱)를 생성하는 조인 유형입니다. 즉, 두 테이블의 각 행을 조합하여 모든 가능한 쌍을 생성합니다. 이 조인은 두 테이블 사이에 관계가 필요 없을 때 사용되며, 모든 행의 조합을 생성하는 데 유용합니다.Cross Join의 기본 개념Cross Join의 결과 집합은 두 테이블의 행 수의 곱만큼의 행을 포함합니다. 예를 들어, 테이블 A에 3개의 행이 있고 테이블 B에 4개의 행이 있으면, Cross Join의 결과는 3 * 4 = 12개의 행을 포함하게 됩니다.Cross Join 구문Cross Join을 수행하는 기본 구문은 다음과 같습니다:SELECT *FROM t..

OLE DB와 ODBC 비교 (예제 포함)

데이터베이스에 연결하고 데이터를 조작하는 데에는 여러 가지 방법이 있습니다. 그 중에서도 OLE DB와 ODBC는 가장 널리 사용되는 두 가지 기술입니다. 이 글에서는 OLE DB와 ODBC의 차이점을 자세히 살펴보고, 이를 이해하기 쉽게 예시를 통해 설명해보겠습니다.OLE DB와 ODBC란?OLE DB (Object Linking and Embedding Database): Microsoft에서 개발한 기술로, 관계형 데이터베이스뿐만 아니라 다양한 비관계형 데이터 소스(텍스트 파일, 이메일, 스프레드시트 등)와의 연결을 지원합니다. COM (Component Object Model) 기반의 프로그래밍 인터페이스를 사용합니다.ODBC (Open Database Connectivity): SQL Acces..

재귀 쿼리로 조직 구조 조회하기 (WITH 사용, Recursive Query)

SQL Server에서 재귀 쿼리 사용하여 조직 구조 조회하기데이터베이스를 다루다 보면 계층적 데이터를 처리해야 하는 경우가 자주 발생합니다. 예를 들어, 조직의 직원 구조나 파일 시스템의 디렉터리 트리를 생각할 수 있습니다. SQL Server에서 이러한 계층적 데이터를 조회하기 위해 재귀 쿼리를 사용할 수 있습니다. 이번 포스트에서는 WITH 절을 사용한 공통 테이블 표현식(CTE, Common Table Expression)을 활용하여 조직 구조를 재귀적으로 조회하는 방법을 살펴보겠습니다.예제 데이터 준비먼저, 예제 데이터를 저장할 Employees 테이블을 생성하고, 조직 구조를 나타내는 데이터를 삽입하겠습니다.-- 직원 테이블 생성CREATE TABLE Employees ( Employee..

Entity Framework 필드 유형별 DB컬럼 매핑

ASP.NET Core의 Entity Framework (EF)에서 다양한 필드 유형을 데이터베이스로 마이그레이션할 때, 각 필드 유형은 데이터베이스에서 특정 컬럼 속성으로 매핑됩니다. 다음은 다양한 데이터 유형과 그에 대응하는 데이터베이스 컬럼 속성에 대한 설명과 예시입니다.1. 정수형 (Integer Types)int데이터베이스 타입: intNull 허용 여부: 기본적으로 NOT NULLpublic int Age { get; set; }int?데이터베이스 타입: intNull 허용 여부: NULLpublic int? Age { get; set; }다른 정수형 (short, long, byte 등)short: smallintlong: bigintbyte: tinyintNull 허용 여부: 기본적으로 N..

CTE (WITH 문)과 TEMP 테이블 비교

CTE (Common Table Expression)와 TEMP 테이블 비교SQL Server에서 데이터를 조작하고 관리하는 데 있어 CTE (Common Table Expression)와 TEMP 테이블은 중요한 도구입니다. 이 글에서는 CTE와 TEMP 테이블의 정의, 사용 사례, 장단점 등을 비교하고 예시를 통해 이해를 돕겠습니다.CTE (Common Table Expression)란?정의CTE는 SQL Server에서 특정 쿼리 내에서 일시적으로 이름이 부여된 결과 집합입니다. WITH 키워드를 사용하여 정의되며, 주로 복잡한 쿼리를 단순화하거나 재귀 쿼리를 작성할 때 사용됩니다.예제우선 비교를 위해 실습용Employee 테이블과 데이터를 생성합니다.-- 실습용 테이블 생성CREATE TABLE ..

MySQL과 SQL Server 의 SQL 문 차이 정리

MySQL과 SQL Server는 모두 관계형 데이터베이스 관리 시스템(RDBMS)이지만, 두 시스템 간에는 SQL 쿼리 사용 방식에서 여러 차이점이 있습니다. 아래 표에서 주요 쿼리 구문과 기능의 차이점을 정리하였습니다.기능 / 쿼리 유형MySQLSQL Server데이터베이스 생성CREATE DATABASE db_name;CREATE DATABASE db_name;데이터베이스 선택USE db_name;USE db_name;테이블 생성CREATE TABLE table_name (...);CREATE TABLE table_name (...);AUTO_INCREMENTAUTO_INCREMENTIDENTITY(1,1)기본 키 설정PRIMARY KEY (column_name)PRIMARY KEY (column_..

Procedure History 남기는 방법

SQL Server에서 프로시저를 생성하거나 수정할 때 발생하는 이벤트를 감지하고 해당 정보를 기록하는 트리거를 생성하는 방법은 다음과 같습니다. SQL Server에서는 DDL 이벤트를 감지하는 DDL 트리거를 사용하여 이러한 작업을 수행할 수 있습니다.먼저, 프로시저 변경 내역을 기록할 테이블을 생성해야 합니다. 그런 다음, DDL 트리거를 생성하여 프로시저의 생성 또는 변경 이벤트를 감지하고 해당 정보를 기록할 수 있습니다.1. History 테이블 생성CREATE TABLE ProcedureHistory ( Id INT IDENTITY(1,1) PRIMARY KEY, EventDate DATETIME DEFAULT GETDATE(), EventType NVARCHAR(50), ..

SQL Server - Lock 과 Latch 란?

DB를 전문으로 작업하는 사람은 아니지만 개발을 하다보면 ... 프로그램이 느려요,  멈춰서 안 움직여요.. 혹시 무슨 문제 있어요?라는 문의를 간혹 받게 된다. 그럴 때면 Lock 현황을 확인하고, 전체적인 리소스 문제가 없는지 확인하기 위해 Activity monitor를 확인하곤 한다.  문제가 되는 상황에서 Activity monitor  대기 범주에 상단에 보통 위치하는 Lock 과 Latch에 대해 검색해 봤다. Lock (자물쇠)과 Latch (걸쇠)는 비슷한 영어의 뜻이 있어 무언가를 배타적으로 Hold 하고 있는 느낌적인 느낌은 알겠지만 무엇이 다를까? 구조체목적제어성능 비용Latch메모리 내 구조의 일관성을 보장합니다.SQL Server 엔진만 제어할 수 있습니다.성능 비용이 낮습니다...

MSSQL - SQL 튜닝 (실용적이면서, 가볍게 시도해 볼 방법들)

SQL 성능 최적화를 위한 다양한 기법과 기술에 대한 이해, 그리고 많은 경험을 필요로 합니다. 하나하나 정확한 기능과 원리를 알고 사용하면 좋겠지만, 충분한 여유가 없는 경우 가볍게 시도해 볼 수 있는 실용적인 방법을 소개합니다.  1. SELECT 문인 경우 WITH (NOLOCK) 추가SELECT TA.COL1, TB.COL2FROM TBL_A AS TA WITH (NOLOCK)INNER JOIN TBL_B AS TB WITH (NOLOCK) ON TA.COL1 = TB.COL2 2.  무작정 OPTION (FORCE ORDER) 구문 추가 SELECT TA.COL1, TB.COL2FROM TBL_A AS TAINNER JOIN TBL_B AS TB ON TA.COL1 = TB.COL2 O..

카테고리 없음 2020.10.22
반응형