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)는 되도록 안하는것이 낫다. --> 굳이 해야한다면, 신중히 해야한다.
'인천일보아카데미 > - 학습일지' 카테고리의 다른 글
[학습일지]JAVA교육일지 52일차 (0) | 2022.06.24 |
---|---|
[학습일지]JAVA교육일지 51일차 (0) | 2022.06.24 |
[학습일지]JAVA교육일지 49일차 (0) | 2022.06.21 |
[학습일지]JAVA교육일지 48일차 (0) | 2022.06.20 |
[학습일지]JAVA교육일지 47일차 (0) | 2022.06.20 |