oracle sample database 오류 해결
지정한 월이 부적합 합니다.
to_date('17-NOV-16', 'DD-MON-RR')
월 설정 방식이 달라서 발생하는 오류
ALTER SESSION SET NLS_DATE_FORMAT='DD-MON-RRRR HH24:MI:SS';
ALTER SESSION SET NLS_DATE_LANGUAGE='AMERICAN';
ALTER SESSION SET NLS_TIME_FORMAT='HH.MI.SSXFF AM';
ALTER SESSION SET NLS_TIMESTAMP_FORMAT='DD-MON-RR HH.MI.SSXFF AM';
ALTER SESSION SET NLS_TIME_TZ_FORMAT='HH.MI.SSXFF AM TZR';
ALTER SESSION SET NLS_TIMESTAMP_TZ_FORMAT='DD-MON-RRRR HH.MI.SSXFF AM TZR';
데이블 생성 끝나고 ALTER 위에 입력해주면 위와 같은 오류는 안 뜸
database - Oracle specific timestamp format 'DD-MON-RR HH.MI.SSXFF AM' - Stack Overflow
3. 테이블 생성과 수정 그리고 삭제
3.1. 테이블의 생성
테이블 만들기
CREATE TABLE EMP2(
EMPNO(컬럼 이름) NUMBER(컬럼의 데이터 유형) CONSTRAINT emp_pk_empno PRIMARY KEY ...)
3.2 테이블의 제약조건
제약조건 설정
CREATE TABLE EMP3(
ename VARCHAR2(20) CONSTRAINT emp_nn_ename NOT NULL)
제약조건 설정 확인
SELECT CONSTRAINT_NAME FROM USER_CONSTRAINTS WHERE TABLE_NAME='EMP3'
제약조건 추가
ADD CONSTRAINT emp2_uk_deptno UNIQUE(deptno)
ex) EMP테이블의 DEPTNO에 이미 중복 숫자가 있는 경우
ADD CONSTRAINT emp2_uk_deptno UNIQUE(deptno)하면 오류 발생
제약조건 삭제
DROP CONSTRAINT emp2_uk_deptno
*uk: UNIQUE 유일성 보장
*ck: CHECK 범위 설정
CHECK comm IN (10000, 20000, 30000, 40000, 50000); 누락된 좌괄호 오류
해결방법: CHECK (comm IN (10000, 20000, 30000, 40000, 50000));
외래키 설정
ALTER TABLE EMP2 ADD CONSTRAINT EMP2_FK_DEPTNO
FOREIGN KEY (DEPTNO) REFERENCES DEPT2(DEPTNO)
3.3 오라클 데이터 타입 3.4 LOB, LONG, LONG RAW 데이터 타입 간의 비교
- VARCHAR2 타입: 가변길이 문자형 데이터 타입, 최대 2000 바이트
컬럼 길이의 편차가 심한 경우, NULL로 입력되는 경우가 많은 경우 사용
- NUMBER 타입: 숫자형 데이터 타입, 최대 38자리
- DATE 타입: 일자와 시간 저장하는 날짜형 타입
- LONG 타입: 2기가 바이트의 가변길이 문자 저장, 한 테이블에 하나만 사용 가능
VARCHAR2에 비해 제한사항이 많음
- RAW, LONG RAW, ROWID 타입: 저장과 추출만 가능
- LOB: 구조화되지 않은 데이터의 대규모 블록(텍스트, 이미지, 비디오 등)을 이진 또는 문자 형식으로 저장, 조작 가
CLOB: 문자 대형객체
BLOB: 이진 대형 객체, 이미지, 동영상 등
NCLOB: 내셔널 문자 대형 객체
BFILE: OS에 저장되는 이진 파일의 이름과 위치를 저장
*tablespace: data file이 하나 이상 모여서 생성 논리적 저장공간
3.5 테이블의 관리
TABLESPACE 생성
SELECT * FROM DBA_DATA_FILES; DATA FILE 확인
SELECT * FROM USER_SEGMENTS;
CREATE TABLESPACE TEST
DATAFILE
'C:\APP\SEONMIN\PRODUCT\21C\ORADATA\XE/TEST01.DBF'
SIZE 100M
> TABLE TEST가 생성되었습니다.
TABLESPACE 변경
ALTER TABLE emp MOVE TABLESPACE test;
TABLE 삭제
DROP TABLE emp;