Chcę zmienić typ danych wielu kolumn z float na int. Jaki jest najprostszy sposób to zrobić?
Nie ma jeszcze żadnych danych do zmartwienia.
Chcę zmienić typ danych wielu kolumn z float na int. Jaki jest najprostszy sposób to zrobić?
Nie ma jeszcze żadnych danych do zmartwienia.
Odpowiedzi:
http://dev.mysql.com/doc/refman/5.1/en/alter-table.html
ALTER TABLE tablename MODIFY columnname INTEGER;
Spowoduje to zmianę typu danych danej kolumny
W zależności od liczby kolumn, które chcesz zmodyfikować, najlepiej wygenerować skrypt lub użyć GUI klienta mysql
Jeśli chcesz zmienić wszystkie kolumny określonego typu na inny typ, możesz generować zapytania za pomocą zapytania takiego jak to:
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>';
Na przykład, jeśli chcesz zmienić kolumny z tinyint(4)
na bit(1)
, uruchom go w następujący sposób:
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)';
i uzyskaj wynik podobny do tego:
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;
!! Nie utrzymuje unikalnych ograniczeń, ale powinien być łatwo naprawiony za pomocą innego if
parametru do concat
. W razie potrzeby pozostawię to czytelnikowi.
Alter TABLE `tableName` MODIFY COLUMN `ColumnName` datatype(length);
Np .:
Alter TABLE `tbl_users` MODIFY COLUMN `dup` VARCHAR(120);
Korzystasz z alter table ... change ...
metody, na przykład:
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)
Aby zmienić typ danych kolumny, należy zmienić metodę i zmodyfikować metodę
ALTER TABLE student_info CHANGE roll_no roll_no VARCHAR(255);
ALTER TABLE student_info MODIFY roll_no VARCHAR(255);
Aby zmienić nazwę pola, użyj również metody zmiany
ALTER TABLE student_info CHANGE roll_no identity_no VARCHAR(255);
https://dev.mysql.com/doc/refman/8.0/en/alter-table.html
Możesz także ustawić wartość domyślną dla kolumny, po prostu dodaj słowo kluczowe DEFAULT, a następnie wartość.
ALTER TABLE [table_name] MODIFY [column_name] [NEW DATA TYPE] DEFAULT [VALUE];
Działa to również w przypadku MariaDB (testowana wersja 10.2)
ALTER TABLE
) będą w rzeczywistości działać, nawet jeśli kolumna zawiera już dane. Jednak konwersja kolumny swobodnej w kolumnę całkowitą spowoduje zaokrąglenie w niej wartości innych niż całkowite do najbliższej liczby całkowitej.