Data redundancy(데이터 중복)
실제 데이터의 동일한 복사본이나, 부분적인 복사본을 뜻한다
이러한 중복으로 데이터를 복구할 때 더 수월할 수도 있지만 대체로 DB내에서 몇가지 문제점을 지닌다.
- 일관된 자료 처리의 어려움
- 저장 공간 낭비
- 데이터 효율성 감소
Data integrity (데이터 무결성)
데이터의 수명 주기동안 정확성과 일관성을 유지하는 것
입력된 데이터가 오염되지 않고, 입력된 그대로 데이터를 사용할 수 있다는 뜻
Anomaly(데이터 이상 현상)
기대한 데이터와 다른, 이상 현상
갱신 이상(update anomaly)
여러행에 걸쳐 동일한 데이터가 있을 때, 어떤 행을 갱신해야 하는지 논리적인 일관성이 없는경우 발생
삽입 이상(insertion anomaly)
데이터를 삽입하지 못하는경우 (어떠한 컬럼의 값이null
로 지정되지 않는 이상 데이터 삽입이 안됨)
삭제 이상(deletion anomaly)
데이터 특정부분을 지울때(셀한개) 의도치 않게 다른부분도(행) 지워지는 경우
- DDL
데이터를 정의할 때 사용하는 언어, DB의 테이블과 같은 오브젝트를 정의할 때 사용 (CREATE
,DROP
등
)- DML
DB에 데이터를 저장할 때 사용하는 언어 (INSERT
,DELETE
,UPDATE
등
)- DCL
DB에 대한 접근 권한과 관련된 문법 (RANT
,REVOKE
등)- DQL
정해진 스키마 내에서 쿼리할 수 있는 언어 (SELECT
등)- TCL
DML을 거친 데이터의 변경사항을 수정
COMMIT
처럼 DML이 작업한 내용을 데이터베이스에 커밋하거나,
ROLLBACK
처럼 커밋했던 내용을 다시 롤백하는 문법
SUBQUERY
쿼리문을 작성할 때, 다른 쿼리문을 포함할 수 있다.
이 때 포함되는 다른 쿼리문을 SUBQUERY(서브쿼리)다.
서브쿼리는 실행되는 쿼리에 중첩으로 위치해, 정보를 전달한다.
서브쿼리는 소괄호로 감싸야 한다.SELECT CustomerId, CustomerId = (SELECT CustomerId FROM customers WHERE CustomerId = 2) FROM customers WHERE CustomerId < 6
IN, NOT IN
IN은 특정한 값이 서브쿼리에 있는지 확인할 수 있다.
SELECT * FROM customers WHERE CustomerId IN (SELECT CustomerId FROM customers WHERE CustomerId < 10)
FROM 에서 사용
SELECT * FROM ( SELECT CustomerId FROM customers WHERE CustomerId < 10 )