MySQL RAND() 함수로 난수 삽입하기
MySQL에서 테이블에 난수를 삽입하려면 내장 함수인 RAND()를 사용하면 됩니다. 이 함수는 0 이상 1 미만의 임의의 실수를 반환하며, FLOOR() 함수와 함께 사용하면 원하는 범위의 정수형 난수를 손쉽게 만들 수 있습니다. 아래에서 단계별로 살펴보겠습니다.
1단계: 예제 테이블 생성
먼저 실습에 사용할 테이블을 생성합니다.
mysql> create table DemoTable
(
Value int
);
Query OK, 0 rows affected (0.46 sec)2단계: 샘플 데이터 삽입
INSERT 명령문으로 몇 개의 레코드를 추가합니다.
mysql> insert into DemoTable values(10); Query OK, 1 row affected (0.15 sec) mysql> insert into DemoTable values(20); Query OK, 1 row affected (0.10 sec) mysql> insert into DemoTable values(30); Query OK, 1 row affected (0.08 sec)
3단계: 현재 데이터 확인
SELECT 문으로 테이블의 모든 레코드를 조회해 보겠습니다.
mysql> select *from DemoTable;
실행 결과는 다음과 같습니다.
+-------+ | Value | +-------+ | 10 | | 20 | | 30 | +-------+ 3 rows in set (0.00 sec)
4단계: 난수로 값 업데이트
이제 UPDATE 문과 RAND() 함수를 사용해 기존 값을 난수로 변경합니다. 아래 예제는 사용자 변수 @number에 RAND()의 반환값을 곱한 뒤 FLOOR()로 정수화하고 1을 더하여, 1부터 @number까지 범위의 난수를 생성합니다.
mysql> update DemoTable set Value=FLOOR(@number * rand()) + 1; Query OK, 3 rows affected (0.17 sec) Rows matched: 3 Changed: 3 Warnings: 0
5단계: 변경된 결과 확인
테이블의 레코드를 다시 한번 조회해 보겠습니다.
mysql> select *from DemoTable;
실행 결과는 다음과 같습니다.
+-------+ | Value | +-------+ | 2 | | 2 | | 1 | +-------+ 3 rows in set (0.00 sec)
추가 팁: 원하는 범위의 난수 만들기
UPDATE 문을 실행할 때마다 결과값은 매번 달라지며, 각 행에는 서로 다른 난수가 독립적으로 할당됩니다. 만약 특정 범위(예: 1~100)의 난수가 필요하다면 @number 변수에 상한값을 설정하거나, 아래처럼 직접 숫자를 지정하면 됩니다.
mysql> update DemoTable set Value=FLOOR(100 * rand()) + 1;
이렇게 하면 1부터 100 사이의 정수 난수가 각 행에 삽입됩니다. 로그 데이터 샘플링, 테스트 데이터 생성 등 다양한 상황에서 유용하게 활용할 수 있습니다.