6.1 데이터베이스 구조 변경

마지막으로 데이터베이스 작업에서 가장 맛있는 부분은 데이터베이스를 변경하는 것입니다. 이것이 매우 단순한 것이라고 생각한다면, 다음은 주제에 대한 일화입니다.


The service station master, wiping his hands, hands over the car to the client and chats along the way:
- But who do you work for?
- I am a cardiac surgeon, I perform heart operations.
- And they pay a lot?
- $20,000 per operation.
- Nothing for myself ... But we, in fact, are doing the same thing, sorting out the engines, and they pay me only $ 300 ...
- Do you want to earn as much as I do?
- Want...
The surgeon starts the engine in the car and turns to the master:
- Move over!

상황은 데이터베이스와 정확히 동일합니다. 별도의 테이블에서 데이터의 일부를 꺼내시겠습니까? 좋습니다. 다음이 필요합니다.

  • 새 테이블 만들기
  • 데이터를 이 새 테이블에 복사
  • 이전 테이블에서 열 제거
  • 이전 테이블을 참조하는 모든 SQL 쿼리 변경
  • 새 테이블에 액세스할 SQL 쿼리 추가
  • 이전 방식으로 테이블과 함께 작동하는 Java 코드 변경
  • 이제 테이블 구조가 일치하지 않으므로 백업 및 복원 스크립트를 변경하십시오.
  • 개발자를 위한 테스트 데이터가 있는 경우 변경해야 합니다.

실제로는 더 나쁩니다.

새로운 데이터베이스 구조:

  • 먼저 개발자 컴퓨터에서 테이블 구조를 변경합니다.
  • 그러면 그러한 구조가 정말 더 낫다고 확신하게 됩니다.
  • 새 데이터베이스 구조 승인

마이그레이션 스크립트:

  • 실제 데이터베이스에서 테이블 데이터 등을 변경하는 스크립트를 작성합니다.
  • 이전 데이터베이스 구조가 있는 시스템에서 이 스크립트를 실행하고 어떻게 변경되는지 확인합니다.
  • 새 기지의 모든 중요한 장소를 확인하십시오.

판매 업데이트

  • 프로덕션 데이터베이스 중지
  • 전체 백업을 수행하십시오
  • 스크립트 실행
  • 일반적으로 시장에 많이 있기 때문에 이러한 스크립트는 몇 시간 동안 작동할 수 있습니다.

제품을 실행하고 모든 것을 롤백할 필요가 없기를 바랍니다.

6.2 ALTER TABLE 문

반면에 테이블 구조를 변경하는 스크립트 자체는 매우 간단합니다. 어떻게 보면 테이블 생성 스크립트와 비슷합니다. 테이블 변경 요청의 일반 보기:

ALTER TABLE table
team 1,
team 2,
Team N

명령은 매우 다르지만 세 가지 주요 그룹으로 구분할 수 있습니다.

  • ADD- 테이블에 무언가 추가
  • MODIFY- 테이블에서 무언가를 변경합니다.
  • DROP- 테이블에서 무언가를 삭제합니다.

그리고 내가 무언가를 말할 때 그것은 데이터에 관한 것이 아니라 테이블의 구조에 관한 것입니다.

예를 들어 테이블에 새 열을 추가하기로 결정한 후 다음 쿼리를 실행해야 합니다.

ALTER TABLE table
	ADD COLUMN Name type

직원 테이블에 이메일 열을 추가하는 쿼리를 작성해 보겠습니다 .

ALTER TABLE employee
	ADD COLUMN email  VARCHAR(10)

이제 이메일 문자열의 길이를 10에서 100으로 변경해 보겠습니다. 이를 위해 새 스크립트가 필요합니다.

ALTER TABLE employee
	MODIFY COLUMN email VARCHAR(100)

열의 일부 속성을 변경하고 싶지만 해당 유형은 변경하지 않으려면 명령이 ALTER COLUM 필요합니다 . 기본 이메일 값을 설정해 보겠습니다 .

ALTER TABLE employee
	ALTER COLUMN email VARCHAR(100)  DEFAULT 'test@test.com'

마지막으로 필요하지 않은 경우 열을 제거할 수 있습니다.

ALTER TABLE employee
	DROP COLUMN email 

6.3 기본 키 추가 및 제거

그리고 몇 가지 더 유용한 예가 있습니다.

id 열을 기본 키로 선언하는 것을 잊었다고 가정해 보겠습니다 . 다음을 통해 언제든지 별도로 수행할 수 있습니다 ALTER TABLE.

ALTER TABLE employee
	ADD PRIMARY KEY (email);

제거하는 것이 훨씬 더 쉽습니다.

ALTER TABLE employee
	DELETE PRIMARY KEY;