목록DataBase (15)
DevSSOM
윈도우 함수 순위, 집계 등 행과 행 사이의 관계를 정의하는 함수. OVER 구문이 필수로 포함해야 한다. SELECT WINDOW_FUNCTION(ARGUMENTS) OVER([PARTITION BY 컬럼][ORDER BY절][WINDOWING절])FROM 테이블명; 구조 설명 ARGUMENTS 윈도우 함수에 따라서 필요할 때 넣어주는 인수 PARTITION BY 전체 데이터를 어떤 소그룹으로 나누는 기준 ORDER BY 나눠진 소그룹에 대한 정렬 기준 WINDOWING 행에 대한 범위 기준 WINDOWING에 사용되는 명령어 ROWS 물리적 단위로 행의 집합을 지정 UNBOUNDED PRECEDING 윈도우의 시작 위치가 첫 번째 행 UNBOUNDED FOLLOWING 윈도우의 마지막 위치가 마지막 ..
JOIN 두 개 이상의 테이블들을 연결 또는 결합해서 데이터를 출력하는 것 연산자에 따라 JOIN 방식을 EQUI JOIN과 Non EQUI JOIN으로 분류함. EQUI JOIN (등가 교집합) 등가 연산자 '=' 를 사용한 조인을 의미. 두 개의 테이블 간에 서로 정확하게 일치하는 경우를 활용하는 조인. 대부분 기본키 - 외래키 관계를 기반으로 발생하지만, 모든 조인이 그런 것은 아님. Non EQUI JOIN (비등가 교집합) 등가 연산자 이외의 연산자들 >, >=,
계층형 데이터 동일 테이블에 계층적으로 상위와 하위 데이터가 포함되어 있는 데이터. 이해하기 쉽게 샘플 데이터 먼저 보기. 샘플 데이터를 계층형 구조로 나타내보면, D와 E의 관리자인 C, B와 C의 관리자인 A가 있음. 그러면, D와 E보다는 C가, B와 C보다는 A가 더 상위데이터가 되는 것임. 이렇게 하나의 테이블 안에서 컬럼들이 서로 순환적으로 이루어져 있기 때문에 순환관계 데이터 모델이라고 하고, 이런 데이터를 계층형 데이터라고 함. 계층형 질의 테이블에 계층형 데이터가 존재하는 경우, 데이터를 조회하기 위해 사용하는 것. 계층형 데이터를 조금 더 보기 편하게 출력하기 위해서 쓴다고 생각하면 됨. SELECT LEVEL, 자식 컬럼, 부모 컬럼, 원하는 컬럼 FROM 테이블명 START WITH..
집합 연산자 두 개 이상의 테이블에서 JOIN을 사용하지 않고, 연관된 데이터를 조회하는 방법 중 하나. 테이블에서 SELECT한 컬럼의 수와 각 컬럼의 데이터타입이 테이블 간 서로 호환이 가능해야됨. UNION 두 개의 테이블을 하나로 만드는 연산. 관계형 대수의 일반 집합 연산에서 합집합의 역할. 합친 후에 테이블에서 중복된 데이터는 제거. 이를 위해 UNION은 테이블을 합칠 때 정렬 과정을 발생시킴(하지만 최종 결과에 대해 올바른 정렬을 위해서는 ORDER BY 구문을 사용해야함) UNION ALL UNION과 거의 같은 기능을 수행함. 다만, ※ UNION과 달리 중복 제거와 정렬을 하지 않음 ※ 단순히 데이터를 연결하기만 함. INTERSECT 두 개의 테이블에 대해 겹치는 부분을 추출하는 연..
관계형 대수 관계형 데이터베이스에서 원하는 정보를 유도하기 위한 기본 연산 집합. 일반 집합 연산, 순수 관계 연산 두 가지로 이루어짐. 1) 일반 집합 연산 - 카디션 프로덕트 : 두 개의 테이블이 있을 때, 해당 테이블의 데이터를 통해 가능한 모든 경우의 수를 추출하는 연산 2) 순수 관계 연산 순수 관계 연산은 지금까지 공부했던 애들. - 디비전 : 두 개의 테이블이 있을 때, 첫번째 테이블과 두번째 테이블의 서로 연관된 값만 추출하는 연산
서브쿼리 하나의 쿼리 안에 포함된 또 하나의 쿼리. 메인 쿼리가 서브쿼리를 포함하는 종속적인 관계. 조건문이 복잡해질 때 서브쿼리를 활용함. 알려지지 않은 기준을 이용한 검색에 유용 ex) 연봉이 상위 5%인 여자를 직원 테이블에서 검색할 때 메인 쿼리가 실행되기 이전에 한 번만 실행 (서브쿼리부터 실행됨) 한 문장에서 여러 번 사용 가능(서브쿼리의 서브쿼리) 서브쿼리 사용시 주의사항 서브쿼리는 괄호와 함께 사용되어야 함 서브쿼리 안에서 ORDER BY 절은 사용할 수 없음 서브쿼리는 연산자의 오른쪽에 사용되어야 함 (메인쿼리 4500; 1) 서브쿼리를 알면, 사원 데브쏨의 급여를 알지 못해도 검색 가능 SELECT * FROM employee WHERE 급여 > (SELECT 급여 FROM employ..
INNER JOIN 따로 분리되어 있는 두 개의 테이블에서 정보를 한 번에 조회하기. 1) rental 테이블의 모든 컬럼을 조회하되 user테이블과 연결해 조회하기 SELECT * FROM rental INNER JOIN user; /* 연결할 테이블*/ ON 두 개의 테이블을 조건을 적용해서 연결한다면, INNER JOIN + ON으로 조건을 붙여서 사용. 1) rental 테이블의 모든 컬럼을 조회하되 user테이블과 연결해 조회하기. 이때 user테이블의 id와 rental테이블의 user_id를 기준으로 연결하기 SELECT * FROM rental /* 테이블 */ INNER JOIN user /* 연결할 테이블 */ ON user.id = rental.user_id /* 연결할 조건 컬럼 *..
GROUP BY 데이터를 그룹화해서 표현하는 명령어. ※ LIMIT, ORDER BY, GROUP BY는 쿼리 마지막줄에 위치한다. 1) 유저별로 몇 권의 책을 빌렸는지 확인하기 위해, rental테이블의 user_id컬럼과 해당 컬럼값에 해당하는 데이터의 수를 차례대로 조회하기 SELECT user_id, COUNT(*) /* 검색할 컬럼 */ FROM rental GROUP BY user_id; /* 그룹의 기준 컬럼*/ 2) GROUP BY는 다른 내장함수들과 다양하게 조합해서 사용할 수 있음. SELECT user_id, SUM(컬럼명) FROM rental GROUP BY user_id; -- user_id가 같은 열에서 컬럼의 내용을 다 더한 값을 출력 SELECT user_id, AVG(컬럼..