본문 바로가기
교육/Oracle

Oracle 개발자 수업 39일차 - ALTER, ACCOUNT, TRANSACTION

by yhyuk 2021. 5. 24.
728x90
반응형

1. ALTER

2. ACCOUNT

3.TRANSACTION


1. ALTER

[ 정의 ]

- 테이블의 구조를 수정할때 쓰인다. (컬럼 정의 수정하기)

- 되도록이면 테이블을 수정하는 상황이 발생하면 안된다!!

 

[ ALTER 사용 시 기존 테이블 데이터 유/무 ]

  1) 기존 테이블에 데이터가 없었을 경우 > 빈 테이블 > 변동 X

  2) 기존 테이블에 데이터가 있었을 경우 > 미리 데이터 백업 > 수정 > 변수

 

[ 테이블 수정 시 주의사항 ]

  1) 새로운 컬럼 추가하기

   - 원하는 컬럼을 그냥 추가하면 된다.

CREATE TABLE TBLEDIT (
    SEQ NUMBER PRIMARY KEY,
    DATA VARCHAR2(20) NOT NULL
);

INSERT INTO TBLEDIT VALUES (1, '마우스');
INSERT INTO TBLEDIT VALUES (2, '키보드');
INSERT INTO TBLEDIT VALUES (3, '모니터');

-- 새로운 컬럼 추가하기
-- ALTER TABLE 테이블명 ADD (추가 컬럼 정의);
ALTER TABLE TBLEDIT
    ADD (PRICE NUMBER(5) NULL); -- PRICE 컬럼 추가

-- NOT NULL 컬럼 추가 시 반드시 DEFAULT값을 명시 해줘야한다.
ALTER TABLE TBLEDIT
    ADD (DESCRIPTION VARCHAR2(100) DEFAULT '임시' NOT NULL) --DESCRIPTION 컬럼 추가

 

  2) 기존 컬럼 삭제하기

   - 데이터 삭제시 PK, FK 등 고려 해봐야 한다.

-- 기존 컬럼 삭제하기
-- ALTER TABLE 테이블명 DROP COLUMN 컬럼명
ALTER TABLE TBLEDIT
    DROP COLUMN DESCRIPTION; -- DESCRIPTION 컬럼 삭제

ALTER TABLE TBLEDIT
    DROP COLUMN SEQ; --> PK값이므로, 심각하게 고민해봐야한다. (되도록 금지) 

 

  3) 기존 컬럼 수정하기

   - 컬럼명 수정: 컬럼명이 바뀌면 기존 쿼리도 바꿔야하므로 주의

   - 컬럼의 길이 수정: 기존 데이터의 길이가 변경 되므로 주의

   - 컬럼의 자료형 수정: 기존 데이터의 자료형이 있으므로 주의 (되도록 안하는 방향으로 해야함)

   - 컬럼의 제약사항 수정: 기존 데이터의 제약사항이 있으므로 주의

-- 컬럼명 수정
-- ALTER TABLE 테이블명 RENMAE COLUMN 기존컬럼명 TO 변경컬럼명
ALTER TABLE TBLEDIT
    RENAME COLUMN DATA TO NAME; -- DATA컬럼명이 NAME컬럼명으로 수정
    
-- 컬럼의 길이 수정(확장, 축소)
-- ALTER TABLE 테이블명 MODIFY(컬럼 정의);
ALTER TABLE TBLEDIT
    MODIFY (DATA VARCHAR2(100)); -- DATA컬럼의 VARCHAR2의 길이가 수정

ALTER TABLE TBLEDIT
    MODIFY (DATA VARCHAR2(20)); -- ERROR: 늘리거나 줄일 수 있지만, 기존 컬럼 데이터값에 따라 달라진다.

-- 컬럼의 자료형 수정
ALTER TABLE TBLEDIT
    MODIFY (SEQ VARCHAR2(100)); -- ERROR: 자료형 변경시 기존 컬럼 데이터 자료형에 따라 달라진다.

-- 컬럼의 제약사항 수정
ALTER TABLE TBLEDIT
    MODIFY (DATA VARCHAR2(20) NULL);

2. ACCOUNT

[ 사용자 계정 생성하기 ]

- 시스템 권한을 가지고 있는 계정만 할 수 있다.

   1) 관리자만 가능(SYS, SYSTEM, 관리자 권한을 부여받은 계정 등..) 

   2) 계정 생성 권한을 가지는 일반 계정

CREATE USER 계정명 IDENTIFIED BY 암호;
ALTER USER 계정명 IDENTIFIED BY 암호;
ALTER USER 계정명 ACCOUNT LOCK;
ALTER USER 계정명 ACCOUNT UNLOCK;
DROP USER 계정명;

 

3. TRANSACTION

[ 정의 ]

 - 트랜잭션이란 '거래'라는 뜻으로 데이터베이스 내에서 하나의 그룹으로 처리되어야 하는 명령문들을 모아 놓은 논리적인 작업 단위이다.

- 오라클에서 발생항는 1개 이상의 명령들을 하나의 논리 집합으로 묶어 놓은 단위 >  (실행된) 명령어들의 집합 > 통제(제어)

- 트랜잭션에 포함되는 명령어 (INSERT, UPDATE, DELETE) > 테이블 조작(변경)

 

[ 명령어 ]

- DCL(TCL)

- 하나의 트랜잭션으로 묶여있는 DML들을 감시하다가, 일부 DML에서 문제가 발생하면 이전에 성공한 모든 DML을 어떻게 처리할지에 대한 것

- COMMIT : 현재 트랜잭션의 모든 작업을 실제 데이터베이스(오라클)에 적용

- ROLLBACK: 현재 트랜잭션의 모든 작업을 없었던(이전의 상태) 일로 돌린다.

- SAVEPOINT: 트랜잭션을 할 작업 구간 설정

 

[ 새로운 트랜잭션이 시작하는 경우? ]

- 클라이언트가 접속한 직 후~

- COMMIT 실행 직 후 ~

- ROLLBACK 실행 직 후 ~

 

[ 현재 트랜잭션이 종료되는 경우? ]

- COMMIT 실행 직 후 ~

- ROLLBACK 실행 직 후 ~

- 클라이언트가 접속을 종료하는 경우

- DDL을 실행하는 경우(CREATE, ALTER, DROP) --> 자동적으로 COMMIT 호출


MEMO>

# DDL 객체(생성:CREATE, 삭제:DROP, 수정:ALTER)

 

# DML 데이터(생성:INSERT, 삭제:DELETE, 수정:UPDATE)

 

# 트랜잭션(ROLLBACK, COMMIT)은 한번 실행하면 취소가 안되므로 신중하게 해야한다!

 

# 테이블 구현 시 수정(ALTER)는 되도록 안하는것이 낫다. --> 굳이 해야한다면, 신중히 해야한다.

728x90
반응형

댓글