본문 바로가기
SQL

DML, DDL, TCL

by csue 2021. 6. 6.
 

DBMS

What is DBMS? 데이터베이스를 효율적으로 관리하는 소프트웨어를 DBMS Database Management system 이라고 한다. 데이터베이스란 컴퓨터시스템에 전자방식으로 저장된 구조화된 정보 또는 데이터의 체계적

csue.tistory.com

일전에 썼던 글에서 조금 더 깊게 들어가는 내용이다.

 

관계형 데이터베이스

관게형 데이터베이스 relational database 는 메타 데이터를 관리할 수 있기 때문에 데이터의 성격, 속성, 표현 방법 등을 체계화 할 수 있고, 정규화를 통한 합리적인 테이블 모델링을 이용하여 이상 현상을 제거하고 데이터 중복을 피할 수 있으며, 데이터 표준화를 통해 데이터 품질을 확보할 수 있다는 장점을 가지고 있다.

관계형 데이터베이스는 동시성 관리, 병행 제어 등의 기능을 이용하여 많은 사용자들이 동시에 데이터베이스를 공유하고 조작할 수 있는 기능을 제공한다. 인증된 사용자들만이 참조할 수 있도록 보안 기능을 제공하고 있으며, 다양한 제약조건을 이용하여 사용자가 실수로 조건에 위배되는 데이터를 입력한다거나 중요한 데이터를 삭제하는 것을 방지하는 등의 데이터 무결성을 보장해주고 있다.

 

SQL

SQL Structured query language 은 관계형 데이터베이스에서 데이터를 정의하고 조작하고 제어하기 위해 사용하는 언어이다.

 

DML

DML data manipulation lauguage 는 데이터를 조작하는데에 사용되는 SQL 문을 의미한다.
select : 데이터를 조회하거나 검색하기 위한 명령어
insert update delete : 데이터를 조작하기 위한 명령어

 

DDL

DDL data definition language 은 데이터를 생성하거나 변경하거나 삭제하거나 이름을 바꾸는 등의 데이터 구조를 정의하는데에 사용되고 관련된 모든 명령어들을 의미한다.

create : 테이블 생성을 위한 명령어

alter : 컬럼을 추가/삭제하거나 제약조건을 추가/삭제하기 위한 명령어

rename : 테이블 명을 변경하기 위한 명령어

truncate : 테이블의 데이터를 비우기 위한 명령어. 명령 수행 시 삭제한 데이터는 roll back 이 불가능하다.

drop : 테이블 제거를 위한 명령어

  • ADD COLUMN / DROP COLUMN
ALTER TABLE 테이블이름 ADD (컬럼이름 데이터유형)
ALTER TABLE 테이블이름 DROP COLUMN 컬럼이름
  • MODIFY COLUMN

컬럼의 크기를 늘릴수는 있지만 NULL 값을 가지고 있거나 아무 행도 없는 경우를 제외하고는 줄이지 못한다.

  • ADD CONSTRAINT / DROP CONSTRAINT

제약 조건을 추가하거나 생성하는 명령어

 

주요 데이터 타입

  • CHAR(L) : 고정길이 문자열. 고정 길이를 가지고 있으므로 할당된 변수의 값이 L값보다 작을 경우 그 차이만큼 공백으로 채워진다.
  • VARCHAR2(L) : 가변길이 문자열. L만큼의 최대 길이를 가지며, L값보다 작을 경우 해당 값 만큼만 공간을 차지한다.
  • NUMBER(L, D) : 정수, 실수를 저장한다. L 값은 전체 자리수, D 값은 소수점 자리수를 의미한다.
    예를 들어 number(3,3) 으로 지정되어 있을 때, . 을 기점으로 정수와 소수의 개수 합이 3, 소수의 개수가 3이어야 된다는 뜻이다. 즉, 해당 값 안에 들어가는 value 는 0.nnn 이어야 한다.
  • DATE : 날짜와 시각정보 "년월일시분초" 를 표현한다.

테이블 네임

테이블 명은 단수형을 권고한다. 다른 테이블과 이름이 중복되어서는 안되며, 한 테이블 내에서는 중복되는 컬럼 명을 사용할 수 없다. 테이블 명과 컬럼 명은 반드시 문자로 시작해야 하며, A-Z, a-z, 0-9, _ $ # 의 문자들만 허용한다.

제약 조건

  • 기본 키 : 테이블에 저장된 행을 고유하게 식별하기 위해 사용되며 하나의 테이블에 단 하나의 기본키만 정의 가능하다. 기본키를 생성하게 되면 DBMS 는 자동으로 UNIQUE 인덱스를 생성하며, 기본키 컬럼에는 NULL 을 입력할 수 없다.
  • 고유 키 : 테이블에 저장된 행 데이터를 고유하게 식별하기 위해 생성된다. NULL 입력이 가능하다.
  • NOT NULL
  • CHECK : 입력할 수 있는 값 종류 및 범위를 제한한다. CONSTRAINT 제약조건이름 CHECK 컬럼명 등의 형태로 사용한다.
  • 외래 키 : Foreign key

 

TCL

TCL Transacton control language
트랜잭션은 데이터베이스의 논리적 연산단위이다. 하나의 트랜잭션에는 하나 이상의 SQL 문장이 포함되며, 트랜잭션은 분할할 수 없는 최소의 단위이기 때문에 전부 적용되거나 혹은 전부 취소된다.

커밋이나 롤백 처리 없이 자동으로 트랜잭션 처리가 일어나는 상황이 있다.

  1. DDL 명령어를 실행하면 그 전후 시점에 자동으로 커밋된다.
  2. DML 문장 이후에 커밋 없이 DDL 문장이 시행되면 DDL 수행 전에 자동으로 커밋 된다.
  3. 데이터베이스를 정상적으로 접속 종료하면 자동으로 트랜잭션이 커밋된다.
  4. 데이터베이스가 정상적이지 않은 이유로 접속 단절 될 경우 트랜잭션이 자동으로 롤백된다.

commit

commit 명령어를 통해서 트랜잭션을 완료할 수 있다.
커밋 이전의 데이터는 단지 메모리 buffer 에만 영향을 받았기 때문에 변경 이전 상태로 복구가 가능하다. 현재 사용자는 select 문장으로 결과를 확인할 수 있지만 다른 사용자는 현재 사용자가 수행한 명령의 결과를 볼 수 없고, 변경된 행에는 잠금LOCKING 이 설정되어 있으므로 변경할 수도 없다.
커밋 이후에는 변경 사항이 데이터베이스에 반영되고, 이전 데이터는 영원히 잃어버리게 된다. 모든 사용자는 결과를 볼 수 있으며 다른 사용자들이 조작할 수 있도록 관련된 행에 대한 잠금이 풀린다.

rollback

테이블 내에 입력한 데이터나 수정한 데이터, 삭제한 데이터에 대한 변경 사항을 취소할 수 있는 기능으로, 커밋 이전의 사항에만 적용된다.

save point

save point 를 정의하면 롤백할 때 트랜잭션에 포함된 전체 작업을 롤백하는 것이 아니라 현 시점에서 save point 로 지정해 둔 부분까지만 롤백할 수 있다.

'SQL' 카테고리의 다른 글

함수(Function)  (0) 2021.07.11
SQL 명령어 :: WHERE  (0) 2021.07.11
성능 데이터 모델링  (0) 2021.05.21
정규화  (0) 2021.05.17
데이터 모델링의 3요소와 식별자  (0) 2021.05.13