TIL SQL(3)

Today 공부

  • 데이터베이스 정규화 (Database Normalization)
  • SQL 종류
  • SUBQUERY

데이터베이스 정규화 (Database Normalization)

Data redundancy(데이터 중복)
실제 데이터의 동일한 복사본이나, 부분적인 복사본을 뜻한다
이러한 중복으로 데이터를 복구할 때 더 수월할 수도 있지만 대체로 DB내에서 몇가지 문제점을 지닌다.

  • 일관된 자료 처리의 어려움
  • 저장 공간 낭비
  • 데이터 효율성 감소

Data integrity (데이터 무결성)
데이터의 수명 주기동안 정확성과 일관성을 유지하는 것
입력된 데이터가 오염되지 않고, 입력된 그대로 데이터를 사용할 수 있다는 뜻


Anomaly(데이터 이상 현상)
기대한 데이터와 다른, 이상 현상
갱신 이상(update anomaly)
여러행에 걸쳐 동일한 데이터가 있을 때, 어떤 행을 갱신해야 하는지 논리적인 일관성이 없는경우 발생
삽입 이상(insertion anomaly)
데이터를 삽입하지 못하는경우 (어떠한 컬럼의 값이 null로 지정되지 않는 이상 데이터 삽입이 안됨)
삭제 이상(deletion anomaly)
데이터 특정부분을 지울때(셀한개) 의도치 않게 다른부분도(행) 지워지는 경우


SQL 종류

  • 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
	)

좋은 웹페이지 즐겨찾기