MySQL에서는 RAND() 함수와 CAST() 함수를 조합하면 테이블의 특정 열 값을 난수로 손쉽게 업데이트할 수 있습니다. 이번 글에서는 실제 예제를 통해 그 과정을 단계별로 살펴보겠습니다.
1. 테이블 생성하기
먼저 테이블을 생성합니다.
mysql> create table DemoTable746 ( Number int ); Query OK, 0 rows affected (0.56 sec)
2. 샘플 데이터 삽입하기
INSERT 명령을 사용하여 테이블에 레코드를 몇 개 삽입합니다.
mysql> insert into DemoTable746 values(100); Query OK, 1 row affected (0.14 sec) mysql> insert into DemoTable746 values(200); Query OK, 1 row affected (0.18 sec) mysql> insert into DemoTable746 values(300); Query OK, 1 row affected (0.31 sec) mysql> insert into DemoTable746 values(400); Query OK, 1 row affected (0.20 sec)
3. 현재 데이터 확인하기
SELECT 문을 사용하여 테이블의 모든 레코드를 조회합니다.
mysql> select *from DemoTable746;
위 쿼리는 다음과 같은 결과를 출력합니다.
+--------+ | Number | +--------+ | 100 | | 200 | | 300 | | 400 | +--------+ 4 rows in set (0.00 sec)
4. 난수로 레코드 업데이트하기
열의 값을 난수로 업데이트하는 쿼리는 다음과 같습니다.
mysql> update DemoTable746 set Number=CAST(RAND() * 10000 AS UNSIGNED); Query OK, 4 rows affected (0.13 sec) Rows matched: 4 Changed: 4 Warnings: 0
여기서 RAND()는 0 이상 1 미만의 임의의 실수를 반환하며, 여기에 10000을 곱하면 0부터 9999 사이의 값이 됩니다. CAST(... AS UNSIGNED)는 소수점 이하를 버리고 정수형으로 변환하는 역할을 합니다.
5. 업데이트 결과 확인하기
테이블의 레코드를 다시 한번 조회하여 변경된 값을 확인해 보겠습니다.
mysql> select *from DemoTable746;
실행 결과는 다음과 같습니다.
+--------+ | Number | +--------+ | 4422 | | 1350 | | 3485 | | 3371 | +--------+ 4 rows in set (0.00 sec)
위 출력에서 볼 수 있듯이, 기존의 100, 200, 300, 400 값들이 각각 서로 다른 난수 값으로 성공적으로 업데이트되었습니다. 참고로 RAND()는 행마다 개별적으로 평가되기 때문에 각 레코드마다 서로 다른 난수가 할당됩니다.