date : 날짜 정보(YYYY-MM-DD)만 저장한다.datetime : 날짜 + 시간정보를 저장한다. (YYYY-MM-DD-HH:MM:SS ) 지정된 값을 그대로 저장하며 타임존 정보의 영향을 받지 않는다.
timestamp : 날짜 + 시간 정보를 저장한다. (YYYY-MM-DD-HH:MM:SS ) 또한 타임존을 자동변환한다. 저장시 서버 타임존을 기준으로 UTC로 변환해 저장하고, 조회시 현재 세션의 타임존에 맞춰 다시 변환해준다.
결론은 웬만해서는 DATETIME 을 사용하자.
timestamp는 저장 가능한 범위가 1970~2038년까지밖에 저장하지 못한다. 반면 datetime은 1000~9999년까지 저장가능하다. 그리고 timestamp가 제공하는 UTC 시간을 기준으로 변경해주는건 애플리케이션에서 담당해도 충분히 할 수 있다. 또한 예전에 DEFAULT CURRNET_TIMSTAMP ON UPDATE CURRENT_TIMESTAMP 이런 기능을 timstamp만 지원했었는데, 이제는 datetime도 지원한다.
DROP TABLE : 테이블의 존재 자체를 삭제한다.TRUNCATE TABLE : 테이블 데이터만 전부 지운다. auto_increment도 1부터 다시 시작하도록 초기화된다. DDL이라 롤백은 안됨.