답변:
http://dev.mysql.com/doc/refman/5.1/en/alter-table.html
ALTER TABLE tablename MODIFY columnname INTEGER;
주어진 열의 데이터 유형이 변경됩니다
수정하려는 howmany 열에 따라 스크립트를 생성하거나 일종의 mysql 클라이언트 GUI를 사용하는 것이 가장 좋습니다.
특정 유형의 모든 열을 다른 유형으로 변경하려는 경우 다음과 같은 쿼리를 사용하여 쿼리를 생성 할 수 있습니다.
select distinct concat('alter table ',
table_name,
' modify ',
column_name,
' <new datatype> ',
if(is_nullable = 'NO', ' NOT ', ''),
' NULL;')
from information_schema.columns
where table_schema = '<your database>'
and column_type = '<old datatype>';
예를 들어 열을에서 tinyint(4)
로 변경 bit(1)
하려면 다음과 같이 실행하십시오.
select distinct concat('alter table ',
table_name,
' modify ',
column_name,
' bit(1) ',
if(is_nullable = 'NO', ' NOT ', ''),
' NULL;')
from information_schema.columns
where table_schema = 'MyDatabase'
and column_type = 'tinyint(4)';
다음과 같은 출력을 얻습니다.
alter table table1 modify finished bit(1) NOT NULL;
alter table table2 modify canItBeTrue bit(1) NOT NULL;
alter table table3 modify canBeNull bit(1) NULL;
!! 고유 제한 조건을 유지하지 않지만 다른 if
매개 변수를 사용하여 쉽게 고정해야합니다 concat
. 필요한 경우이를 구현하기 위해 독자에게 맡기겠습니다 ..
Alter TABLE `tableName` MODIFY COLUMN `ColumnName` datatype(length);
예 :
Alter TABLE `tbl_users` MODIFY COLUMN `dup` VARCHAR(120);
alter table ... change ...
예를 들어 다음 과 같은 방법을 사용합니다 .
mysql> create table yar (id int);
Query OK, 0 rows affected (0.01 sec)
mysql> insert into yar values(5);
Query OK, 1 row affected (0.01 sec)
mysql> alter table yar change id id varchar(255);
Query OK, 1 row affected (0.03 sec)
Records: 1 Duplicates: 0 Warnings: 0
mysql> desc yar;
+-------+--------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+-------+--------------+------+-----+---------+-------+
| id | varchar(255) | YES | | NULL | |
+-------+--------------+------+-----+---------+-------+
1 row in set (0.00 sec)
https://dev.mysql.com/doc/refman/8.0/en/alter-table.html
열의 기본값을 설정하여 DEFAULT 키워드를 추가 한 다음 값을 추가 할 수도 있습니다.
ALTER TABLE [table_name] MODIFY [column_name] [NEW DATA TYPE] DEFAULT [VALUE];
이것은 MariaDB (테스트 버전 10.2)에서도 작동합니다.
ALTER TABLE
실제로 열에 이미 데이터가 포함되어 있어도 아래의 (을 사용하여 ) 대답이 작동합니다. 그러나 부동 열을 정수 열로 변환하면 정수가 아닌 값이 가장 가까운 정수로 반올림됩니다.