티스토리 뷰

반응형

php로 코딩하던 중 mysql로 table을 복사하고 이를 활용하기 위해서,

기존테이블의 속성을 그래도 복사하고 싶은데,

단순히 create table만 하면,

기존의 테이블의 속성, primary Key와 autoincrement가 함께 복사되지 않는 문제점이 있어,

아래의 3가지를 함께 실행하면 될 것입니다.

 

mysql 명령창에서


1. 복사하기 
create table 새로만들 테이블이름 select * from 기존에있던 테이블 이름

eg . )  create table steelsourcetmp select * from steelsource;


2. 기존 데이터 삭제하기 (선택) (스킵가능함.)

단, 기존 데이터를 그대로 보존할 사람은 삭제하지 마시고 진행하세요.

주의하세요. ) 이건 지우는 기능 delete from 새로만든 테이블   -> 데이터만 삭제됩니다.

&&&&&      delete from new

 

3. PRIMARY KEY 지정하기

필수 기억해야할 사항) PRIMARY KEY가 지정돼있지 않으면 auto_increment가 되지 않는다는 것입니다.

ALTER TABLE 새로만든테이블 ADD PRIMARY KEY(지정할 컬럼명 )

eg 실전예) 2) ALTER TABLE steelsourcetmp ADD PRIMARY KEY(num);

그럼, 이렇게 바뀌어 있습니다.


이제, 마지막으로 auto_increment 지정하면 끝나겠죠?

4. auto_increment 지정하기
Alter table new modify 지정할컬럼명 int auto_increment

eg) Alter table new modify no int auto_increment

실행 후 다시 적용된 하면을 보면 아래와 같이 나옵니다.

테이블 구조를 보면 num에 '키' 표시가 좌측에 되어있고, 추가란엔 'AUTO_INCREMENT'가 적용된 것을 볼 수 있습니다.

마지막으로 예시를 정리하면, 기존 데이터를 그대로 복사하는 방법은 아래와 같습니다.

1) create table steelsourcetmp select * from steelsource;

2) ALTER TABLE steelsourcetmp ADD PRIMARY KEY(num);

3) Alter table steelsourcetmp modify num int auto_increment;

 

이렇게 하면, 테이블을 AUTO_INCREMENT 포함한 복사가 되는 것입니다.

반응형
댓글