2012-04-23 2 views
0

질문 :

두 개 이상의 기존 테이블에서 테이블을 만들 수 있습니까?두 개 이상의 기존 테이블 (MySQL)에서 새 테이블 만들기

상세 사항 :

내가 이렇게 같은 테이블을 만들 수 :

CREATE TABLE IF NOT EXISTS USERNAME (AGE INT NOT NULL) 
CREATE TABLE IF NOT EXISTS USERAGE (NAME VARCHAR(100) NOT NULL) 
CREATE TABLE IF NOT EXISTS USER LIKE USERNAME LIKE USERAGE; 

내가 Reference Manual의 머리 또는 꼬리를 만들 수 없습니다 :

CREATE [TEMPORARY] TABLE [IF NOT EXISTS] tbl_name 
{ LIKE old_tbl_name | (LIKE old_tbl_name) } 

가 후행 (LIKE old_tbl_name)는 뜻 1 LIKE old_tbl_name이 (가) 더 자주 발생합니까?

가능한 경우 동일한 이름 열 또는 2 개의 기본 ID는 어떻게됩니까?

편집 : 기존 테이블의 내용을 새 테이블을 채우기 위해 노력하고 내가 새 테이블을 정의하기 위해 기존 테이블의 스키마를 사용하는 것을 시도하고있다, 하지.

+0

기존 테이블의 스키마를 사용하여 새 테이블을 정의하려고하거나 기존 테이블의 내용으로 새 테이블을 채우시겠습니까? 후자의 경우, MySQL의 [CREATE TABLE ... SELECT'] (http://dev.mysql.com/doc/refman/5.6/en/create-table-select.html) 구문을 사용할 수 있습니다. 당신이 언급 한'CREATE TABLE ... LIKE' 문법은 데이터가없는 기존 테이블의 스키마를 복사 할 것입니다. 단 하나의 오래된 테이블 만 지정할 수 있습니다. (참조하는 괄호 안의 후행 버전은 옵션 괄호를 'LIKE' 절 주위에 놓여 야합니다). – eggyal

+0

@eggyal 나는 당신을 위해 질문을 명확히했다. – puk

답변

4

에 대해 어떻게 :

: 당신은 또한 이전 SELECT 키워드로 새 테이블에 필요한 모든 인덱스를 지정하거나 열 이름을 바꿀 수 있습니다

CREATE TABLE IF NOT EXISTS USER SELECT * FROM USERNAME, USERAGE WHERE FALSE; 

/SELECT의 오른쪽에 평소와 같이 몇 가지 부분 집합을 선택

CREATE TABLE IF NOT EXISTS USER (PRIMARY KEY(UNAME)) SELECT NAME AS UNAME -- etc 

같은 이름의 모든 열을 결합하려면 SELECTNATURAL JOIN을 사용하십시오.

자세한 내용은 CREATE TABLE ... SELECT을 참조하십시오.

+0

그래서 기본적으로 여러 테이블에서 빈 행 집합을 복사합니까? – puk

+0

예. 그러나 결과 (비어있는) 레코드 세트의 열 이름과 데이터 형식을 사용합니다. – eggyal

+0

충분합니다. 고맙습니다. – puk

관련 문제