@@@DDL (ALTER, DROP) @@@
@@ ALTER @@
- 객체를 수정하는 구문
[표현식]
- 테이블 객체 수정시
ALTER TABLE 테이블명
수정할 내용
- 수정할 내용
1) 컬럼 추가/수정/삭제
2) 제약조건 추가/삭제
3) 컬럼 자료형 변경
4) DEFAULT 값 변경
5) 테이블명, 컬럼명 , 제약조건명 변경
@1. 컬럼 추가, 수정, 삭제
- 컬럼추가 (ADD)
ALTER TABLE 테이블명
MODIFY 컬럼명 타입(크기);
- 컬럼의 데이터 저장 크기를 수정할 때 기존에 기록된 값보다 작은 크기로는 변경 불가
- 컬럼 삭제(DROP COLUMN 컬럼명)
ALTER TABLE 테이블명
DROP COLUMN 컬럼명
- 테이블에 남아있는 커럶이 없다면 존재 의미가 없으므로 컬럼이 삭제가 되지 않음
- TCL이 작용할 수 있는 구문은 DML만 가능
DDL 구문은 버퍼에 저장하지 않고 DB에 반영되기때문에 ROLLBACK 불가능
@2. 제약조건 추가 삭제
ALTER TABLE 테이블명
ADD CONSTRAINT 제약조건명 제약조건 (컬럼명)
MODIFY 컬럼명 CONSTRAINT 제약조건명 NOT NULL;
-제약조건 삭제
ALTER TABLE 테이블명
DROP CONSTRAINT 제약조건명
-NOT NULL 제약조건 삭제방법1
ALTER TABLE 테이블명
MODIFY 컬럼명 CONSTRAINT 제약조건명 NULL;
- NOT NU@@@ DDL(ALTER, DROP) @@@
@@ALTER@@
- 객체를 수정하는 구문
[표현식]
- 테이블 객체 수정 시
ALTER TABLE 테이블명
수정할 내용
- 수정할 내용
1) 컬럼 추가/수정/삭제
2) 제약조건 추가/삭제
3) 컬럼 자료형 변경
4) DEFAULT 값 변경
5) 테이블명, 컬럼명, 제약조건명 변경
@1. 컬럼 추가, 수정, 삭제
-컬럼추가(ADD)
ALTER TABLE 테이블명
ADD (컬럼명 타입(크기));
- 컬럼수정(MODIFY)
ALTER TABLE 테이블명
MODIFY 컬럼명 타입(크기);
- 컬럼의 데이터 저장 크기를 수정할 때
기존에 기록된 값보다 작은 크기로는 변경 불가
- 컬럼 삭제(DROP COLUMN 컬럼명)
ALTER TABLE 테이블명
DROP COLUMN 컬럼명
- 테이블에 남아있는 컬럼이 없다면 존재 의미가 없으므로
컬럼이 삭제가 되지 않음
- TCL이 작용할 수 있는 구문은 DML만 가능
DDL구문은 버퍼에 저장하지 않고 DB에 반영되기때문에
ROLLBACK 불가능
- 제약조건이 설정되어 있는 컬럼 삭제
ALTER TABLE 테이블명
DROP COLUMN 컬럼명 CASCADE CONSTRAINTS;
@2. 제약조건 추가 삭제
ALTER TABLE 테이블명
ADD CONSTRAINT 제약조건명 제약조건(컬럼명)
MODIFY 컬럼명 CONSTRAINT 제약조건명 NOT NULL;
- 제약조건 삭제
ALTER TABLE 테이블명
DROP CONSTRAINT 제약조건명
- NOT NULL 제약조건 삭제방법1
ALTER TABLE 테이블명
MODIFY 컬럼명 CONSTRAINT 제약조건명 NULL;
- NOT NULL 제약조건 삭제방법2(수정)
ALTER TABLE 테이블명
MODIFY 컬럼명 NULL;
@ 3. 컬럼명, 제약조건명, 테이블명 변경
- 컬럼명 변경
(RENAME COLUMN 컬럼명 TO 변경명)
- 제약조건명 변경
(RENAME CONSTRAINT 제약조건명 TO 변경명)
- 테이블명 변경
(RENAME 테이블명 TO 변경명)
@@ DROP @@
- 데이터베이스 객체를 삭제하는 구문
- 테이블 삭제(DROP TABLE)
- 제약조건과 함께 삭제하기
DROP TABLE 테이블명
CASCADE CONSTRAINT
@@@VIEW@@@
- SELECT 쿼리 실행의 결과 화면을 저장한 객체
- 논리적인 가상테이블
- 실질적인 데이터를 저장하고 있지 않음
- 하지만 테이블을 사용하는 것과 동일하게 사용 가능
[표현식]
CREATE [OR REPLACE] [FORCE|NOFORCE] VIEW 이름
AS 서브쿼리
[WITH CHECK OPTION]
[WITH READ ONLY];
@1. VIEW 생성
- 계정에 VIEW 생성 권한이 있어야함
- 계정에 VIEW 생성 권한 부여
1. SYS AS SYSDBA로 접속 변경
2. KH 계정에 VIEW 생성 권한 부여
GRANT CREATE VIEW TO 계정;
3. 다시 KH로 접속을 변경하여 뷰 생성
- 베이스 테이블의 정보가 변경되면
해당 테이블로 인해 만들어진 VIEW의 데이터도 변경됨
- VIEW에 사용될 서브쿼리의 SELECT절에 함수가 사용된
경우 VIEW 생성시 반드시 해당 컬럼에 별칭을 지정해야함
1) 서브쿼리 안에 하던데로 별칭을 넣기
2) 생성시 뷰테이블 이름 옆에 순서대로 ()안에 별칭넣기
@ -DML 명령어로 VIEW 조작이 불가능한 경우
1. 뷰 정의에 포함되지 않은 컬럼을 조작하는 경우
2. 뷰에 포함되지 않은 컬럼 중에 베이스가 되는 컬럼이 NOT NULL 제약조건이 지정된 경우
3. 산술 표현식으로 정의된 경우
4. 그룹함수나 GROUP BY절을 포함한 경우
5. DISTINCT를 포함한 경우
6. JOIN을 이용해 여러 테이블을 연결한 경우
@ VIEW 구조 확인하기
- 사용자 정의 뷰를 확인할 수 있는 데이터 딕셔너리
USER-VIEWS
@@ VIEW 옵션
OR REPLACE
- 기존에 동일한 이름을 가진 뷰가 존재하는 경우
해당 뷰를 덮어쓰고 없는 경우 새로운 뷰를 생성함
WITH READ ONLY :
- 뷰에 대한 조회만 가능(DML불가)
@@@ SEQUENCE@@@
- 순차적으로 정수 값을 자동으로 생성하는 객체
- 자동 번호 발생기 역할을 함
-> 보통 PRIMARY KEY를 생성하는 역할에 사용됨
[표현식]
CREATE SEQUENCE 시퀀스명
① [START WITH 숫자] -> 처음 발생시킬 시작 값, 기본값 1
② [INCREMENT BY 숫자] -> 다음 값에 대한 증가치, 기본값 1
③ [MAXVALUE 숫자 | NOMAXVALUE] -> 발생시킬 최대값, 10의 27승-1까지 가능
④ [MINVALUE 숫자 | NOMINVALUE] -> 발생시킬 최소값, -10의 26승
⑤ [CYCLE | NOCYCLE] -> 시퀀스가 최대값까지 증가 완료 시
CYCLE은 START WITH 설정 값으로 돌아감
NOCYCLE은 에러 발생
⑥ [CACHE | NOCACHE] -> CACHE는 메모리 상에서 시퀀스 값 관리
기본값 20
@ SEQUENCE 사용
시퀀스명.CURRVAL : 현재 생성된 시퀀스의값
시퀀스명.NEXTVAL : 시퀀스를 증가시킨 값
★★ 시퀀스 사용시 NEXTVAL를
수행한 후에만 CURRVAL호출가능
- CURRVAL는 마지막으로 수행한 NEXTVAL의 값을
저장하여 보여주는 임시값
- 시퀀스 생성 이후 한번도 NEXTVAL를 호출하지 않으면 오류
- NEXTVAL가 시퀀스 생성 후 처음으로 수행된 경우
START WITH 값을 출력
- CURRVAL는 마지막으로 수행이 성공한 NEXTVAL 값을반환
@ SEQUENCE 사용가능
서브쿼리가 아닌 SELECT 문
INSERT문의 SELECT절
★★★ INSERT문의 VALUE절
UPDATE문의 SET절
@ 삭제
DROP SEQUENCE 시퀀스명;
@ 수정
ALTER SEQUENCE ~~~
- START WITH 값 빼고 전부 수정가능
★ CACHE
- 미리 다음 작업의 결과를 만들어 두는 메모리
- 결과가 완성되어 있기 때문에 호출시 반환만 하면되므로
- 속도가 빠름. 대신, 미리 일정 공간을 차지하고 있으므로
- 적당한 크기를 가지는 것이 중요
★ SEQUENCE에서 CACHE
- 지정된 숫자만큼 다음에 나올 NEXTVAL의 결과들을
미리 생성해둠
'study > Oracle' 카테고리의 다른 글
9_oracle_INDEX, SYNONYM (0) | 2019.11.27 |
---|---|
8_oracle_이론 정리 (0) | 2019.11.26 |
6_oracle_DML, DCL, TCL (0) | 2019.11.22 |
5_oracle_DDL(CREATE) (0) | 2019.11.21 |
5_oracle_서브쿼리 (0) | 2019.11.20 |