개발/database

테이블 추가/수정/삭제 시 참고사항

issac 2021. 2. 23. 12:11
/*
 * TABLE 추가/수정/삭제
 */
-- 테이블 생성
CREATE TABLE [TABLE NAME]
(
  [COLUMN NAME] [DATA TYPE] [CONSTRAINT] [NULL | NOT NULL],
  [COLUMN NAME] [DATA TYPE] [CONSTRAINT] [NULL | NOT NULL]
)
-- 테이블 생성 Example
CREATE TABLE T_USER
(
   INDEX_NO NUMBER(22,0) NOT NULL,
   U_ID VARCHAR2(22) NOT NULL,
   F_USE_YN VARCHAR2(1) DEFAULT 'Y' NOT NULL,
   D_LOGIN DATE NULL,
   D_INPUT DATE DEFAULT SYSDATE  NOT NULL
)
-- 테이블 SCHEMA 조회
SELECT A.OWNER, A.TABLE_NAME, A.COLUMN_ID, A.COLUMN_NAME, B.COMMENTS, A.DATA_TYPE, DATA_LENGTH, A.NULLABLE
   FROM ALL_TAB_COLUMNS A
           , ALL_COL_COMMENTS B
  WHERE A.TABLE_NAME = B.TABLE_NAME
      AND A.COLUMN_NAME = B.COLUMN_NAME
      AND A.OWNER = '[USER]'
      AND A.TABLE_NAME LIKE '[TABLE NAME]%'
 ORDER BY A.TABLE_NAME, A.COLUMN_ID
 
-- 테이블명 변경(8i 이상)
RENAME [변경전 TABLE_NAME] TO [TABLE_NAME] ;
-- 테이블 복사
CREATE TABLE [CREATE TABLE] AS SELECT * FROM [TABLE];
 
/*
 * TABLE COLUMN 추가/수정/삭제
 */
-- 컬럼 추가
ALTER TABLE [TABLE_NAME] ADD ([COLUMN_NAME] [DATA_TYPE] [CONSTRAINT] [NULL|NOT NULL] );
-- 컬럼명 변경
ALTER TABLE [TABLE_NAME] RENAME COLUMN [COLUMN_NAME] TO [COLUMN_NAME];
-- 컬럼타입 변경
ALTER TABLE [TABLE_NAME] MODIFY ( [COLUMN_NAME] [DATA_TYPE] [NULL|NOT NULL] );
-- 컬럼 삭제
ALTER TABLE [TABLE_NAME] DROP COLUMN [COLUMN_NAME] ;
-- PK 삭제
ALTER TABLE [TABLE_NAME] DROP PRIMARY KEY CASCADE;
 
/*
 * CONSTRAINT 추가/수정/삭제
 */
-- 제약 조건명 지정없이 UNIQUE 제약조건 추가
ALTER TABLE [TABLE_NAME] ADD UNIQUE ([COLUME_NAME]);
-- 제약 조건명 지정하여 UNIQUE 제약조건 추가
ALTER TABLE [TABLE_NAME] ADD CONSTRAINT [CONSTRAINT_NAME] UNIQUE ([COLUME_NAME]);
 
-- PRIMARY KEY 제약조건 추가
ALTER TABLE [TABLE_NAME] ADD PRIMARY KEY([COLUME_NAME]);  
-- 테이블의 PRIMARY KEY 제약조건 삭제
ALTER TABLE [TABLE_NAME] DROP PRIMARY KEY:
-- 제약조건 삭제
ALTER TABLE [TABLE_NAME] DROP CONSTRAINT [CONSTRAINT_NAME];
 
/*
 * DROP
 */
-- 테이블 삭제
DROP TABLE [TABLE_NAME];
-- 테이블과 관련 제약조건 일괄삭제
DROP TABLE [TABLE_NAME] CASCADE CONSTRAINTS;
-- 프로시져 삭제
DROP PROCEDURE [PROCEDURE_NAME];
-- 인덱스 삭제
DROP INDEX [INDEX_NAME];
 
/*
 * COMMENT 추가/삭제
 */
-- 테이블 코멘트 추가
COMMENT ON TABLE  [TABLE NAME] IS '[COMMENT]';
-- 테이블 컬럼 코멘트 추가
COMMENT ON COLUMN [TABLE NAME].[COLUME NAME] IS '[COMMENT]' ;
-- 테이블 코멘트 삭제
COMMENT ON TABLE [TABLE NAME]IS '';
-- 테이블 코멘트 조회
SELECT A.TABLE_NAME, B.COMMENTS
   FROM ALL_TABLES A
           , ALL_TAB_COMMENTS B
 WHERE A.TABLE_NAME = B.TABLE_NAME
      AND A.TABLE_NAME LIKE '[TABLE NAME]%'
 ORDER BY A.TABLE_NAME
-- 테이블 컬럼 코멘트 조회
SELECT * FROM ALL_COL_COMMENTS WHERE TABLE_NAME = '[TABLE NAME]';


출처: https://devworks.tistory.com