상세 컨텐츠

본문 제목

Oracle - DEFAULT 표현식 실습

IT/DBMS

by TMI1 2025. 7. 9. 16:30

본문

--■■■ DEFAULT 표현식■■■--
-- 1. INSERT와 UPDATE 구문에서
--    사용자가 전달하는 특정 값이 아닌 
--    기본적으로 설정된 값을 입력하거나 수정할 수 있도록 처리할 수 있다.
-- 2. 형식 및 구조
-- 컬럼명 데이터타입 DEFAULT 기본값
-- 3.  INSERT 명령 시 해당 컬럼에 입력될 값을 할당하지 않거나
--     DEFAULT 키워드를 활용하여 기본으로 설정된 값을 입력하도록 할 수 있다. 
-- 4. DEFAULT키워드와 다른 제약(NOT NULL 등) 표기가 함께 사용되어야 하는 경우
--    DEFAULT 키워드를 먼저 표기(작성)할 것을 권장한다.

CREATE TABLE TBL_BOARD                                   --  게시판 테이블 생성   
(   SID        NUMBER           PRIMARY KEY              -- 게시물 번호 → 식별자(자동 증가)
,   NAME       VARCHAR2(30)                              -- 게시물 작성자
,   CONTENTS   VARCHAR2(2000)                             -- 게시물 내용
,   WRITEDAY   DATE             DEFAULT SYSDATE NOT NULL  -- 게시물 작성일(현재 날짜시간 자동 입력)
--== ,   WRITEDAY   DATE        NOT NULL DEFAULT SYSDATE -- 위의 케이스로 쓰는것이 좋음 
,   COMMENTS   NUMBER           DEFAULT 0       NOT NULL  -- 게시물 댓글 갯수(기본값0)
,   COUNTS     NUMBER           DEFAULT 0       NOT NULL  -- 게시물 조회수(기본값 0) 
);
--==>> Table TBL_BOARD이(가) 생성되었습니다.

--※ SID 를 자동 증가하는 값으로 운영하려면 시퀀스(SEQUENCE) 객체가 필요하다.
--   자동으로 입력되는 컬럼은 사용자가 입력해야 하는 항목에서
--   제외시킬 수 있다.

-- 시퀀스 생성
CREATE SEQUENCE SEQ_BOARD
NOCACHE;
--==>> Sequence SEQ_BOARD이(가) 생성되었습니다.

-- 날짜 형식 관련 세션 설정 변경
ALTER SESSION SET NLS_DATE_FORMAT = 'YYYY-MM-DD HH24:MI:SS';
--==>> Session이(가) 변경되었습니다.

-- 게시물 작성 
INSERT INTO TBL_BOARD(SID, NAME, CONTENTS, WRITEDAY, COMMENTS, COUNTS)
VALUES(SEQ_BOARD.NEXTVAL, '김주영', '오라클에서 DEFAULT 표현식 실습중.'
    ,  TO_DATE('2025-07-09 16:06:23', 'YYYY-MM-DD HH24:MI:SS'), 0, 0);

INSERT INTO TBL_BOARD(SID, NAME, CONTENTS, WRITEDAY, COMMENTS, COUNTS)
VALUES(SEQ_BOARD.NEXTVAL, '이동우', '앞자리로 좌석이동.', DEFAULT,DEFAULT,DEFAULT);
    
INSERT INTO TBL_BOARD(SID, NAME, CONTENTS)
VALUES(SEQ_BOARD.NEXTVAL, '이인주', '감기약 복용완료.');    
      
SELECT *
FROM TBL_BOARD;

COMMIT;    
--==>> 커밋

--○ DEFAULT 표현식 조회(확인)
SELECT *
FROM USER_TAB_COLUMNS
WHERE TABLE_NAME ='TBL_BOARD';
/*
TBL_BOARD	SID	NUMBER			22			N	1											
TBL_BOARD	NAME	VARCHAR2			30			Y	2											CHAR_CS
TBL_BOARD	CONTENTS	VARCHAR2			2000			Y	3											CHAR_CS
TBL_BOARD	WRITEDAY	DATE			7			N	4	8	SYSDATE 									
TBL_BOARD	COMMENTS	NUMBER			22			N	5	8	0       									
TBL_BOARD	COUNTS	NUMBER			22			N	6	8	0       									
*/

SELECT TABLE_NAME, COLUMN_NAME, DATA_TYPE, DATA_DEFAULT
FROM USER_TAB_COLUMNS
WHERE TABLE_NAME ='TBL_BOARD';
/*
TBL_BOARD	SID	NUMBER	
TBL_BOARD	NAME	VARCHAR2	
TBL_BOARD	CONTENTS	VARCHAR2	
TBL_BOARD	WRITEDAY	DATE	SYSDATE 
TBL_BOARD	COMMENTS	NUMBER	0       
TBL_BOARD	COUNTS	NUMBER	0       
*/

--○ 테이블 생성 이후 DEFAULT 표현식 추가 / 변경
ALTER  TABLE 테이블명
MODIFY 컬럼명 [자료형] DEFAULT 기본값; 

--○ 생성된 DEFAULT 표현식 제거(삭제)
ALTER TABLE 테이블명
MODIFY 컬럼명 [자료형] DEFAULT NULL;

'IT > DBMS' 카테고리의 다른 글

Oracle - UPDATE 실습2  (0) 2025.07.10
Oracle - UPDATE 실습1  (0) 2025.07.10
Oracle - NOT NULL 실습  (1) 2025.07.09
Oracle - FOREIGN KEY 설정 실습  (0) 2025.07.09
Oracle - PRIMARY KEY 설정 실습  (0) 2025.07.09

관련글 더보기

댓글 영역