본문 바로가기
Database

4/25 - 트랜잭션, DDL, 객체 종류

by Jiwon_Loopy 2025. 4. 27.
반응형

목차


트랜잭션


  • 논리적인 하나의 작업 단위
  • 더 이상 분할할 수 없는 최소 수행 단위
  • 커밋을 하는 순간까지 알 수 없다.
    • 커밋을 하는 순간
      • DDL
      • COMMIT
      • ROLLBACK
  • 트랜잭션 과정
select * from emp_temp

9999	홍길동	PRESIDENT		01/01/01	5000	1000	10
1111	성춘향	MANAGER	9999	01/01/05	4000		20
2111	이순신	MANAGER	9999	01/10/07	4000		20
3111	심청이	MANAGER	9999	25/04/24	4000		30
7369	SMITH	CLERK	7902	80/12/17	800		20
7876	ADAMS	CLERK	7788	87/05/23	1100		20
7900	JAMES	CLERK	7698	81/12/03	950		30

delete from emp_temp

7개 행 이(가) 삭제되었습니다.

select * from emp_temp

출력 결과 없음

rollback;

7개 행 이(가) 삭제되었습니다.

select * from emp_temp

9999	홍길동	PRESIDENT		01/01/01	5000	1000	10
1111	성춘향	MANAGER	9999	01/01/05	4000		20
2111	이순신	MANAGER	9999	01/10/07	4000		20
3111	심청이	MANAGER	9999	25/04/24	4000		30
7369	SMITH	CLERK	7902	80/12/17	800		20
7876	ADAMS	CLERK	7788	87/05/23	1100		20
7900	JAMES	CLERK	7698	81/12/03	950		30

SESSION


  • 어떤 활동을 위한 시간이나 기간
  • 접속
    • 접속의 단위
    • 브라우저 마다 다름

LOCK


  • 특정 세션에서 조작중인 데이터는 트랜잭션이 완료되기 전까지 다른 세션에서 조작할 수 없는 상태가 됨
SELECT * FROM EMP_TEMP WHERE EMPNO = '1111'
-- 다른 세션에서 성춘향의 부서를 30으로 변경
-- 여기 세션에서 트랜잭션 종료
CONMMIT;

-- 지정한 위치 롤백
UPDATE EMP_TEMP SET SAL=SAL + 1000 WHERE ENPNO = 9999;
SAVEPOINT SP1

UPDATE EMP_TEMP SET SAL=SAL + 1000 WHERE ENPNO = 9999;
SAVEPOINT SP1

UPDATE EMP_TEMP SET SAL=SAL + 1000 WHERE ENPNO = 9999;
SAVEPOINT SP1

COMMIT

데이터 정의어 (DDL)


  • 데이터베이스 데이터를 보관하고 관리하기 위해 제공되는 여러 객체의 생성, 변경, 삭제 관련 기능을 수행
  • 종류
    • CREATE
    • ALTER
    • DROP
    • RENAME
    • TRUNCATE

CREATE


  • 오라클 데이터베이스 객체를 생성하는데 사용하는 명령어
CREATE TABLE 소유 계정.테이블 이름(
	열1 이름 열1 자료형,
	열2 이름 열2 자료형
	...
	)
  • 규칙
    • 테이블 이름 생성 규칙
      • 테이블 이름은 문자로 시작
      • 테이블 이름은 30byte 이하, (한글은 15byte)
      • 같은 사용자 소유의 테이블 이름은 중복될 수 없다.
      • 테이블 이름은 영문자, 숫자. 특수 문자 $,#,_ 사용 가능
      • 예약어 사용 불가능
    • 열 이름 생성 규칙
      • 열 이름은 문자로 시작
      • 열 이름은 30byte 이하
      • 한 테이블의 열 이름은 중복될 수 없다.
      • 열 이름은 영문자, 숫자. 특수 문자 $,#,_ 사용 가능
      • 예약어 사용 불가능
  • 자료형을 각각 정의하여 새 테이블을 생성할 수 있다.
  • CREATE TABLE EMP_DDL( EMPNO NUMBER(4), ENAME VARCHAR2(10) ... ); DESC EMP_DDL;
  • 다른 테이블 복사
  • CREATE TABLE DEPT_DDL AS SELECT * FROM DEPT;
  • 기존 테이블 열 구조와 일부 데이터만 복사
  • CREATE TABLE EMP_DDL_30 AS SELECT * FROM EMP WHERE DEPTNO = 30;
  • 기존 테이블의 열 구조만 복사
  • CREATE TABLE EMPDEPT_DDL AS SELECT E.EMPNO, E.NAME, E.JOB ... FROM EMP E, DEPT D WHERE 1 <> 1;

ALTER


  • 이미 생성된 오라클 데이터베이스 객체를 변경할 때 사용
  • 새 열을 추가하거나 삭제할 때 사용
  • 새 열 추가
ALTER TABLE EMP_ALTER
	ADD HP VARCHARS(20);
  • 열 이름 변경하는 RENAME
ALTER TABLE EMP_ALTER
	RENAME COLUMN HP TO TEL;
  • ALTER 명령어로 EMPNO 열 길이 변경
ALTER TABLE EMP_ALTER
MODIFY EMPNO NUMBER(5);
  • 특정 열을 삭제할 때 사용
ALTER TABLE EMP_ALTER
DROP COLUMN TEL

테이블 이름을 변경


RENAME EMP_ALTER TO EMP_RENAME

테이블의 데이터 삭제


  • TRUNCATE
    • 데이터 전부 삭제
    • 데이터 삭제 및 초기화
    • DELETE와의 차이
      • 데이터 삭제
      • TRUNCATE - DDL (커밋), 초기화
      • DELETE - DML (커밋X)
TRUNCATE TABLE EMP_RENAME;

테이블을 삭제


  • DROP
DROP TABLE EMP_RENAME;

객체 종류


데이터 사전


  • 오라클 데이터베이스 테이블은 사용자 테이블과 데이터 사전으로 나뉨
  • 데이터베이스를 구성하고 운영하는 데 필요한 모든 정보를 저장하는 특수한 테이블로 데이터베이스가 생성되는 시점에 자동으로 만들어짐
  • 메모리, 성능, 사용자, 권한, 객체 등 데이터베이스 운영에 중요한 데이터가 보관
  • 사용자가 직접 접근하거나 작업하는 것을 허용하지 않아, 사전 데이터 베이스 뷰 제공
  • 용도에 따라 접두어를 지정하여 분류
    • USER_XXXX
      • 현재 데이터베이스에 접속한 사용자가 소유한 객체 정보
    • ALL_XXXX
      • 현재 데이터베이스에 접속한 사용자가 소유한 객체 또는 다른 사용자가 소유한 객체 중 사용 허가를 받은 객체, 즉 사용 가능한 모든 객체 정보
    • DBA_XXXX
      • 데이터베이스 관리를 위한 정보 (SYSTEM, SYS 사용자만 열람 가능)
    • V$_XXXX
      • 데이터베이스 성능 관련 정보

더 빠른 검색을 위한 인덱스


  • 데이터베이스에서 검색 성능 향상을 위해 테이블 열에 사용하는 객체
  • 검색 방식
    • Table Full Scan
    • Index Scan
SELECT * FROM USER_INDEXES;

PK_DEPT	NORMAL	TESTUSER	DEPT	TABLE	UNIQUE	DISABLED		TEST	2	255	65536	1048576	1	2147483645						10	YES							VALID				1	1	NO	N	N	N	DEFAULT	DEFAULT	DEFAULT	NO						NO				NO	NO	NO	VISIBLE		YES
PK_EMP	NORMAL	TESTUSER	EMP	TABLE	UNIQUE	DISABLED		TEST	2	255	65536	1048576	1	2147483645						10	YES							VALID				1	1	NO	N	N	N	DEFAULT	DEFAULT	DEFAULT	NO						NO				NO	NO	NO	VISIBLE		YES


  • 테이블처럼 사용
  • 하나 이상의 SELECT문을 저장한 객체
  • SELECT문을 저장하므로 물리적 데이터를 따로 저장하지는 않음
  • 용도
    • 한 번만 사용 - 서브 쿼리
    • 두고 계속 사용 - 뷰
  • 사용 목적
    • 가상의 테이블이므로 보안 목적으로도 쓰인다.
      • 보여주길 원하는 테이블만 뷰로 만들어 보여주는 방식
    • 속도적인 측면에서도 쓰인다.
      • 조인을 해놓은 뷰를 사용하면 이후에 조인 없이 SELECT만으로 조회 가능
  • 취약점
    • 실제 테이블이 업데이트 되었을 때 다시 뷰를 만들지 않으면 업데이트가 반영되지 않음

시퀀스


  • 특정 규칙에 맞는 연속 숫자를 생성하는 객체
CREATE SEQUENCE 시퀀스 이름
INCREMENT BY N
START WITH N
MAXVALUE N | NOMAXVALUE
MINVALUE N | NOMINVALUE
CYCLE | NOCYCLE
CACHE N | NACACHE

 

728x90
반응형