데이터베이스가 성장하고 발전함에 따라 새 열을 추가하거나 기존 구조를 수정해야 하는 경우가 종종 있습니다. 일반적인 시나리오 중 하나는 특히 이 ID가 레코드 생성의 시간순을 반영하도록 하려는 경우 기존 테이블에 일련 ID를 추가해야 하는 경우입니다. 이 블로그 게시물에서는 생성 날짜 열을 기준으로 정렬된 자동 증가 일련 ID를 MySQL 테이블에 추가하는 과정을 살펴보겠습니다.
MySQL 데이터베이스에 users라는 테이블이 있다고 상상해 보세요. 이 테이블에는 각 사용자가 등록한 시기를 기록하는 Registration_date datetime 열을 포함하여 다양한 열이 있습니다. 이제 자동 증가 정수 역할을 하는 user_serial_number 새 열을 추가하려고 하지만 이러한 ID의 초기 할당은 Registration_date 순서를 기반으로 하도록 하려고 합니다.
MySQL 명령의 조합을 사용하여 이를 달성할 수 있습니다. 단계별 프로세스는 다음과 같습니다.
먼저 테이블에 새로운 user_serial_number 열을 추가해야 합니다.
ALTER TABLE users ADD COLUMN user_serial_number INT;
이 명령은 사용자 테이블에 user_serial_number라는 새 정수 열을 추가합니다.
이제 새 열이 있으므로 등록_날짜 순서에 따라 값을 채워야 합니다.
SET @row_number = 0; UPDATE users SET user_serial_number = (@row_number:=@row_number 1) ORDER BY registration_date;
이를 분석해 보겠습니다.
마지막으로 이 열을 향후 삽입을 위해 자동 증가로 설정해야 합니다.
ALTER TABLE users MODIFY COLUMN user_serial_number INT AUTO_INCREMENT, ADD PRIMARY KEY (user_serial_number);
이 명령은 user_serial_number 열이 자동 증가되도록 수정하고 이를 기본 키로 설정합니다.
기본 순서: 기본적으로 MySQL의 ORDER BY 절은 오름차순(ASC)으로 정렬됩니다. 즉, 오래된 레코드에는 더 낮은 일련 번호가 부여되고, 최신 레코드에는 더 높은 번호가 부여됩니다. 이를 되돌리려면 2단계에서 ORDER BY Registration_date DESC를 사용할 수 있습니다.
향후 삽입: 이 프로세스가 끝나면 새 레코드는 등록_날짜 값에 관계없이 user_serial_number로 사용 가능한 다음 정수를 가져옵니다. 순서는 열의 초기 채우기에만 적용됩니다.
기본 키: user_serial_number가 기본 키가 되어야 하는 경우(3단계에서와 같이) user_serial_number에 추가하기 전에 기존 기본 키를 제거해야 합니다.
성능: 대형 테이블의 경우 이 작업은 시간이 많이 걸리고 테이블이 잠길 수 있습니다. 사용량이 적은 시간에 실행해 보세요.
고유성: ID 할당 프로세스 중에 잠재적인 문제를 방지하려면 Registration_date 값이 고유한지 확인하세요.
향후 삽입에서 항상 등록 날짜를 기준으로 순서를 유지하려면 애플리케이션에서 이 논리를 구현하거나 MySQL 트리거를 사용해야 합니다. 그러나 이는 복잡할 수 있고 성능에 영향을 미칠 수 있으므로 이러한 솔루션을 구현하기 전에 사용 사례를 신중하게 고려하십시오.
날짜/시간 열을 기반으로 기존 MySQL 테이블에 일련 ID를 추가하는 것은 몇 가지 SQL 명령으로 수행할 수 있는 간단한 프로세스입니다. 이 기술은 데이터 분석, 고유 식별자 생성 또는 데이터의 명확한 시간순 정렬 설정에 특히 유용할 수 있습니다.
이 프로세스는 일련 ID의 초기 입력에는 잘 작동하지만 향후 삽입을 위해 이 순서를 유지하려면 추가 고려 사항과 잠재적으로 더 복잡한 솔루션이 필요하다는 점을 기억하십시오. 프로덕션 데이터베이스에서 이러한 작업을 실행하기 전에 항상 데이터 복사본에서 테스트하세요.
이 단계를 수행하면 기존 데이터에 유용한 새 차원을 추가하여 데이터베이스 쿼리 및 구성에 대한 새로운 가능성을 열 수 있습니다.
부인 성명: 제공된 모든 리소스는 부분적으로 인터넷에서 가져온 것입니다. 귀하의 저작권이나 기타 권리 및 이익이 침해된 경우 자세한 이유를 설명하고 저작권 또는 권리 및 이익에 대한 증거를 제공한 후 이메일([email protected])로 보내주십시오. 최대한 빨리 처리해 드리겠습니다.
Copyright© 2022 湘ICP备2022001581号-3