본문 바로가기
개발/Database

테이블 변경 (ALTER) - 테이블 변경 (CHANGE, MODIFY)

by BellOne4222 2024. 2. 2.

테이블 변경 (ALTER) - 테이블 변경 (CHANGE, MODIFY)

 

  • MODIFY
    • 컬럼의 상태 변경
    • 컬럼의 값을 바꿀 때 사용
ALTER TABLE hero
MODIFY COLUMN star BIGINT DEFAULT 10000;
DESC hero;

star 컬럼의 Default값이 10000으로 변경되었다.

 

  • CHANGE
    • 컬럼의 상태 변경
    • MODIFY와 달리 컬럼의 이름도 변경 가능하다.
ALTER TABLE hero
CHANGE COLUMN star rating INT DEFAULT 100;
DESC hero;

star 컬럼의 Default 값이 100으로 변경되었다.

 

  • INT
    • INT의 범위
      • INT의 범위는 4바이트이므로 -2147483648 ~ 2147483647의 범위를 갖지만, 대부분의 경우 id에 음수를 사용하지 않기 때문에 UNSIGNED 속성을 지정하면, 0 ~ 4294967295의 범위를 갖는다.
      • 테이블에 42억 개의 데이터가 들어갈 일이 절대 없다면 BIGINT를 쓸 필요가 없고, 심지어는 경우에 따라서 그보다 더 작은 타입들(MEDIUMINT, SMALLINT, TINYINT)을 고려할 필요가 있다.
    • INT 형 타입들의 범위

  • INT vs BIGINT
    • BIGINT를 사용 할 때의 영향
      • 디스크에서 페이지를 더 많이 사용한다.
        • 데이터가 램에 있지 않을 때 데이터 읽기 속도에 영향을 줄 수 있다.
        • 유지관리 작업이 더 오래 걸린다(백업, 인덱스 재구축, CHECKDB)
      • 늘어난 데이터 페이지만큼 램에 더 많은 공간을 차지한다.
        • 디스크에서 더 자주 읽는 비용이 발생한다.
    • 테이블에 따라 가장 작은 데이터 타입을 사용해야한다.
      • INT타입으로 충분할 것을 BIGINT로 쓴다해서 검색 속도에 엄청난 영향이 있을 것 같지는 않지만, 굳이 성능을 악화시킬 필요는 없다.