Ich möchte den Datentyp mehrerer Spalten von float in int ändern. Was ist der einfachste Weg, dies zu tun?
Es gibt noch keine Daten, über die Sie sich Sorgen machen müssen.
Ich möchte den Datentyp mehrerer Spalten von float in int ändern. Was ist der einfachste Weg, dies zu tun?
Es gibt noch keine Daten, über die Sie sich Sorgen machen müssen.
Antworten:
http://dev.mysql.com/doc/refman/5.1/en/alter-table.html
ALTER TABLE tablename MODIFY columnname INTEGER;
Dadurch wird der Datentyp der angegebenen Spalte geändert
Abhängig davon, wie viele Spalten Sie ändern möchten, ist es möglicherweise am besten, ein Skript zu generieren oder eine Art MySQL-Client-GUI zu verwenden
Wenn Sie alle Spalten eines bestimmten Typs in einen anderen Typ ändern möchten, können Sie Abfragen mit einer Abfrage wie der folgenden generieren:
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>';
Wenn Sie beispielsweise Spalten von tinyint(4)
in ändern möchten bit(1)
, führen Sie es folgendermaßen aus:
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)';
und erhalten Sie eine Ausgabe wie folgt:
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;
!! Behält keine eindeutigen Einschränkungen bei, sollte aber leicht mit einem anderen if
Parameter zu behoben werden können concat
. Ich überlasse es dem Leser, dies bei Bedarf umzusetzen.
Alter TABLE `tableName` MODIFY COLUMN `ColumnName` datatype(length);
Ex :
Alter TABLE `tbl_users` MODIFY COLUMN `dup` VARCHAR(120);
Sie verwenden die alter table ... change ...
Methode zum Beispiel:
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)
Um Spaltendatentyp Änderung gibt es Änderungsverfahren und modify - Methode
ALTER TABLE student_info CHANGE roll_no roll_no VARCHAR(255);
ALTER TABLE student_info MODIFY roll_no VARCHAR(255);
Um die Feldnamen zu ändern verwenden auch die Änderungsverfahren
ALTER TABLE student_info CHANGE roll_no identity_no VARCHAR(255);
https://dev.mysql.com/doc/refman/8.0/en/alter-table.html
Sie können auch einen Standardwert für die Spalte festlegen, indem Sie einfach das Schlüsselwort DEFAULT gefolgt vom Wert hinzufügen.
ALTER TABLE [table_name] MODIFY [column_name] [NEW DATA TYPE] DEFAULT [VALUE];
Dies funktioniert auch für MariaDB (getestete Version 10.2)
ALTER TABLE
, funktionieren die folgenden Antworten (mit ) tatsächlich auch dann, wenn die Spalte bereits Daten enthält. Wenn Sie jedoch eine Float-Spalte in eine Ganzzahl-Spalte konvertieren, werden alle darin enthaltenen Nicht-Ganzzahl-Werte auf die nächste Ganzzahl gerundet.