DataBase/SQLD,SQLP
[MSSQL] 윈도우 함수 ROW_NUMBER() 순차번호 할당
SQL를 다루다 보면 행별로 순차적인 번호를 부여해야 할 상황이 1번쯤은 온다. RANK()를 활용할 수는 있겠지만, RANK()함수는 번호의 기준이 되는 ORDER BY 절의 데이터가 동일하다면 같은 번호로 할당된다. 그런 점을 보안한 DENSE_RANK() 함수가 있기는 하나 ROW_NUMBER() 함수의 명이 더 의미적으로 적합한 함수인 것 같다. ROW_NUMBER() 함수는 행과 행간의 관계를 정의하는 윈도우 함수이며, ANSI/ISO SQL 표준과 SQLServer, Oracle에서 지원한다. ROW_NUMBER() 란? ROW_NUMBER() 함수는 결과 집합의 파티션 내 각 행에 순차적인 정수를 할당하는 윈도우 함수입니다. ROW_NUMBER()의 특징 행의 번호는 각 파티션에 대해 1번부..
[MSSQL] 윈도우 함수 RANK() OVER 다루기 / DENSE_RANK()
윈도우 함수 중 그룹 내 순위 함수로 RANK() 함수가 존재한다. 윈도우 함수란 행과 행간의 관계를 정의하기 위한 함수이고, RANK() 함수는 ANSI/ISO SQL 표준과 SQLServer Oracle에서 지원한다. RANK()란? RANK() 함수는 결과 집합의 파티션 내에서 각 행의 순서를 할당하는 윈도우 함수이다. RANK()의 특징. 동일한 값을 갖는 파티션 내의 각 행은 동일한 순위를 받습니다. 파티션 내에서 첫 번째 순위는 1부터 시작한다. 같은 순위에 연결된 행의 수를 더하여 다음 행의 순위를 계산한다. RANK() 함수 Syntax RANK() OVER ( [PARTITION BY partition_expression, ... ] ORDER BY sort_expression [ASC ..
[MSSQL] 집합 연산자
집합 연산자란? 두 개 이상의 테이블에서 조인을 사용하지 않고 연관된 데이터를 조회하는 방법 중에 또 다른 방법이 있는데 그 방법이 바로 집합 연산자(Set Operator)를 사용하는 방법이다. 집합 연산자는 여러 개의 질의의 결과를 연결하여 하나로 결합하는 방식을 사용한다. 즉, 집합 연산자는 2개 이상의 질의 결과를 하나의 결과로 만들어 준다. 일반적으로 집합 연산자를 사용하는 상황은 아래 두 가지이다. 1. 서로 다른 테이블에서 유사한 형태의 결과를 반환하는 것을 하나의 결과로 합치고자 할 때 2. 동일 테이블에서 서로 다른 질의를 수행하여 결과를 합치고자 할 때 사용할 수 있다. 집합 연산자를 사용하기 위해서는 다음 제약조건을 만족해야 한다. SELECT 절의 칼럼 수가 동일하고 SELECT 절..
[MSSQL] 서브 쿼리 SubQuery
서브 쿼리(SubQuery)란 하나의 SQL 문안에 포함돼 있는 또 다른 SQL 문을 말한다. 조인과 서브쿼리의 차이점. 조인은 집합간의 곱(Product)의 관계이다. 즉 1:1 관계의 테이블이 조인하면 1(= 1 * 1) 레벨의 집합이 생성되고, 1:M 관계의 테이블을 조인하면 M(= 1 * M) 레벨의 집합이 생성된다. 예를 들어 조직(1)과 사원(M)의 테이블을 조인하면 결과는 사원 레벨(M)의 집합이 생성된다. 그러나 서브 쿼리는 서브 쿼리 레벨과는 상관없이 항상 메인 쿼리 레벨로 결과 집합이 생성된다. 위의 예를 들어 메인 쿼리로 조직(1), 서브 쿼리로 사원(M) 테이블을 사용하면 결과 집합은 조직(1) 레벨이 된다. 서브 쿼리를 사용할 때 다음 사항에 주의해야 한다. 1. 서브 쿼리는 괄호..
[SQLD/SQLP] SELECT 절
데이터베이스에서 행을 검색하고 SQL Server에서 하나 이상의 테이블에서 하나 이상의 행 또는 열을 선택할 수 있도록 한다. SELECT 문의 전체 구문은 복잡하지만 절은 아래와 같이 요약할 수 있다. ● SELECT ::= [ TOP ( top_expression ) ] [ ALL | DISTINCT ] { * | column_name | expression } [ ,...n ] [ FROM { table_source } [ ,...n ] ] [ WHERE ] [ GROUP BY ] [ HAVING ] [ ORDER BY ] [ OPTION ( [ ,...n ] ) ] 위의 구문은 SQL Server Docs에 명시된 내용이다. ● SELECT 문의 논리적 처리 순서 SELECT 문의 논리적 처리 ..
[SQLD/SQLP] SQL 이란?
SQL(Structured Query Language)은 관계형 데이터베이스에서 데이터 정의, 데이터 조작, 데이터를 제어하기 위해 사용하는 언어다. 사용자들은 데이터들을 집합에서 필요로 하는 데이터를 꺼내서 조회하고 새로운 데잍터를 입력, 수정, 삭제하는 행위를 통해 데이터베이스와 대화하게 된다. 그리고 SQL은 이러한 대화를 가능하도록 매개 역할을 한다. 결과적으로 SQL문장을 배우는 것이 곧 관계형 데이터베이스를 배우는 기본 단계라 할 수 있다. SQL 문장의 종류 명령어의 종류 명령어 설명 데이터 조작어 (DML, Data Manipulation Language) SELECT 데이터베이스에 들어 있는 데이터를 조회하거나 검색하기 위한 명렁어로 RETRIEVE라고도 한다. INSERT UPDATE ..