Saya ingin mengubah tipe data beberapa kolom dari float ke int. Apa cara paling sederhana untuk melakukan ini?
Belum ada data yang perlu dikhawatirkan.
Saya ingin mengubah tipe data beberapa kolom dari float ke int. Apa cara paling sederhana untuk melakukan ini?
Belum ada data yang perlu dikhawatirkan.
Jawaban:
http://dev.mysql.com/doc/refman/5.1/en/alter-table.html
ALTER TABLE tablename MODIFY columnname INTEGER;
Ini akan mengubah tipe data dari kolom yang diberikan
Bergantung pada berapa banyak kolom yang ingin Anda modifikasi, mungkin yang terbaik adalah membuat skrip, atau menggunakan semacam GUI klien mysql
Jika Anda ingin mengubah semua kolom dari jenis tertentu ke jenis lain, Anda dapat membuat kueri menggunakan kueri seperti ini:
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>';
Misalnya, jika Anda ingin mengubah kolom dari tinyint(4)
menjadi bit(1)
, jalankan seperti ini:
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)';
dan dapatkan output seperti ini:
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;
!! Tidak menyimpan batasan unik, tetapi harus mudah diperbaiki dengan if
parameter -parameter lain concat
. Saya akan menyerahkannya kepada pembaca untuk mengimplementasikannya jika diperlukan ..
Alter TABLE `tableName` MODIFY COLUMN `ColumnName` datatype(length);
Mis:
Alter TABLE `tbl_users` MODIFY COLUMN `dup` VARCHAR(120);
Anda menggunakan alter table ... change ...
metode ini, misalnya:
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)
Untuk mengubah tipe data kolom ada metode perubahan dan metode modifikasi
ALTER TABLE student_info CHANGE roll_no roll_no VARCHAR(255);
ALTER TABLE student_info MODIFY roll_no VARCHAR(255);
Untuk mengubah nama bidang juga gunakan metode perubahan
ALTER TABLE student_info CHANGE roll_no identity_no VARCHAR(255);
https://dev.mysql.com/doc/refman/8.0/id/alter-table.html
Anda juga dapat menetapkan nilai default untuk kolom cukup tambahkan kata kunci DEFAULT diikuti oleh nilai.
ALTER TABLE [table_name] MODIFY [column_name] [NEW DATA TYPE] DEFAULT [VALUE];
Ini juga berfungsi untuk MariaDB (diuji versi 10.2)
ALTER TABLE
) akan, pada kenyataannya, bekerja bahkan jika kolom sudah berisi data. Namun, mengubah kolom float menjadi kolom integer akan menyebabkan nilai non-integer di dalamnya dibulatkan ke integer terdekat.