Как изменить тип данных для столбца в MySQL?



Я хочу изменить тип данных нескольких столбцов с float на int. Каков самый простой способ сделать это?



пока нет данных, о которых можно было бы беспокоиться.

1604   8  

8 ответов:

http://dev.mysql.com/doc/refman/5.1/en/alter-table.html

ALTER TABLE tablename MODIFY columnname INTEGER;

это изменит тип данных данного столбца

в зависимости от того, сколько столбцов вы хотите изменить, лучше всего создать скрипт или использовать какой-то графический интерфейс клиента mysql

alter table table_name modify column_name int(5)

вы также можете использовать это:

ALTER TABLE [tablename] CHANGE [columnName] [columnName] DECIMAL (10,2)

если вы хотите изменить все столбцы определенного типа на другой тип, вы можете генерировать запросы, используя такой запрос:

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);

Ex:

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

вы также можете установить значение по умолчанию для столбца просто добавьте ключевое слово по умолчанию, за которым следует значение.

ALTER TABLE [table_name] MODIFY [column_name] [NEW DATA TYPE] DEFAULT [VALUE];

Это также работает для MariaDB (тестируемая версия 10.2)

Comments

    Ничего не найдено.