- GROUP BY 절에 사용하는 함수
- ROLLUP 함수 : 그룹으로 묶기 위한 조건이 1개 이상인 경우에 사용하며 그룹에 대한 소계, 총계를 추가로 생성함
함수에 작성한 컬럼 순서대로 1개 컬럼에 대한 집계, 2개 컬럼에 대한 집계를 생성함
- CUBE 함수 : 그룹으로 묶기 위한 조건이 1개 이상인 경우에 사용하며 그룹에 대한 소계, 총계를 추가로 생성함
함수에 작성한 컬럼의 조합 가능한 모든 집계를 생성함
- GROUPING 함수 : ROLLUP, CUBE 함수를 사용하여 나타낸 집계에 대해 어떤 컬럼을 기준으로 그룹화 했는지 구분
할 수 있도록 해주는 함수. 함수 실행 결과 0 이 나오면 해당 컬럼이 사용됨을 알 수 있음
- GROUPING SETS : GROUP BY 로 집계한 여러 Record Set 결과를 하나의 Record Set 결과로 합칠 때 사용
- 집합 연산자
- 2개 이상의 Record Set 결과를 하나의 Record Set 결과로 만드는 연산자
- UNION, UNION ALL, INTERSECT, MINUS 연산자가 있다.
- UNION : 합집합. 중복된 결과는 하나만 반영함
- UNION ALL : 합집합. 중복된 결과까지 전부 반영함
- INTERSECT : 교집합
- MINUS : 차집합
- DDL
- 데이터 정의어. 데이터를 저장하고 다루기 위한 객체를 생성(CREATE),수정(ALTER),삭제(DROP) 하는 구문 제공
- ORACLE 에서 사용하는 객체로는 TABLE, SEQUENCE, VIEW, USER, PROCEDUAL, FUCNTION 등이 있다
- TABLE
CREATE TABLE <테이블명> (
<컬럼명1> <데이터타입> [제약조건]
, <컬럼명2> <데이터타입> [제약조건]
. . .
) ;
- 데이터 타입
CHAR(크기) : 고정길이 문자 타입, 크기는 바이트 단위 입력. 최대 2000Byte 저장 가능 (한글은 3바이트 처리)
문자의 길이로 크기 정하는 경우 CHAR(크기 CHAR) 형식 사용
VARCHAR2(크기) : 가변길이 문자 타입. 크기는 바이트 단위 입력. 최대 4000Byte 저장 가능 (한글은 3바이트)
문자의 길이로 크기 정하는 경우 VARCHAR2(크기 CHAR) 형식 사용
예상되는 가장 큰 문자 길이로 크기 CHAR 을 정하면 된다.
NUMBER : 숫자타입 (실수도 숫자타입에 포함됨)
NUMBER(크기, [소수점자리수]) : 지정한 소수점 자리수의 실수 데이터 저장 가능
NUMBER(5,2) → 정수 3자리, 소수점 2자리 범위로 저장 가능
DATE : 날짜 타입
LONG : 가변길이 문자 타입. 2GB 까지 저장 가능
LOB : 가변길이 바이너리 타입. 2GB 까지 저장 가능
BLOB : 대용량 데이터 저장용 객체, 4GB 까지 저장 가능(바이너리 타입)
CLOB : 대용량 데이터 저장용 객체, 4GB 까지 저장 가능(문자타입)
TIMESTAMP : 타임스탬프 타입(날짜 타입의 확장)
- 제약 조건
NOT NULL : NULL 데이터 저장을 허용하지 않음
UNIQUE : 중복값 저장을 허용하지 않음 (NULL 에 대해서는 중복 체크 하지 않는다.)
PRIMARY KEY : NULL, 중복값 저장을 허용하지 않음 (NOT NULL + UNIQUE 결합), 기본키 라고 함
FOREIGN KEY : 참조하는 테이블의 컬럼의 값이 존재하는 경우에만 허용 (다른 테이블의 값을 참조)
외래키 라고 함
CHECK : 지정된 값만 저장할 수 있게 만드는 용도
DEFAULT : (제약 조건이 아니나 제약 조건이 작성되는 부분에 사용되니 여기에 작성)
기본값을 설정하여 데이터 추가 작업에 누락이 되어 있어도 기본값이 저장되도록 함
#위의 제약 조건을 위반하는 데이터의 추가/수정/삭제 작업이 이루어지는 경우 "제약조건 위반"이라는 에러발생
- 제약 조건 작성 방법
컬럼 레벨 : 컬럼명, 데이터 타입 옆에 작성하는 것
기본키, 유니크키, 외래키, NOT NULL, CHECK, DEFAULT 가 해당
테이블 레벨 : 컬럼명, 데이터 타입 처럼 쉼표 이후에 작성하는 것. 단, 모든 컬럼정보 작성 후 제약조건을 작성한다
기본키, 유니크키, 외래키, CHECK 가 해당
# 추가 내용
- 참조하는 키에는 유니크 또는 기본키 설정이 되어 있어야 한다.
- 자식 레코드에서 부모 레코드를 참조하는게 있으면 부모 레코드는 삭제가 안된다
- ON DELETE SET NULL 을 사용하면 참조값이 있어도 삭제 가능. 삭제하면 NULL 값이 반환된다.
- ON DELETE CASCADE 을 사용하면 부모 레코드를 지우면 그를 참조하는 자식 레코드도 제거된다.
- 외래키 참조할 때는 자식 테이블 먼저 지우고 부모 테이블을 지워야 오류가 나지 않는다
'국비' 카테고리의 다른 글
11.16 국비학원 30일차 (평가3) (0) | 2022.11.19 |
---|---|
11.15 국비학원 29일차 (ALTER TABLE, INSERT, UPDATE, DELETE, INSERT ALL INTO) (0) | 2022.11.16 |
11.11 국비학원 27일차 (숫자,날짜,형변환 함수, 그룹함수, GROUP BY 절, HAVING절) (0) | 2022.11.12 |
11.10 국비학원 26일차 (SELECT구문, 연산자, 단일함수) (0) | 2022.11.11 |
11.9 국비학원 25일차 (도커 설치) (0) | 2022.11.10 |