8 ответов:
http://dev.mysql.com/doc/refman/5.1/en/alter-table.html
ALTER TABLE tablename MODIFY columnname INTEGER;это изменит тип данных данного столбца
в зависимости от того, сколько столбцов вы хотите изменить, лучше всего создать скрипт или использовать какой-то графический интерфейс клиента mysql
вы также можете использовать это:
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