Я хочу змінити тип даних декількох стовпців з float на int. Який найпростіший спосіб це зробити?
Поки що немає даних, що турбуватися.
Я хочу змінити тип даних декількох стовпців з float на int. Який найпростіший спосіб це зробити?
Поки що немає даних, що турбуватися.
Відповіді:
http://dev.mysql.com/doc/refman/5.1/uk/alter-table.html
ALTER TABLE tablename MODIFY columnname INTEGER;
Це змінить тип даних даного стовпця
Залежно від кількості колонок, які ви бажаєте змінити, можливо, найкраще створити сценарій або використовувати якийсь графічний інтерфейс клієнта mysql
Якщо ви хочете змінити всі стовпці певного типу на інший, ви можете генерувати запити, використовуючи такий запит:
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)
Для зміни типу даних стовпців існують метод зміни та метод модифікації
ALTER TABLE student_info CHANGE roll_no roll_no VARCHAR(255);
ALTER TABLE student_info MODIFY roll_no VARCHAR(255);
Для зміни назви поля також використовуйте метод зміни
ALTER TABLE student_info CHANGE roll_no identity_no VARCHAR(255);
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
), насправді працюватимуть, навіть якщо стовпець уже містить дані. Однак перетворення стовпчика з плавкою в цілий цілий стовпець призведе до округлення будь-яких не цілих значень у ньому до найближчого цілого числа.