이번에는 거꾸로 테이블의 구조는 복사하지 않고 데이터만 추출하여 복사합니다. 데이터 를 복사할 때는 상대쪽의 테이블의 구조는 서로 동일해야 합니다.
데이터만 복사할 때는 INSERT INTO 명령을 기반으로 동작합니다. 또한 테이블의 데이 터를 조회하는 SELECT를 결합합니다.
| 쿼리 문법 |
INSERT INTO 기본테이블 SELECT * FROM 복사_테이블;
SELECT를 통하여 데이터를 조회하고, 조회한 데이터를 INSERT로 삽입 처리하게 됩니다.
15.3.1 쿼리 실습
다음은 비어 있는 members2 테이블에 members 테이블의 데이터 내용을 추출하여 삽 입해 보도록 합니다.
| 콘솔 실습 화면 |
mysql> select * from members2;
Empty set (0.00 sec)
테이블 members2는 아무런 내용이 없는 비어 있는 테이블입니다.
| 예제 쿼리 |
insert into members2 select * from members;
| 콘솔 실습 화면 |
mysql> insert into members2 select * from members;
Query OK, 4 rows affected (0.01 sec)
Records: 4 Duplicates: 0 Warnings: 0
정상적으로 데이터가 복사되었습니다. 이때 members2와 members의 테이블 구조는 동일해야 합니다.
| 콘솔 실습 화면 |
mysql> select * from members2;
+----+----------+-----------+-------------+-------+---------+
| Id | LastName | FirstName | Address | City | Country |
+----+----------+-----------+-------------+-------+---------+
| 1 | hojin | lee | shinchon | seoul | korea |
| 2 | jiny | NULL | NULL | NULL | korea |
| 3 | james | kim | youngdun-po | seoul | korea |
| 4 | eric | jung | seocho-gu | seoul | korea |
+----+----------+-----------+-------------+-------+---------+
4 rows in set (0.00 sec)
기존 비어 있는 테이블 members2에 members의 데이터만 추출하여 삽입합니다.
15.3.2 PHP 실습
PHP 코드를 통하여 데이터만 추출하여 복사를 진행해 보도록 하겠습니다.
| PHP 예제 | mysql.class.php 파일에 메서드 예제를 추가합니다.
// select 데이터를 테이블로 복사합니다.
public function insertSelect($src,$dst,$fields)
{
if ($src){
if ($fields){
$queryString = "insert into $dst ($fields) select $fields from $src";
} else {
$queryString = "insert into $dst select * from $src";
}
// 쿼리를 전송합니다.
if (mysqli_query($this->dbcon, $queryString)=== TRUE){
$this->msgEcho("쿼리성공] ".$queryString);
$this->msgEcho(" 데이터 복사!");
// 객체 반환, 매서드체인
return $this;
} else {
$this->msgEcho("Error] ".$queryString);
}
} else {
$this->msgEcho("Error] 원본 테이블명을 적어주세요.");
}
}
예제 파일 | copy-03.php
<?php
include "dbinfo.php";
include "mysql.class.php";
// ++ Mysqli DB 연결.
$db = new JinyMysql();
// 테이블을 복사합니다.
$db->insertSelect("members", "members_1");
?>
화면 출력
mysql connected!
쿼리성공] insert into members_1 select * from members
데이터 복사!