복붙노트

[SQL] 어떻게 MySQL의 테이블에 열을 이동?

SQL

어떻게 MySQL의 테이블에 열을 이동?

현재 나는 다음과 MySQL의 테이블 데 : 종업원 수 (EMPID, empName, 부서);

나는 다음에 테이블을 변경하려면 : 종업원 수 (EMPID, 부서, empName을);

어떻게 이런 일이 ALTER 문을 사용하여 수행 할 수 있습니다?

참고 : 난 단지 열 위치를 변경하고 싶습니다.

해결법

  1. ==============================

    1.empName는 VARCHAR (50) 컬럼 인 경우 :

    empName는 VARCHAR (50) 컬럼 인 경우 :

    ALTER TABLE Employees MODIFY COLUMN empName VARCHAR(50) AFTER department;
    

    편집하다

    코멘트 당, 당신은 또한이 작업을 수행 할 수 있습니다

    ALTER TABLE Employees CHANGE COLUMN empName empName VARCHAR(50) AFTER department;
    

    empName의 반복이 고의적 있습니다. 당신은 당신이 동일한 열 이름을 유지하려는 MySQL을 얘기해야합니다.

    당신은 두 구문 버전의 MySQL에 특정한 것을 알고 있어야한다. 그들은 PostgreSQL을 또는 많은 다른 DBMS를, 예를 들어, 작동하지 않습니다.

    또 다른 편집 : 마찬가지로 코멘트에 @Luis 로시 지적, 당신은 완전히 바로 AFTER 수정하기 전에 변경된 열 정의를 지정해야합니다. 위의 예는 VARCHAR (50)이 있지만 (예 : NOT NULL 또는 기본 값으로) 다른 특성을 필요로하는 경우가 아니라 사람들을 포함해야합니다. 추가 정보를 원하시면 ALTER TABLE의 문서를 참조하십시오.

  2. ==============================

    2.변경 열 위치 :

    변경 열 위치 :

    ALTER TABLE Employees 
       CHANGE empName empName VARCHAR(50) NOT NULL AFTER department;
    

    당신은 당신이 ALTER TABLE 변경 [COLUMN] 쿼리의 끝에서 FIRST 용어를 사용해야하는 첫 번째 위치로 이동해야하는 경우 :

    ALTER TABLE UserOrder 
       CHANGE order_id order_id INT(11) NOT NULL FIRST;
    
  3. ==============================

    3.phpMyAdmin에 테이블의 구조보기에서 이것에 대한 GUI를 제공합니다. 당신이 이동하고 열 목록의 맨 아래에있는 변경 조치를 클릭 할 열을 선택하십시오. 그런 다음 컬럼의 모든 속성을 변경할 수 있습니다 당신은 오른쪽 화면에있는 '이동 칼럼'기능을 찾을 수 있습니다.

    phpMyAdmin에 테이블의 구조보기에서 이것에 대한 GUI를 제공합니다. 당신이 이동하고 열 목록의 맨 아래에있는 변경 조치를 클릭 할 열을 선택하십시오. 그런 다음 컬럼의 모든 속성을 변경할 수 있습니다 당신은 오른쪽 화면에있는 '이동 칼럼'기능을 찾을 수 있습니다.

    물론이 모든 단지 완벽하게 좋은 최고 응답에 쿼리를 구축하고 있지만, GUI 팬들이 대안을 감상 할 수의.

    내 phpMyAdmin이 버전은 4.1.7이다

  4. ==============================

    4.나는 10 개 + 테이블에, 제품의 나중 단계에 도입 된 열이를 실행했다. 그래서 모든 '관련'테이블에 대한 ALTER 명령을 생성하기 위해이 빠른 단 정치 못한 스크립트를 썼다.

    나는 10 개 + 테이블에, 제품의 나중 단계에 도입 된 열이를 실행했다. 그래서 모든 '관련'테이블에 대한 ALTER 명령을 생성하기 위해이 빠른 단 정치 못한 스크립트를 썼다.

    SET @NeighboringColumn = '<YOUR COLUMN SHOULD COME AFTER THIS COLUMN>';
    
    SELECT CONCAT("ALTER TABLE `",t.TABLE_NAME,"` CHANGE COLUMN `",COLUMN_NAME,"` 
    `",COLUMN_NAME,"` ", c.DATA_TYPE, CASE WHEN c.CHARACTER_MAXIMUM_LENGTH IS NOT 
    NULL THEN CONCAT("(", c.CHARACTER_MAXIMUM_LENGTH, ")") ELSE "" END ,"  AFTER 
    `",@NeighboringColumn,"`;")
    FROM information_schema.COLUMNS c, information_schema.TABLES t
    WHERE c.TABLE_SCHEMA = '<YOUR SCHEMA NAME>'
    AND c.COLUMN_NAME = '<COLUMN TO MOVE>'
    AND c.TABLE_SCHEMA = t.TABLE_SCHEMA
    AND c.TABLE_NAME = t.TABLE_NAME
    AND t.TABLE_TYPE = 'BASE TABLE'
    AND @NeighboringColumn IN (SELECT COLUMN_NAME 
        FROM information_schema.COLUMNS c2 
        WHERE c2.TABLE_NAME = t.TABLE_NAME);
    
  5. from https://stackoverflow.com/questions/6805426/how-to-move-columns-in-a-mysql-table by cc-by-sa and MIT license