테이블 생성(Create Table )
not null의 경우 속성을 정의 할때 같이 적어주며,
기본키, 유니크키, 외래키, 제한(Check) 의 경우 아래에 따로 적어줍니다.
외래키의 경우는 Foreign Key(컬럼명) references 테이블명(컬럼명) 으로 적어줍니다,
현재 테이블의 (컬럼명)은 참조합니다 어디 테이블의(컬럼을)
check의 경우는 () 안에 조건을 사용해줍니다.
테이블 속성 추가
alter table (테이블 이름) add (추가할 속성) (추가할 속성의 타입)
뷰 생성(Create View)
뷰를 생성할 떄는 create view 뷰이름 as (가져올 속성들을 select 합니다)
이때 가져올 속성들 이름을 그대로 사용하고 싶지 않을 경우에는 뷰이름(원하는 속성명을 적어주면 됩니다.)
연산자 사용
- 해당 테이블에서 T_Tal 이 가장 큰 회사이름과, 총액을 검색하여라
where 안에서는 총액 = max(총액)을 할 수 없으므로[where 절안에서 max, sum, avg] in을 통해서 총액이 최고 금액과 같은 값을 찾았다.
RANK() 함수 사용
1. 그룹 내에서 등수가 아닌 전체를 보고 등수를 내는 방법으론
특정 속성을 기준으로 속성별로 등수를 나눌떄는 partition by 를 사용하는데 (바로 다음에 나옴) 그게 아니라
전체를 기준으로 등수를 나눌떄는 rank() over () 안에 바로 order by 를 통해서 등수를 낼 기준을 적어주면 된다.
2. 그룹내에서 등수를 확인 하는 방법중 1) rank() 2) dense_rank()
아래 보시다 시피 그룹내에서 등급을 나누려면
rank() over ( partition by 어떤그룹별 order by 어느기준으로 등수 )
partition by 를 통해서 어떤 그룹별인지 정해주고 order by 를 통해서 어느 속성을 기준으로 등수를 낼건지 확인한다.
rank() 와 dense_rank() 의 차이는 동일한 값일경우에는 등수가 2,2,2 이렇게 나오고 그 다음 등수에서 5가 나오거나, 3이 나오거나 의 차이이다.
이때 rank()는 공동 2등 다음에는 공동 명수만큼 지나고 나서 5등이 나오는 것이고
dense_rank()는 공동 2등 다음에 바로 3등이 나오는 것이다.
3. order by 된 값을 등수로 나타냄
그룹별 소계(평균, 합계 등등) - group by 인자, group by rollup(인자), group by cube(인자)
1. group by major, sch_list ==> major, sch_list 별로 장학금의 합이 나온다.
2. group by rollup(major, sch_list) ==> major+sch_list 별 장학금의 합(3레벨), major별 장학금의 합(2레벨), 전체 장학금의 합(1레벨)
// 레벨의 단위는 인자의 갯수 +1 단위 까지 나온다.
// 이때 2레벨은 앞에 나오는 것을 기준으로 2레벨이 정해진다.
rollup(sch_list, major) 로 되었으면 major가 null이 되고 sch_list별 장학금_합이 나왔을 것이다.
3. group by cube(major, sch_list) --> major+sch_list별(4단계), major별(3단계), sch_list(2단계), 전체 상여금의 합계(1단계)
// 여기서도 마찬가지로 먼저 나오는게 3단계가 되었고 뒤에 나오는게 2단계가 나왔다. *Rollup에서는 앞에있는것만 되었음
// CUBE의 경우는 인자의 갯수만큼 2의 제곱을 해주며, 현재는 2개 이므로 2의 2승이므로 4단계로 나왔다.
'dev > DB' 카테고리의 다른 글
[DB/Oracle] TRIGGER * 바인드 입력 한번 찾아보기(찾음) (0) | 2022.04.29 |
---|---|
[DB/Oracle] Procedure, Curosr , 사용자 정의 함수 (0) | 2022.04.28 |
[DB/Oracle] ORACLE 개념 (0) | 2022.02.22 |
[DB/Oracle] SUB QUERY (0) | 2022.02.22 |
[DB/Oracle] JOIN (0) | 2022.02.19 |