MySQL에서 데이터를 복사하지 않고 테이블 구조 복사
오늘은 MySQL에서 데이터를 복사하지 않고 테이블 구조를 복사하는 방법을 알아보겠습니다. CREATE TABLE ... LIKE
문을 사용하여 테이블 구조만 복사합니다.
MySQL에서 데이터를 복사하지 않고 테이블 구조 복사
자세히 알아보기 위해 test
데이터베이스에 상주하고 속성으로 ID
, USERNAME
및 EMAIL
이 있는 users
라는 테이블을 생성해 보겠습니다.
테이블 생성(users
테이블):
#create a table named 'users' in the 'test' database
CREATE TABLE `test`.`users` (
`ID` INT NOT NULL AUTO_INCREMENT,
`USERNAME` VARCHAR(45) NOT NULL,
`EMAIL` VARCHAR(45) NOT NULL,
PRIMARY KEY (`ID`));
다음으로 레코드를 삽입하여 데이터가 아닌 테이블의 구조만 새 테이블에 복사됨을 구분합니다.
INSERT INTO `test`.`users` (USERNAME, EMAIL) VALUES ('mehvish', 'delfstack@example.com');
CREATE TABLE ... LIKE
를 사용하여 MySQL에서 테이블 구조 복사
아래에 제공된 CREATE TABLE ... LIKE
문을 실행하여 테이블 정의라고도 하는 테이블 구조를 복사할 수 있습니다.
# Syntax: CREATE TABLE new_table LIKE original_table;
CREATE TABLE new_user_one LIKE test.users;
위에 주어진 쿼리는 users
테이블과 정확히 같은 new_user_one
테이블의 구조를 만듭니다.
모든 열 이름, 데이터 유형, 기본값 및 테이블 내용을 제외한 모든 항목을 복사합니다. 테이블 데이터를 복사하지 않습니다.
다음 쿼리를 사용하여 새 테이블의 열 이름, 데이터 유형 등을 다시 확인할 수 있습니다.
SHOW CREATE TABLE test.new_user_one;
데이터를 가지고 있는 상황이 있다면 두 가지 방법으로 할 수 있습니다. 테이블 구조를 복사하면서 데이터를 복사하거나 복사 후 삽입하십시오. 둘 다 아래에 나와 있습니다.
테이블 구조 복사 후 데이터 복사:
# Syntax: INSERT INTO new_table SELECT * FROM original_table;
INSERT INTO new_user_one SELECT * FROM test.users;
테이블 구조를 복사하는 동안 데이터 복사:
# Syntax: CREATE TABLE new_table AS SELECT * FROM original_table;
CREATE TABLE new_user_two AS SELECT * FROM test.users;
두 번째 방법으로 CREATE TABLE ... AS SELECT
문을 실행하여 테이블의 내용을 복사하거나 복제할 수 있습니다. 큰 테이블이 있는 경우 데이터를 복사하는 데 시간이 걸릴 수 있습니다.
새 테이블(여기서는 new_user_two
)은 기본 열 정의, 기본값 및 null
설정만 복사한다는 점을 기억하십시오. AUTO_INCREMENT
및 INDEXES
의 정의를 상속하지 않습니다.
다음 쿼리를 사용하여 확인할 수 있습니다.
SHOW CREATE TABLE test.new_user_two;