Computer >> 컴퓨터 >  >> 프로그래밍 >> MySQL

MySQL에서 모든 행의 한 필드 값을 다른 필드로 복사하는 방법

MySQL에서 모든 행에 걸쳐 한 필드의 데이터를 다른 필드로 복사하려면 UPDATE 명령어를 사용하면 됩니다. 이 방법은 기본값으로 설정된 컬럼을 나중에 실제 값으로 채워야 할 때 특히 유용합니다.

1. 테이블 생성하기

먼저 예제에 사용할 테이블을 생성합니다.

mysql> create table DemoTable
    (
    StudentId int,
    StudentFirstName varchar(20),
    StudentMarks int default 0
    );
Query OK, 0 rows affected (0.49 sec)

위 테이블은 학생 ID(StudentId), 이름(StudentFirstName), 점수(StudentMarks) 세 개의 컬럼을 가지며, StudentMarks는 기본값 0으로 설정되어 있습니다.

2. 레코드 삽입하기

INSERT 명령어를 사용하여 테이블에 레코드를 추가합니다.

mysql> insert into DemoTable(StudentId,StudentFirstName) values(89,'Larry');
Query OK, 1 row affected (0.13 sec)
mysql> insert into DemoTable(StudentId,StudentFirstName) values(35,'Robert');
Query OK, 1 row affected (0.11 sec)
mysql> insert into DemoTable(StudentId,StudentFirstName) values(48,'Chris');
Query OK, 1 row affected (0.13 sec)
mysql> insert into DemoTable(StudentId,StudentFirstName) values(78,'David');
Query OK, 1 row affected (0.61 sec)

3. 현재 데이터 확인하기

SELECT 명령어로 테이블의 레코드를 조회해 보겠습니다.

mysql> select *from DemoTable;

실행 결과는 다음과 같습니다.

+-----------+------------------+--------------+
| StudentId | StudentFirstName | StudentMarks |
+-----------+------------------+--------------+
| 89        | Larry            | 0            |
| 35        | Robert           | 0            |
| 48        | Chris            | 0            |
| 78        | David            | 0            |
+-----------+------------------+--------------+
4 rows in set (0.00 sec)

StudentMarks 컬럼이 아직 기본값인 0으로 채워져 있는 것을 확인할 수 있습니다.

4. UPDATE로 필드 간 데이터 복사하기

이제 모든 행에서 한 필드의 값을 다른 필드로 복사하는 핵심 쿼리입니다. 여기서는 StudentId의 모든 값을 StudentMarks로 복사합니다.

mysql> update DemoTable set StudentMarks=StudentId;
Query OK, 4 rows affected (0.34 sec)
Rows matched: 4 Changed: 4 Warnings: 0

UPDATE 문에서 SET 절에 '대상_컬럼 = 원본_컬럼' 형태로 작성하면, WHERE 조건 없이 테이블의 모든 행에 대해 원본 컬럼의 값이 대상 컬럼으로 복사됩니다.

5. 업데이트 결과 확인하기

모든 행이 정상적으로 업데이트되었는지 다시 조회해 보겠습니다.

mysql> select *from DemoTable;

실행 결과는 다음과 같습니다.

+-----------+------------------+--------------+
| StudentId | StudentFirstName | StudentMarks |
+-----------+------------------+--------------+
| 89        | Larry            | 89           |
| 35        | Robert           | 35           |
| 48        | Chris            | 48           |
| 78        | David            | 78           |
+-----------+------------------+--------------+
4 rows in set (0.00 sec)

출력 결과를 보면 StudentMarks 컬럼에 StudentId의 값이 각 행마다 성공적으로 복사된 것을 확인할 수 있습니다.

참고 사항

특정 조건을 만족하는 행만 복사하고 싶다면 WHERE 절을 함께 사용하면 됩니다. 예를 들어 UPDATE DemoTable SET StudentMarks=StudentId WHERE StudentId > 50;처럼 작성하면 StudentId가 50보다 큰 행만 업데이트됩니다. 또한 대용량 테이블을 업데이트할 때는 트랜잭션을 활용해 작업 전 데이터를 백업하는 것이 안전합니다.