to_date

날짜 형식의 문자열을 날짜로 변환

to_date(날짜형식의 문자열, '패턴')

to_number

숫자형식의 문자열을 숫자로 변환

to_number('숫자형식의 문자열') // 잘 안씀

집계(그룹)함수

모든 컬럼 값을 모아서 하나로 만드는 일.
group by절과 함께 사용하면 그룹별 집계를 얻을 수 있다.
여러 레코드가 조회하는 컬럼과 함께 사용하면 error가 발생
where절에서 집계함수를 직접 사용할 수 없다.

count

: 레코드의 총수를 얻을 때 사용. Null인 컬럼은 count에 포함되지 않는다.

count('컬럼명')

sum

합계를 구할 때 사용.

sum(컬럼명)

avg

컬럼의 평균을 구할 때 사용.

avg(컬럼명)

max

컬럼의 값 중 최고값을 구할 때 사용.

max(컬럼명)

min

컬럼의 값 중 최저값을 구할 때 사용.

min(컬럼명)

  • 집계함수는 group by절과 함께 사용하면 그룹별 집계를 얻을 수 있다.
select   컬럼명, 집계함수(일반컬럼명) // 그룹별 집계를 얻기 위한 컬럼. group by절에 포함되지 않는 함수도 사용 가능.
from     테이블명 
group by 그룹으로 묶을 컬럼명

ctrl + p : 실행계획

그룹별 합과 총계얻기

rollup

소계 후 전체 합계 출력 //맨 밑에 전체합계

select deptno, count(empno), sum(sal) //소계
from emp
group by rollup(deptno); // 전체 합계 출력

cube

전체 합계 출력 후 소계 출력 //맨 위에 전체합계

select deptno, count(empno), sum(sal)
from emp
group by cube(deptno);

group by rollup

-rollup과 cube는 여러 컬럼이 그룹으로 묶이면 다른 결과를 보여준다.

group by rollup(컬럼명, 컬럼명)
  • 소계 후 합계가 출력, 마지막에 총계가 출력.

group by cube

  • 그룹별 전체합계가 먼저 출력된 후 합계와 소계가 출력
group by cube(컬럼명, 컬럼명)

순위함수

  • 조회되는 결과에 순차적인 번호를 붙여 조회하는 함수.
  • order by와 함께 사용하지 않는다. => 순위 섞임.

rank() over()

  • 동일 순위가 나온다. //1등이 2명일 수 있다. 중복가능해서 잘 안씀.
  • 동번 번호 이후에는 그 수 만큼 건너뛴다. //1 1 3 (2등 건너뜀)
rank() over( partition by 컬럼명 order by 순위를 설정할 컬럼명 정렬조건(asc, desc))

row_number() over()

  • 동일 순위가 나오지 않는다.
row_number() over( partition by 컬럼명 order by 순위를 설정할 컬럼명 정렬조건(asc, desc))

날짜 함수

  • 날짜에 +연산자를 사용하면 일자가 더해진다.
  • 날짜에 -연산자를 사용하면 일자가 빼진다.

add_months

월을 더할 때 사용하는 함수

add_months(날짜, 더할 개월수)

months_between

두 날짜간의 개월 차이(실수로 결과가 나옴.)

  • 동일 순위가 나오지 않는다.
months_between(큰 날짜, 작은 날짜)

난수를 구하는 함수

dbms_random 패키지 사용

dbms_random.string(생성문자, 자릿수)
-- u - 대문자, l - 소문자, a - 대소문자 합쳐진, x - 영문자와 숫자가 합쳐진, p - 특수문자도 합쳐진

subquery

query문안에 select query문 정의하는 문법
단수행, 복수행 서브쿼리 모두 사용할 수 있다.
single-row subquery : 서브쿼리의 조회 결과가 한 행이 나오는 서브쿼리
multi-row subquery : 서브쿼리의 조회 결과가 여러 행이 나오는 서브쿼리

  • 조회결과를 사용하여 쿼리문을 실행해야 할 때.
  • create, insert, update, delete, select에서 사용할 수 있다.

create subquery

  • 테이블을 복사할 때 사용.

  • 단수행, 복수행 서브쿼리를 모두 사용할 수 있다.

  • 원본 테이블의 제약사항은 복사되지 않는다.(not null조건은 복사된다.)
    // 테이블에 설정된 제약사항을 확인하려면 제약사항이 들어있는 dbms에서 운영하는 테이블을 확인해야한다.
    DD(Date Dictionary) : dbms가 운영되기 위해 사용하는 테이블.
    -개발자는 DML작업을 직접할 수 없다.
    -select만 가능.

  • 조회쿼리에 사용되는 컬럼명, 데이터형, 크기, 레코드가 그대로 복사.

create table 테이블명 as (select ,,,,);

insert subquery

다른 컬럼의 값으로 레코드를 추가할 때 사용.
단수행, 복수행 서브쿼리 모두 사용할 수 있다.

  • 단수행
insert into 테이블명(컬럼명,,,) values(,,(
select 컬럼명 from 테이블명 where 검색조건),,, );
  • 복수행
insert into 테이블명(컬럼명,,,) (select 컬럼명 from 테이블명);

update subquery

단수행 서브쿼리만 가능.
다른 컬럼에 존재하는 값으로 변경할 때
where절에 in을 사용하면 복수행 서브쿼리도 사용 가능.

update 테이블명
set    컬럼명 = (select ,,,,),,,,
where  검색조건

delete subquery

단수행 서브쿼리만 가능.
다른 컬럼에 존재하는 값으로 삭제할 때
where절에 in을 사용하면 복수행 서브쿼리도 사용 가능.

delete from 테이블명 where 컬럼명 = (select,,,,);

0개의 댓글