정형데이터
틀, 규격이 정해져있는 데이터, 테이블형태로 사용하는것은 거의 이종류
ex) 고객정보
비정형데이터
요즘 중요해지고있는 형태, 정형데이터를 제외한 모든데이터
ex) 빅데이터, SNS포스팅내용, 각종 로그성 데이터
관계형 데이터베이스
행,열로 구성된 우리가 익히아는 형태
계층형 데이터베이스
컴퓨터 폴더계층구조 형태
객체지향 데이터베이스
XML 데이터베이스
사실상 관계형 데이터베이스만 알면됨
관계형 데이터베이스를 조작하기위해 만든 언어
DML
select, insert, update, delete
DDL
create, alter, drop, rename, truncate
DCL
grant, revoke
TCL
commit, rollback
- DELETE 명령어는 데이터는 지워지지만 테이블 용량은 줄어 들지 않는다. 원하는 데이터만 지울 수 있다. 삭제 후 잘못 삭제한 것을 되돌릴 수 있다.
- TRUNCATE 명령어는 용량이 줄어 들고, 인덱스 등도 모두 삭제 된다. 테이블은 삭제하지는 않고, 데이터만 삭제한다. 한꺼번에 다 지워야 한다. 삭제 후 절대 되돌릴 수 없다.
- DROP 명령어는 데이블 전체를 삭제, 공간, 객체를 삭제한다. 삭제 후 절대 되돌릴 수 없다.
여기서 데이터만 삭제하는 명령인 DELETE, TRUNCATE를 비교해보자
데이터를 초기화해야 할 경우에 TRUNCATE가 속도면에서 훨씬 이점이 있다.
데이터가 많으면 사실상 DELETE는 못쓴다고 보면된다. 오래걸려서 멈춘다.
TRUNCATE가 더 좋은 이유는
트랜잭션 로그 공간을 덜 사용합니다.
DELETE 문은 행을 한번에 하나씩 제거(이거때문에 엄청난 속도차이가 생긴다)하고 삭제된 각 행에 대해 트랜잭션 로그에 항목을 기록합니다.
반면 TRUNCATE TABLE은 테이블의 데이터를 저장하는 데 사용되는 데이터 페이지의 할당을 취소하는 방식으로 데이터를 제거하며 페이지 할당 취소만을 트랜잭션 로그에 기록합니다.
일반적으로 적은 수의 잠금이 사용됩니다.
행 잠금을 사용하여 DELETE 문을 실행하면 삭제를 위해 테이블의 각 행이 잠깁니다. TRUNCATE TABLE은 항상 테이블과 페이지를 잠그지만 각 행은 잠그지 않습니다.
빈 페이지는 예외 없이 테이블에 남습니다.
DELETE 문이 실행된 후에도 테이블은 계속 빈 페이지를 포함할 수 있습니다. 예를 들어 힙의 빈 페이지는 최소한 배타적인(LCK_M_X) 테이블 잠금이 있어야만 할당 취소할 수 있으므로 삭제를 위해 테이블 잠금을 사용하지 않는 경우 테이블(힙)에는 빈 페이지가 많이 남게 됩니다. 인덱스의 경우도 삭제 작업 후에 빈 페이지가 남을 수 있지만 이러한 페이지는 백그라운드 정리 프로세스에 의해 신속하게 할당 취소됩니다.
따라서 결론은
원하는 데이터만 골라서 삭제할 때에는 DELETE 사용
전체 데이터 삭제할 때에는 TRUNCATE 사용
table
데이터저장,관리
하나의 열에는 하나의 타입, 행에는 각각의 값
view
가상테이블
index
검색용 색인
sequence
번호를자동생성, 주로키에 사용
synonym
별칭부여