Um dies explizit zu machen 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.
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
Freundliche Erinnerung - Die Standardeinstellung für Spalten ist NULLABLE. Wenn Sie also eine NOT NULL-Spalte haben, vergessen Sie nicht, "MODIFY columnname INTEGER NOT NULL" zu verwenden. Andernfalls ändern Sie Ihre Spalte von NOT NULL in NULL.
Despertar
3
Löscht alter table die Daten in der Tabelle oder schlägt die Ausführung fehl, wenn beim neuen Spaltentyp keine Beanstandung vorliegt?
EndermanAPM
1
ALTER TABLE Tabellenname MODIFY Spaltenname INTEGER ohne Vorzeichen; <- Wenn Sie sich dafür interessieren, dass die neue Spalte nicht signiert ist. War mein Fall.
mircealungu
Ich denke, die @ Despertars-Warnung könnte auch relevant sein, um die Spezifikationen von CHARSET oder COLLATE beizubehalten.
!! Behält keine eindeutigen Einschränkungen bei, sollte aber leicht mit einem anderen ifParameter zu behoben werden können concat. Ich überlasse es dem Leser, dies bei Bedarf umzusetzen.
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.Antworten:
http://dev.mysql.com/doc/refman/5.1/en/alter-table.html
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
quelle
quelle
Sie können dies auch verwenden:
quelle
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:
Wenn Sie beispielsweise Spalten von
tinyint(4)
in ändern möchtenbit(1)
, führen Sie es folgendermaßen aus:und erhalten Sie eine Ausgabe wie folgt:
!! Behält keine eindeutigen Einschränkungen bei, sollte aber leicht mit einem anderen
if
Parameter zu behoben werden könnenconcat
. Ich überlasse es dem Leser, dies bei Bedarf umzusetzen.quelle
Ex :
quelle
Sie verwenden die
alter table ... change ...
Methode zum Beispiel:quelle
quelle
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.
Dies funktioniert auch für MariaDB (getestete Version 10.2)
quelle
Wenn Sie die Spaltendetails ändern möchten, fügen Sie einen Kommentar hinzu
quelle