인프런 커뮤니티 질문&답변

탱스님의 프로필 이미지
탱스

작성한 질문수

[2024 리뉴얼] 처음하는 SQL과 데이터베이스(MySQL) 부트캠프 [입문부터 활용까지]

------------------------------------

Alter 질문이 있습니다

작성

·

191

0

만약 스키마 생성 후 데이터 적재까지 완료했다고 가정할 때,Alter 구문으로 테이블 스키마 수정 혹은 컬럼 추가를 하게되면 기존에 적재된 데이터는 없어지나요?아니면 그대로 유지되나요? 적재 후 나중에라도 컬럼 추가하거나 PK 추가하고 싶을 때 어떻게 해결하는지 궁금합니다.아예 DROP 하고 처음부터 스키마 생성해서 적재하나요? 좋은 강의 감사합니다.

답변 1

0

안녕하세요. 답변 도우미입니다.

일반적으로 ALTER 구문을 사용하여 테이블 스키마를 수정하거나 컬럼을 추가할 때 기존에 적재된 데이터는 유지됩니다. 예를 들어, 새로운 컬럼을 추가하면 해당 컬럼은 기존 행에 대해 NULL 값이나, 설정된 디폴트 값으로 채워집니다.

하지만 주의해야 할 부분이 있습니다. 기존 컬럼의 데이터 타입을 변경하거나, NOT NULL 제약을 추가하는 등의 변경사항이 기존 데이터와 충돌할 경우, 오류가 발생할 수 있습니다. 예를 들어, VARCHAR 컬럼을 INT로 변경하려 할 때 해당 컬럼에 문자열 데이터가 있다면 문제가 될 것입니다.

기본키(PK) 추가에 관해서는, 기존 데이터가 새로운 PK 규칙을 위반하지 않는 한, 기존 데이터에 영향을 주지 않고 PK를 추가할 수 있습니다. 만약 기존 데이터가 새 PK 규칙에 부합하지 않는다면, 해당 데이터를 수정하거나 삭제해야 PK를 추가할 수 있습니다.

테이블을 완전히 다시 설계해야 하는 상황이라면, 테이블을 DROP 하고 새로운 스키마로 다시 생성할 수 있습니다. 하지만 이 경우 기존 데이터는 모두 손실된다는 점도 알고 유의하시면 좋을 것 같습니다. DROP 전 필요 데이터가 있다면 보통은 백업을 해놓고 DROP 을 진행합니다.

감사합니다.

탱스님의 프로필 이미지
탱스
질문자

자세히 답변 주셔서 너무 감사합니다!!

탱스님의 프로필 이미지
탱스

작성한 질문수

질문하기