윈도우 함수 OVER 키워드와 함께 사용되며 역할에 따라 다음과 같이 나눌 수 있다. 순위 함수 - RANK, DENSE_RANK, ROW_NUMBER 집계 함수 - SUM, MAX, MIN, AVG. COUNT 행 순서 함수 - FIRST_VALUE, LAST_VALUE, LAG, LEAD 비율 함수 - CUME_DIST, PERCENT_RANK, NTILE, RATIO_TO_REPORT 1. 순위 함수 함수명 설명 RANK 순위를 매기면서 같은 순위가 존재하면 존재하는 수만큼 다음 순위를 건너뛴다. 예) 1, 2, 2, 4, 5, 5, 7 DENSE_RANK 순위를 매기면서 같은 순위가 존재하더라도 다음 순위를 건너뛰지 않고 이어서 매긴다. 예) 1, 2, 2, 3, 4, 4, 5 ROW_NUMBER..
그룹 함수 데이터를 GROUP BY 하여 나타낼 수 있는 데이터를 구하는 함수이다. 역할에 따라 구분해보면 집계 함수와 소계(총계) 함수로 나눌 수 있다. 집계 함수 - COUNT, SUM, AVG, MAX, MIN 등 소계(총계) 함수 - ROLLUP, CUBE, GROUPING 등 1. ROLLUP 소그룹 간의 소계 및 총계를 계산하는 함수 ROLLUP(A) - A로 그룹핑 - 총합계 ROLLUP(A, B) - A, B로 그룹핑 - A로 그룹핑 - 총합계 ROLLUP(A, B, C) - A, B, C로 그룹핑 - A, B로 그룹핑 - A로 그룹핑 - 총합계 2. CUBE 소그룹 간의 소계 및 총계를 다차원적으로 계산할 수 있는 함수이다. GROUP BY가 일방향으로 그룹핑하여 소계를 구했다면 CUBE..
집합 연산자 집합 연산자는 각 쿼리의 결과 집합을 가지고 연산을 하는 명령어이다. 기본 구조 SELECT …… [UNION | UNION ALL | INTERSECT | EXCEPT] SELECT …… [ORDER BY 컬럼 [ASC/DESC]]; 집합 연산자 설명 UNION ALL 각 쿼리의 결과 집합의 합집합. 중복된 행도 포함한다. UNION 각 쿼리의 결과 집합의 합집합. 중복된 행은 한 줄로 출력된다. (중복 제거) INTERSECT 각 쿼리의 결과 집합의 교집합. 중복된 행은 한 줄로 출력된다. MINUS / EXCEPT 앞에 있는 쿼리의 결과 집합에서 뒤에 있는 쿼리의 결과 집합을 뺀 차집합. 중복된 행은 한 줄로 출력된다.
서브쿼리(Subquery)란? ✅ 하나의 SQL 문에 포함되어 있는 또 다른 SQL 문 서브쿼리 사용시 주의사항 1. 서브쿼리를 괄호로 감싸서 사용한다. 2. 서브쿼리는 단일 행 또는 복수 행 비교 연산자와 함께 사용 가능하다. 3. 서브쿼리에서는 ORDER BY 를 사용하지 못한다. 서브쿼리는 위치에 따라 다음과 같이 나눌 수 있다. SELECT 절 스칼라 서브쿼리(Scalar Sunquery) FROM 절 인라인 뷰(Inline View) WHERE 절, HAVING 절 중첩 서브쿼리(Nested Subquery) 스칼라 서브쿼리(Scalar Sunquery) 주로 SELECT 절에 위치하지만 컬럼이 올 수 있는 대부분 위치에 사용할 수 있다. 컬럼 대신 사용되므로 반드시 하나의 값만을 반환해야 하며..
JOIN이란? 두 개 이상의 테이블을 서로 연결하여 데이터를 검색할 때 사용하는 방법 두 개의 테이블을 마치 하나의 테이블인 것처럼 보여준다. 기본 구조 SELECT 테이블.컬럼, 테이블.컬럼 FROM 테이블1,테이블2 WHERE 조건 JOIN의 종류 설명 INNER JOIN JOIN 조건에 충족하는 데이터만 출력 LEFT OUTER JOIN 왼쪽에 표기된 테이블의 데이터는 무조건 출력 RIGHT OUTER JOIN 오른쪽에 표기된 테이블의 데이터는 무조건 출력 FULL OUTER JOIN 왼쪽, 오른쪽 테이블의 데이터가 모두 출력 NATURAL JOIN A테이블과 B테이블에서 같은 이름을 가진 컬럼들이 모두 동일한 데이터를 가지고 있을 경우 JOIN되는 방식 CROSS JOIN A테이블과 B테이블 사이..
GROUP BY GROUP BY 절은 SQL 문에서 FROM 절과 WHERE 절 뒤에 오며, 데이터들을 작은 그룹으로 분류하여 소그룹에 대한 항목별로 통계 정보를 얻을 때 추가로 사용된다. 집계 함수 함수명 설명 COUNT(*) 전체 Row를 Count하여 반환 COUNT(컬럼) 컬럼값이 Null인 Row를 제외하고 Count하여 반환 COUNT(DISTINCT컬럼) 컬럼값이 Null인 아닌 Row에서 중복을 제거한 Count를 반환 SUM(컬럼) 컬럼값들의 합계를 반환 AVG(컬럼) 컬럼값들의 평균을 반환 MIN(컬럼) 컬럼값들의 최솟값을 반환 MAX(컬럼) 컬럼값들의 최댓값을 반환 HAVING HAVING 절은 GROUP BY 절을 사용할 때 WHERE 절처럼 사용하는 조건절이라고 생각하면 된다. 주..
비교 연산자 연산자 의미 예시 = 같음 where col = 10 = 크거나 같음 where col >= 10 부정 비교 연산자 연산자 의미 예시 != 같지 않음 where col != 10 ^= 같지 않음 where col ^= 10 같지 않음 where col 10 not 컬럼명 = 같지 않음 where not col = 10 not 컬럼명 > 크지 않음 where not col > 10 SQL 연산자 연산자 의미 예시 BETWEEN A AND B A와 B의 사이(A, B 포함) where col between 1 and 10 LIKE '비교 문자열' 비교 문자열을 포함 where col like '방탄%' where col like '&소년단' where col like '%탄소년%' where c..
문자 함수 []는 옵션 함수명 설명 CHR(ASCII 코드) 아스키 코드를 인수로 입력했을 때 매핑되는 문자가 무엇인지 알려주는 함수 예) CHR(65) ➡ A LOWER(문자열) 문자열을 소문자로 변환 예) LOWER('PINK') ➡ pink UPPER(문자열) 문자열을 대문자로 변환 예) UPPER('pink') ➡ PINK LTRIM(문자열 [,특정 문자) 특정 문자 X - 문자열의 왼쪽 공백 제거 특정 문자 O - 문자열의 왼쪽부터 한 글자씩 특정 문자와 비교하여 포함되어 있으면 제거 예) LTRIM('고양이율무', '고양이') ➡ 율무 RTRIM(문자열 [,특정 문자) 특정 문자 X - 문자열의 오른쪽 공백 제거 특정 문자 O - 문자열의 오른쪽부터 한 글자씩 특정 문자와 비교하여 포함되어 있..
SQL(Structured Query Language)이란? 1974년 IBM 연구소에서 개발한 SEQUEL에서 유래한다. 국제 표준 데이터베이스 언어이며, 많은 회사에서 관계형 데이터베이스(RDB)를 지원하는 언어로 채택하고 있다. 관계대수와 관계해석을 기초로 한 혼합 데이터 언어이다. 질의어지만 질의 기능만 있는 것이 아니라 데이터 구조의 정의, 데이터 조작, 데이터 제어 기능을 모두 갖추고 있다. SQL 문법의 종류 SQL 문법은 크게는 3가지의 종류로 나누어지며, 종류마다 정의는 아래와 같다. ✅ DDL(Data Definition Language, 데이터 정의어) SCHEMA, DOMAIN, TABLE, VIEW, INDEX를 정의하거나 변경 또는 삭제할 때 사용하는 언어이다. 논리적 데이터 구..
정규화란? 정규화는 데이터의 일관성, 최소한의 데이터 중복, 최소한의 데이터 유연성을 위한 방법이며 데이터를 분해하는 과정이다. 정규화된 모델은 테이블이 분해된다. 테이블이 분해되면 직원 테이블과 부서 테이블 간에 부서코드로 조인(join)을 수행하며 하나의 합집합으로 만들 수 있다. 정규화를 하면 불필요한 데이터를 입력하지 않아도 되기 때문에 중복 데이터가 제거된다. 정규화를 할 경우 데이터 조회성능은 처리조건에 따라 향상되는 경우도 있고 저하되는 경우도 있지만 입력, 수정, 삭제 성능은 일반적으로 향상된다. 정규화 절차 정규화의 문제점 정규화는 데이터 조회(select) 시에 조인(join)을 유발하기 때문에 CPU와 메모리를 많이 사용한다. 아래 코드를 프로그램화 한다면 중첩된 루프(Nested L..
Rizy
'[개발 언어 & 프레임워크]/SQL' 카테고리의 글 목록