개요
MySQL에서 특정 열의 값을 무작위(랜덤) 값으로 일괄 변경하고 싶다면 RAND() 함수를 활용하면 됩니다. UPDATE 문과 함께 사용하면 테이블의 모든 행에 대해 지정한 범위 내의 임의의 숫자를 손쉽게 할당할 수 있습니다.
기본 문법
열을 임의의 값으로 업데이트하려면 아래와 같은 구문을 사용합니다.
UPDATE yourTableName SET yourColumnName = ROUND(1 + RAND() * 100);
위 구문은 1부터 100 사이의 정수 값을 생성하여 해당 열에 적용합니다. RAND()는 0 이상 1 미만의 실수를 반환하므로, 여기에 100을 곱한 후 1을 더하고 ROUND()로 반올림하면 원하는 범위의 정수를 얻을 수 있습니다.
예제: 테이블 생성 및 데이터 삽입
먼저 예제로 사용할 테이블을 생성해 보겠습니다.
mysql> CREATE TABLE DemoTable
(
Number int
);
Query OK, 0 rows affected (0.46 sec)INSERT 명령을 사용하여 테이블에 레코드를 삽입합니다.
mysql> INSERT INTO DemoTable VALUES(10); Query OK, 1 row affected (0.17 sec) mysql> INSERT INTO DemoTable VALUES(100); Query OK, 1 row affected (0.11 sec) mysql> INSERT INTO DemoTable VALUES(80); Query OK, 1 row affected (0.20 sec) mysql> INSERT INTO DemoTable VALUES(100000); Query OK, 1 row affected (0.39 sec) mysql> INSERT INTO DemoTable VALUES(987); Query OK, 1 row affected (0.16 sec)
현재 데이터 확인
SELECT 문을 사용하여 테이블의 모든 레코드를 조회합니다.
mysql> SELECT * FROM DemoTable;
실행 결과는 다음과 같습니다.
+--------+ | Number | +--------+ | 10 | | 100 | | 80 | | 100000 | | 987 | +--------+ 5 rows in set (0.00 sec)
임의의 값으로 열 업데이트하기
다음은 열의 값을 임의의 값으로 업데이트하는 쿼리입니다.
mysql> UPDATE DemoTable SET Number = ROUND(1 + RAND() * 100); Query OK, 5 rows affected (0.46 sec) Rows matched: 5 Changed: 5 Warnings: 0
총 5개 행이 모두 새로운 임의의 값으로 변경되었습니다. 이제 테이블의 레코드를 다시 한번 조회해 보겠습니다.
mysql> SELECT * FROM DemoTable;
실행 결과는 다음과 같습니다.
+--------+ | Number | +--------+ | 33 | | 88 | | 41 | | 39 | | 70 | +--------+ 5 rows in set (0.00 sec)
정리
이처럼 ROUND(1 + RAND() * N) 형태의 표현식을 UPDATE 문에 활용하면, 1부터 N까지 범위 내의 임의의 정수로 열 값을 손쉽게 갱신할 수 있습니다. 테스트 데이터 생성이나 샘플 데이터 초기화 등 다양한 상황에서 유용하게 사용할 수 있습니다.