쌍용교육센터에서 공부한 내용을 정리하며 기록하는 글이고 주관적인 생각이 들어갈 수 있습니다.
잘못된 내용이나 피드백 및 생각 공유는 언제든 환영입니다.
댓글로 남겨주시면 확인 후 수정하겠습니다.
내용에 대한 소스 코드는 https://github.com/2jaehoon/ssangyonng.git에 올려두었습니다.
집계함수
group by와 함께 사용되면 그룹별 집계를 얻을 수 있다.
group by와 함께 사용되지 않으면 모든 컬럼을 하나로 집계한다.
-- group by에 설정된 컬럼명만 정의할 수 있다.
-- group by에서 일반 컬럼을 사용하기 위해선 집계 함수를 사용해야 한다.
-- 그룹으로 묶여진 일반 컬럼에 대한 집계를 수행
select 컬럼명, 집계 함수( 일반 컬럼 )
from 테이블명
group by 컬럼명
집계에 대한 총합
rollup, cube 사용
그룹으로 묶인 컬럼이 하나인 경우
rollup : 소계 후 전체 합계가 출력
cube : 전체 합계가 출력된 후 소계가 출력
group by rollup( 컬럼명 )
group by cube( 컬럼명 )
그룹으로 묶인 컬럼이 여러 개인 경우
사원테이블에서 부서에 해당하는 직무별 사원수를 예로 들어보면 순서는 아래와 같다.
group by rollup( DEPTNO, JOB )
group by cube( DEPTNO, JOB )
그룹으로 묶일 조건
having
group by 컬럼명
having 조건
rank( 순위 함수 )
조회되는 컬럼에 순위를 설정할 때 사용
order by절을 사용하지 않는다.
rank() over() : 동일 순위가 나온다. 동일 순위만큼 건너 뛴다.
rank() over( partition by 분류할 컬럼명 order by 정렬할 컬럼명 )
-- partition by : 분류할 컬럼명으로 묶을 때
-- order by 뒤에 asc, desc
row_number() over() : 동일 순위가 나오지 않는다.
row_number() over( partition by 분류할 컬럼명 order by 정렬할 컬럼명 )
-- partition by : 분류할 컬럼명으로 묶을 때
-- order by 뒤에 asc, desc
날짜 함수
날짜에 대한 연산을 수행
날짜에 + 연산을 사용하면 일이 연산된다.
add_month() : 월을 더할 때
add_month( 날짜, 더할 월 수 )
months_between() : 두 날짜간 월의 차이
months_between( 큰 날짜, 작은 날짜 )
subquery
쿼리문 안에 () 사용하여 select 쿼리문 넣어 커리문을 작성하는 쿼리문
create, insert, update, delete, select에 정의하여 사용할 수 있다.
단수행( single row ), 복수행( multi row ) 서브쿼리를 지원한다.
단수행 서브쿼리 : 서브쿼리가 조회하는 행이 한 행인 서브쿼리
복수행 서브쿼리 : 서브쿼리가 조회하는 행이 여러 행인 서브쿼리
create subquery
테이블을 복사할 때 사용( 원천 테이블에서 필요한 데이터를 추출하여 저장 )
조회되는 컬럼명, 데이터형, 크기, 레코드는 복사되나 제약사항은 복사되지 않는다.
(제약사항 중 not null 조건은 복사된다.)
create subquery 문법은 아래와 같다.
create table 테이블명 as ( select문 );
-- select의 조회된 결과로 테이블이 생성된다.
insert subquery
다른 테이블의 컬럼값을 사용하여 insert할 때 사용
단수행 서브쿼리와 복수행 서브쿼리 모두 사용할 수 있다.
단수행
다른 컬럼의 값 하나를 조회하여 insert
문법은 아래와 같다.
insert into 테이블명( 컬럼명1,컬럼명2...) values( 값1,( select문 ),값3...);
복수행
다른 테이블에 여러 컬럼에 여러 레코드를 조회하여 insert
정산할 때 주로 사용
문법은 아래와 같다.
insert into 테이블명(컬럼명1,컬럼명2...) ( select문 );
update subquery
다른 컬럼의 값으로 변경할 때 사용
단수행 서브쿼리만 가능하다.
문법은 아래와 같다.
update 테이블명
set 컬럼명=값, 컬럼명=( select문 )...
where 컬럼명=( select문 );
delete subquery
다른 테이블의 값을 사용하여 레코드를 삭제할 때 사용
단수행 서브쿼리만 가능하다.
문법은 아래와 같다.
delete
from 테이블명
where 컬럼명 = ( select문 );
select subquery
다른 테이블 컬럼 값을 사용하여 조회할 때 사용
단수행, 복수행, scalar subquery 3가지로 사용 가능
단수행
select 컬럼명1, 컬럼명2...
from 테이블명
where 컬럼명 = ( select문 );
'성장 일기 > 쌍용교육센터' 카테고리의 다른 글
0127/테이블 제약 조건 (0) | 2023.01.27 |
---|---|
0126/집계함수 (0) | 2023.01.26 |
0120/DBMS 함수 (0) | 2023.01.20 |
0119/group by, order by, 함수 (0) | 2023.01.19 |
0118/update, delete, select (0) | 2023.01.18 |