(W2D4) 데이터베이스(4)

INSERT/UPDATE/DELETE

INSERT

  • 테이블에 레코드 추가
INSERT INTO 테이블이름(필드1, 필드2, ...) VALUES(1,2, ...)

-- 테이블 정의할 때 순서와 동일할 때
INSERT INTO 테이블이름 VALUES(1,2, ...)

DELETE

  • 조건을 기반으로 테이블에서 레코드 삭제 혹은 모든 레코드 삭제

    • 테이블은 계속 존재한다.
  • DELETE FROM vs TRUNCATE

    • TRUNCATE는 조건없이 모든 레코드를 삭제한다. 속도가 빠른 대신 트랜잭션 사용 시 롤백이 불가능하다.
DELETE FROM 테이블 WHERE 조건;
DELETE FROM 테이블;

UPDATE

  • 조건을 기반으로 테이블에서 특정 레코드(들)의 필드 값 수정
UPDATE 필드1
SET 레코드값 = 123
WHERE 조건;

JOIN

  • SQL JOIN은 두 개 이상의 테이블들을 공통 필드를 가지고 통합한다.

    • 스타 스키마로 구성된 테이블들로 분산되어 있던 정보를 통합하는데 사용한다.
  • JOIN의 결과로 양쪽의 필드를 모두 가진 새로운 테이블이 만들어진다.

    • 조인의 방식에 따라 다음 두 가지가 달라진다.
    • 어떤 레코드들이 선택되는지
    • 어떤 필드들이 채워지는지
  • JOIN 시 고려해야할 점

    • 중복 레코드가 없고 Primary Key의 uniqueness가 보장됨을 체크한다.
    • 조인하는 테이블들간의 관계를 명확하게 정의
    • One to one
    • One to many
    • Many to one
    • Many to many
    • 어느 테이블을 베이스로 잡을지(From에 사용할지) 결졍해야한다.
  • JOIN의 종류

    • INNER JOIN
    • 양쪽 테이블에서 매치가 되는 레코드들만 리턴
    • 양쪽 테이블의 필드가 모두 채워진 상태로 리턴
    • LEFT JOIN
    • 왼쪽 테이블의 모든 레코드들을 리턴
    • 오른쪽 테이블의 필드는 왼쪽 레코드와 매칭되는 경우에만 채워진 상태로 리턴
    • RIGHT JOIN
    • FULL OUTER JOIN
    • MySQL은 지원하지 않음 -> LEFT JOIN과 RIGHT JOIN을 UNION하는 것으로 대신할 수 있음
    • 왼쪽 테이블과 오른쪽 테이블의 모든 레코드들을 리턴
    • 매칭되는 경우에만 양쪽 테이블들의 모든 필드들이 채워진 상태로 리턴
    • SELF JOIN
    • 동일한 테이블을 alias를 달리해서 자기 자신과 조인
    • CROSS JOIN
    • 왼쪽 테이블과 오른쪽 테이블의 모든 레코드들의 조합을 리턴

Written by@Myunghwan
Nothing changes if nothing changes

GitHub