본문 바로가기

전체 글155

[SQL] RANK(), DENSE_RANK(), ROW_NUMBER 개념 및 차이 RANK 함수 RANK 함수는 ORDER BY를 포함한 쿼리문에서 특정 항목에 대한 순위를 구하는 함수이다. 이 때 특정범휘 (PARTITION BY) 내에서 순위를 구할수도 있고 전체 데이터에 대한 순위를 구할 수도 있다. 동일한 값에 대해서는 동일한 순서를 부여하게 된다. DENSE_RANK 함수 DENSE_RANK 함수는 동일한 순위를 하나의 건수로 취급한다. DENSE_RANK 함수는 공동등수를 하나의 등수로 보고 다음 등수를 매긴다. ROW_NUMBER 함수 ROW_NUMBER 함수는 동일한 값이라도 고유한 순위를 부여한다. 동일한 값의 순위를 정해야 할 때 오라클의 경우 ROWID가 적은 행이 먼저 나온다. 예시) RANK() 는 동일한 값일 경우 같은 등수로 표기. DENSE_RANK() 는.. 2022. 11. 1.
[SQL] 서브쿼리 종류 서브 쿼리 사용 위치 설명 스칼라 서브 쿼리 SELECT 절 단일 칼럼, 단일 행을 반환 (1개의 값) 인라인 뷰 FROM 절 View와 사용적인 측면에서 동일함 (임시 뷰, 임시 테이블) 중첩 서브 쿼리 WHERE 절, HAVING 절 다중 칼럼 또는 다중 행을 반환 위의 3가지 분류 외에도 연관성 없는 서브 쿼리, 연관성 있는 서브 쿼리로 분류하기도 한다. 연관성 없는 서브 쿼리는 메인 쿼리의 테이블과 무관하게 실행되는 서브 쿼리이며, 연광성 있는 서브 쿼리는 메인 쿼리의 테이블과 조인하여 실행하는 서브 쿼리이다. 출처 https://gent.tistory.com/464 2022. 11. 1.
[SQL] 트랜잭션의 ACID 성질 트랜잭션(Transaction) 트랜잭션이란 여러 개의 작업을 하나로 묶은 실행 유닛을 말한다. 각 트랜잭션은 하나의 특정 작업으로 시작해서 묶여 있는 모든 작업들을 다 완료해야 정상적으로 종료한다. 만약 하나의 트랜잭션에 속해있는 여러 작업 중에서 단 하나의 작업이라도 실패하면, 이 트랜잭션에 속한 모든 작업을 실패한 것으로 판단한다. 작업이 하나라도 실패를 하게 되면 트랜잭션도 실패이고, 모든 작업이 성공적이면 트랜잭션 또한 성공이다. 성공 또는 실패 라는 두 개의 결과만 존재하는 트랜잭션은, 미완료된 작업없이 모든 작업을 성공해야 한다. 트랜잭션이란 데이터베이스의 상태를 변환시키는 기능을 수행하기 위한 하나 이상의 쿼리를 모아 놓은 하나의 작업 단위를 말한다. 데이터베이스 트랜잭션은 ACID 라는 .. 2022. 10. 31.
[SQL] 데이터 모델링 - 관계 (Relationship) 관계란? 데이터 모델에서의 관계란 "엔터티 간 논리적인 연관성"을 의미한다. 관계는 엔터티간의 연관성을 나타냈기 때문에 엔터티의 정의에 영향을 받고 속성 정의 및 관계 정의에도 영향을 받는다. 관계는 존재에 의한 관계와 행위에 의한 관계로 구분될 수 있다. 이는 엔터티간 어떠한 목적으로 관계가 이뤄졌는지에 따라 분류된다. 존재에 의한 관계 사원은 부서에 항상 속해있다. OR 부서는 사원을 포함할 수 있다. 사원은 부서에 소속되어 있기 때문에 나타나는 관계다. 즉, 존재의 형태에 의해 관계가 형성된다. 행위에 의한 관계 고객이 주문하면 주문이 발생된다. OR 주문은 고객에 의해 발생된다. 주문은 고객이 원하는 무언가를 주문할때 발생한다. 즉, 행위의 형태에 의해 관계가 형성된다. 관계의 표기법 관계를 표기.. 2022. 10. 31.