DAY17(2) - DDL, DML, TCL

은나현·2023년 2월 14일
0

📌 1. 데이터 정의어(DDL)

  • DDL은 데이터 정의어 Data Definition Language의 약자이다. 데이터의 구조를 정의하기 위한 테이블 생성, 삭제와 같은 명령어가 포함된다. CREATE, DROP, ALTER, TRUNCATE 등이 있다.

📍 1-1. CREATE

  • 테이블을 생성할 때 사용하는 명령어이다.
  • 테이블의 이름을 정한 뒤 괄호() 안에 테이블에 포함될 열과 각 열의 데이터 타입을 나열한다.
    • CREATE TABLE EMPLOYEES(
      	EMPLOYEE_ID	NUMBER(10),
      	NAME 		VARCHAR2(20),
      	SALARY		NUMBER(7,2)
      );
  • AS를 사용해 이미 존재하는 테이블을 복사한 테이블을 생성할 수 있다.
    • CREATE TABLE EMPLOYEES2
      AS
      SELECT * FROM EMPLOYEES e ;
      );

📍 1-2. ALTER

  • 테이블을 수정할 때 사용하는 명령어이다.
  • ADD를 사용해 테이블에 컬럼을 추가할 수 있다.
    • ALTER TABLE EMPLOYEES ADD(
      	MANAGER_ID	VARCHAR2(10)
      );
  • MODIFY를 사용해 존재하는 컬럼을 수정할 수 있다.
    • ALTER TABLE EMPLOYEES MODIFY(
      	MANAGER_ID  VARCHAR2(20)
      );
  • RENAME COLUMN ~ TO ~를 사용해 컬럼의 이름을 수정할 수 있다.
    • ALTER TABLE EMPLOYEES RENAME COLUMN NAME TO EMP_NAME;

📍 1-3. DROP

  • 테이블을 삭제할 때 사용하는 명령어이다.
  • 테이블의 존재 자체가 삭제되며 로그가 남지 않는다.
    • DROP TABLE EMPLOYEES2 ;
  • ALTER와 함께 사용하면 테이블에 존재하는 컬럼을 삭제할 수 있다.
    • ALTER TABLE EMPLOYEES DROP COLUMN MANAGER_ID;

📍 1-4. TRUNCATE

  • 테이블을 비울 때 사용하는 명령어이다.
  • 테이블의 존재는 남고, 포함된 모든 레코드가 제거되며 로그가 남지 않는다.
  • 테이블을 DROP 했다가 CREATE 하는 작업으로 모든 행을 삭제할 때는 가장 빠르고 효율적인 작업이다.
    • TRUNCATE TABLE EMPLOYEES;

📌 2. 데이터 조작어(DML)

  • DML은 데이터 조작어 Data Manipulation Language의 약자이다. 데이터의 조회 및 변형을 위한 명령어로, SELECT, INSERT, UPDATE, DELETE 등이 있다.

📍 2-1. SELECT

📍 2-2. INSERT

  • 데이터를 입력할 때 사용하는 명령어이다.
  • INSERT INTO 다음 데이터를 입력할 테이블을 지정한다.
  • 전체 컬럼에 값을 입력할 때는 VALUES만 나열하면 되고, 특정 컬럼에 값을 입력할 때는 테이블명 뒤에 컬럼을 함께 명시해야 한다.
    • INSERT INTO EMPLOYEES VALUES (1,'테스트',30000);					// 전체 컬럼
       INSERT INTO EMPLOYEES(EMPLOYEE_ID, EMP_NAME) VALUES (2,'테스트2');	// 특정 컬럼

📍 2-3. UPDATE

  • 데이터를 수정할 때 사용하는 명령어이다.
  • UPDATE 테이블명 SET 다음 수정할 컬럼과 대입할 값을 나열해서 사용한다. 주로 WHERE으로 수정할 데이터 조건을 지정한다.
    • UPDATE 	SAMPLE SET DEPTNO = 50, DEPTLOC = '인천'
       WHERE 		DEPTNO = 30;
      // DEPTNO 컬럼값이 30인 데이터의 DEPTNO를 50, DEPTLOC을 인천으로 수정한다.

📍 2-4. DELETE

  • 데이터를 삭제할 때 사용하는 명령어이다.
  • DELETE 다음 데이터를 삭제할 테이블을 명시한다. 조건에 해당하는 것만 지울 수도 있고, 전체를 지울 수도 있다. 조건을 지정할 때는 WHERE로 지정한다.
  • DELETE 다음 테이블 이름만을 지정하면 해당 테이블을 삭제한다. 한 줄 한 줄 삭제하는 명령어이므로 시간상으로는 가장 느린 작업이지만, 삭제 로그를 남긴다.
    • DELETE	 SAMPLE
       WHERE 	 DEPTNAME = '영업부';
       // SAMPLE 테이블에서 DEPTNAME 컬럼값이 영업부인 데이터를 삭제한다.
       DELETE	 SAMPLE;
       // SAMPLE 테이블 전체를 삭제한다.

📌 3. 트랜잭션 제어어(TCL)

  • TCL은 트랜잭션 제어어 Transaction Control Language의 약자이다. 트랜잭션이란 작업단위를 뜻하며, TCL은 논리적인 DML(데이터 조작)작업의 단위를 묶어서 제어하는 명령어이다. COMMIT, ROLLBACK, SAVEPOINT 등이 있다.
  • 데이터 무결성이 보장되고, 논리적으로 연관된 작업을 그룹화할 수 있다는 장점이 있다.

📍 3-1. COMMIT

  • 모든 작업을 정상적으로 처리하겠다고 확정하는 명령어로, COMMIT을 수행하면 하나의 트랜잭션 과정을 종료하게 된다.
  • COMMIT 실행 시에 트랜잭션 작업으로 변경된 내용을 실제 DB에 영구 저장하게 되며, 모든 사용자가 변경한 데이터의 결과를 볼 수 있게 된다.
  • 주로 AUTO COMMIT 기능으로 DB를 자동 저장하지만, 수동으로 COMMIT을 하고자 할 때는 AUTO COMMIT을 해제하고 데이터 조작 작업을 한 다음 COMMIT;을 실행하면 된다.
    • 항상 자동으로 COMMIT되는 경우
      • DDL문 또는 DCL
      • 작업 후 COMMIT하지 않고 DBMS가 정상적으로 종료되었을 때

📍 3-2. ROLLBACK

  • 트랜잭션의 처리 과정에서 변경 사항을 취소하고 트랜잭션으로 인한 하나의 묶음처리가 시작되기 이전의 상태로 되돌리는 명령어이다.
  • 이전 COMMIT한 곳까지만 복구한다.
  • 트랜잭션 작업 중 하나라도 문제가 발생하면 모든 작업을 취소해야 하므로 트랜잭션은 하나의 논리적인 작업 단위로 구성해 놓아야 한다.
  • ROLLBACK;으로 실행한다.
  • DBMS가 비정상적으로 종료될 시 자동 ROLLBACK이 일어난다.

📍 3-3. SAVEPOINT

  • ROLLBACK을 실행할 경우 해당 트랜잭션이 전부 취소되는데, 이 때 SAVEPOINTROLLBACK TO를 사용해 정해진 시점까지만 되돌아갈 수 있다.
  • SAVEPOINT savepoint명;으로 트랜잭션 내에 SAVEPOINT를 지정하고, ROLLBACK TO savepoint명;으로 해당 지점으로 돌아간다. SAVEPOINT 지점 이후에 이루어진 작업들만 취소된다.
    • ...작업 ... 
      SAVEPOINT savepoint1;
      ...작업 ... 					// 이 부분의 작업들이 취소된다.
      ROLLBACK TO savepoint1;

0개의 댓글