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 문장이 포함되며, 트랜잭션은 분할할 수 없는 최소의 단위이기 때문에 전부 적용되거나 혹은 전부 취소된다.
커밋이나 롤백 처리 없이 자동으로 트랜잭션 처리가 일어나는 상황이 있다.
- DDL 명령어를 실행하면 그 전후 시점에 자동으로 커밋된다.
- DML 문장 이후에 커밋 없이 DDL 문장이 시행되면 DDL 수행 전에 자동으로 커밋 된다.
- 데이터베이스를 정상적으로 접속 종료하면 자동으로 트랜잭션이 커밋된다.
- 데이터베이스가 정상적이지 않은 이유로 접속 단절 될 경우 트랜잭션이 자동으로 롤백된다.
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 |