012_add_rating_column_simple.sql 1.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051
  1. -- 012_add_rating_column_simple.sql
  2. -- USER_LIST 테이블에 RATING 컬럼 추가 (MariaDB 호환, 간단한 방식)
  3. -- 1. 기존 RATING 컬럼 확인
  4. SELECT
  5. CASE
  6. WHEN COUNT(*) > 0 THEN 'RATING 컬럼이 이미 존재합니다'
  7. ELSE 'RATING 컬럼을 추가합니다'
  8. END as status
  9. FROM INFORMATION_SCHEMA.COLUMNS
  10. WHERE TABLE_SCHEMA = DATABASE()
  11. AND TABLE_NAME = 'USER_LIST'
  12. AND COLUMN_NAME = 'RATING';
  13. -- 2. RATING 컬럼 추가 (존재하지 않으면 추가됨, 존재하면 오류 발생하지만 무시 가능)
  14. -- 이 명령은 컬럼이 이미 존재하면 오류가 발생합니다. 이는 정상적인 동작입니다.
  15. ALTER TABLE USER_LIST
  16. ADD COLUMN RATING DECIMAL(3,1) DEFAULT 0.0 COMMENT '사용자 평점 (0.0~5.0)';
  17. -- 3. 인덱스 추가 (존재하지 않으면 추가됨)
  18. -- 이 명령도 인덱스가 이미 존재하면 오류가 발생합니다. 이는 정상적인 동작입니다.
  19. CREATE INDEX idx_user_rating ON USER_LIST (RATING DESC);
  20. -- 4. RATING 기본값 업데이트 (NULL인 경우에만)
  21. UPDATE USER_LIST
  22. SET RATING = 0.0
  23. WHERE RATING IS NULL;
  24. -- 5. 최종 검증
  25. SELECT
  26. COLUMN_NAME,
  27. DATA_TYPE,
  28. IS_NULLABLE,
  29. COLUMN_DEFAULT,
  30. COLUMN_COMMENT
  31. FROM INFORMATION_SCHEMA.COLUMNS
  32. WHERE TABLE_SCHEMA = DATABASE()
  33. AND TABLE_NAME = 'USER_LIST'
  34. AND COLUMN_NAME = 'RATING';
  35. -- 6. 인덱스 확인
  36. SELECT
  37. INDEX_NAME,
  38. COLUMN_NAME,
  39. SEQ_IN_INDEX
  40. FROM INFORMATION_SCHEMA.STATISTICS
  41. WHERE TABLE_SCHEMA = DATABASE()
  42. AND TABLE_NAME = 'USER_LIST'
  43. AND INDEX_NAME = 'idx_user_rating';
  44. SELECT '🎉 USER_LIST 테이블 RATING 컬럼 추가 완료!' as result;