Computer >> 컴퓨터 >  >> 프로그램 작성 >> MySQL

다른 MySQL 데이터베이스의 열이 있는 두 테이블 간에 데이터를 이동하는 방법은 무엇입니까?

<시간/>

이를 위해서는 INSERT SELECT 문을 사용해야 합니다. 구문은 다음과 같습니다.

INSERT INTOyourDatabaseName1.yourTableName1(yourColumnName1,yourColumnName2,....N)SELECT yourColumnName1,yourColumnName2,...N FROMyourdatabaseName2.yourTableName2;

여기서는 다음 두 데이터베이스를 사용하고 있습니다.

  • 샘플
  • 테스트

"test" 데이터베이스에 첫 번째 테이블을 생성해 보겠습니다.

<보내기>

mysql> use test;Database changedmysql> create table send -> ( -> Id int NOT NULL AUTO_INCREMENT PRIMARY KEY, -> Name varchar(20) -> );Query OK, 0개의 행이 영향을 받았습니다(1.19초) 

삽입 명령을 사용하여 첫 번째 테이블에 일부 레코드를 삽입하십시오. 쿼리는 다음과 같습니다.

mysql> insert into send(Name) values('John');Query OK, 1행 영향(0.20초)mysql> insert into send(Name) values('Carol');Query OK, 1행 영향( 0.40초)

select 문을 사용하여 테이블의 모든 레코드 표시

mysql> select *from send;

다음은 출력입니다.

+----+-------+| 아이디 | 이름 |+----+-------+| 1 | 존 || 2 | 캐롤 |+----+-------+2행 세트(0.00초)

이제 "샘플" 데이터베이스에 두 번째 테이블을 만듭니다.

<받기>

mysql> use sample;Database addedmysql> create table receive -> ( -> UserId int, -> UserName varchar(20) -> );쿼리 OK, 영향을 받는 행 0개(0.59초)

위에서 볼 수 있듯이 두 번째 테이블 "receive"에는 레코드가 없습니다.

이제 서로 다른 데이터베이스의 서로 다른 열이 있는 2개의 테이블 간에 데이터를 이동하겠습니다. 쿼리는 다음과 같습니다.

mysql> insert into sample.receive(UserId,UserName) -> select Id,Name from test.send;Query OK, 영향을 받는 2개 행(0.21초) 레코드:2 중복:0 경고:0

sample.receive 테이블의 모든 레코드를 표시합니다. 쿼리는 다음과 같습니다.

mysql> select *from 수신;

다음은 다른 데이터베이스의 한 테이블에서 다른 테이블로 날짜를 성공적으로 이동했음을 표시하는 출력입니다.

+--------+----------+| 사용자 ID | 사용자 이름 |+--------+----------+| 1 | 존 || 2 | Carol |+--------+----------+2행 세트(0.00초)