본문 바로가기

DB/Oracle

[Oracle] 테이블 생성 & 테이블,컬럼 Comment & 테이블 기본키 추가 & ORA-02437 & 테이블 컬럼타입 변경

테이블 생성

 

CREATE TABLE 테이블명
(
  컬럼명 컬럼타입(바이트크기) 조건
  EXAMPLE1 VARCHAR2(4) NOT NULL,
  EXAMPLE2 CHAR(10) DEFAULT '연습' NOT NULL,
  EXAMPLE3 NUMBER(1) DEFAULT '0',
  EXAMPLE4 DATE DEFAULT SYSDATE NOT NULL
);

 

테이블 삭제 

DROP TABLE 테이블명

 

테이블 컬럼타입 변경

 

구문

ALTER TABLE 테이블명 modify 컬럼명  데이터 타입

 

EX) 

ALTER TABLE SYSACCESSPRG_HISTORY modify CHANGEMD  DATE

 

-----------------------------------------------------------------------------------------------------------------------------------------------------------------

테이블 기본키 추가 

 

방법 1

구문

ALTER TABLE 테이블명 ADD CONSTRAINT 키명 PRIMARY KEY (컬럼명,컬럼명,컬럼명)

 

EX)

ALTER TABLE SYSACCESSPRG_HISTORY ADD CONSTRAINT PK PRIMARY KEY (PROG_ID, LOGIN_ID, CHANGEGB,CHANGEMD)

방법 2

구문 

CREATE UNIQUE INDEX 키명 ON 테이블명(컬럼명,컬럼명,컬럼명)

 

EX)

CREATE UNIQUE INDEX PK ON SYSACCESSPRG_HISTORY
(PROG_ID, LOGIN_ID, CHANGEGB,CHANGEMD)

 

테이블 기본키 삭제

 

ALTER TABLE SYSACCESSPRG_HISTORY DROP PRIMARY KEY;

 

############################################################

ORA-02437: (KUP.FUNCGB)을 검증할 수 없습니다 - 잘못된 기본 키입니다.

중복된 값이 있는것을 컬럼을 기본키로 테이블을 수정해줄때 발생하는 오류

############################################################

 

 SELECT PROG_ID, LOGIN_ID, CHANGEGB,CHANGEMD,COUNT(*)
 FROM SYSACCESSPRG_HISTORY
 GROUP BY PROG_ID, LOGIN_ID, CHANGEGB,CHANGEMD
 HAVING COUNT(*) >1
 ORDER BY LOGIN_ID

 

위와같은 쿼리로 중복된 값(COUNT(*)이 2이상인 것들)을 찾아서 삭제해줘야한다.

 

-----------------------------------------------------------------------------------------------------------------------------------------------------------------

테이블 Commnet 설정

 

구문

COMMENT ON TABLE 테이블명 IS 코멘트;

 

EX) 

COMMENT ON TABLE EX_TABLE IS '예제 테이블';

 

컬럼 Comment 설정

 

구문

COMMENT ON COLUMN 테이블명.컬럼명 IS 코멘트;

 

EX)

 COMMENT ON COLUMN EX_TABLE.DEPT IS '부서';

 

Comment 삭제

 

구문

COMMENT ON TABLE 테이블명 IS '';

COMMENT ON 테이블명.컬럼명 IS '';

EX) 

COMMENT ON TABLE EX_TABLE IS '';

EX) 

COMMENT ON COLUMN EX_TABLE.DEPT IS '';