MYSQL

동일한 구조만 생성할 경우

CREATE TABLE `생성될 테이블명` LIKE ` 복사할 테이블`;

데이터만 복사  field명은 복사 되지만 설정(primary key등)은 복사되지 않는다.

CREATE TABLE `생성될 테이블명` AS SELECT FROM ` 복사할 테이블`;    /* AS 생략가능 */

구조와 데이터 복사

CREATE TABLE `생성될 테이블명` LIKE `복사할 테이블`;

INSERT INTO `생성된 테이블명` SELECT * FROM `복사할 테이블`;


출처 http://www.lovelgw.com/Blog/220



ORACLE

Table A가 있고 Table A와 구조가 같고 내용은 복사하지 않는 Table B 생성 방법 

SQL>CREATE TABLE b AS SELECT * FROM a WHERE 1 = 2;

Table A가 있고 Table B를 생성하면서 복사하는 방법 

SQL>CREATE TABLE b AS SELECT * FROM a;

Table A와 Table B 가 있는데. A의 내용을 B로 복사하는 방법 

SQL>INSERT INTO b SELECT * FROM a;


출처 http://302.pe.kr/153



MSSQL

테이블 전체 복사

SELECT * INTO [TARGET_TABLE] FROM [SOURCE_TABLE]

테이블 컬럼 일부 복사

SELECT COLUMN1, COLUMN2 INTO  [TARGET_TABLE] FROM [SOURCE_TABLE]

정렬해서 테이블 전체 복사

SELECT * INTO 'TARGET_TABLE' FROM 'SOURCE_TABLE' ORDER BY [COLUMN_NAME]



-----------------------------------------------------------------------------------------------------------------


◆ 특정 데이터베이스 내에 존재하는 테이블들의 구조를 다른 데이터베이스에 복사하는 소스

 

 

// Connect 후 mysql_select_db를 하지 않아야 함.

$conn = mysql_connect("localhost" ,"test","test") ;

 

// 테이블 구조를 가지고 있는 데이터베이스

$database = "test_1";

 

// 복사하여 새로 생성할 데이터베이스

$new_database = "test_new";

 

//복사할 데이터베이스가 없을시에는 데이터베이스 생성

$make_database = mysql_query("CREATE DATABASE IF NOT EXISTS `{$new_database}`", $conn);

 

// 데이터베이스내의 테이블 목록 가져오기
$result = mysql_query("SHOW TABLES FROM `{$database}`", $conn);


while ($row = mysql_fetch_row($result)) {


    $make_q = "CREATE TABLE `{$new_database}`.{$row[0]} AS ";

 

    // 테이블 구조와 테이블 내의 데이터도 함께 복사하려면 WHERE 0=1 이구문을 삭제

    $make_q .= "SELECT * FROM `{$database}_demo`.{$row[0]} WHERE 0=1" ;


    $make_table = mysql_query($make_q, $conn) or die(mysql_error());


}