Tôi muốn thay đổi kiểu dữ liệu của nhiều cột từ float sang int. Cách đơn giản nhất để làm điều này là gì?
Không có dữ liệu để lo lắng, chưa.
Tôi muốn thay đổi kiểu dữ liệu của nhiều cột từ float sang int. Cách đơn giản nhất để làm điều này là gì?
Không có dữ liệu để lo lắng, chưa.
Câu trả lời:
http://dev.mysql.com/doc/refman/5.1/en/alter-table.html
ALTER TABLE tablename MODIFY columnname INTEGER;
Điều này sẽ thay đổi kiểu dữ liệu của cột đã cho
Tùy thuộc vào các cột mà bạn muốn sửa đổi, có thể tốt nhất để tạo tập lệnh hoặc sử dụng một số loại GUI máy khách mysql
Nếu bạn muốn thay đổi tất cả các cột của một loại nhất định sang loại khác, bạn có thể tạo các truy vấn bằng cách sử dụng một truy vấn như thế này:
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>';
Ví dụ: nếu bạn muốn thay đổi các cột từ tinyint(4)
sang bit(1)
, hãy chạy nó như thế này:
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)';
và nhận được một đầu ra như thế này:
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;
!! Không giữ ràng buộc duy nhất, nhưng nên được dễ dàng cố định với một if
-parameter tới concat
. Tôi sẽ để nó cho độc giả thực hiện nếu cần ..
Alter TABLE `tableName` MODIFY COLUMN `ColumnName` datatype(length);
Ví dụ :
Alter TABLE `tbl_users` MODIFY COLUMN `dup` VARCHAR(120);
Bạn sử dụng alter table ... change ...
phương pháp, ví dụ:
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)
Để thay đổi kiểu dữ liệu cột, có phương thức thay đổi và phương thức sửa đổi
ALTER TABLE student_info CHANGE roll_no roll_no VARCHAR(255);
ALTER TABLE student_info MODIFY roll_no VARCHAR(255);
Để thay đổi tên trường cũng sử dụng phương thức thay đổi
ALTER TABLE student_info CHANGE roll_no identity_no VARCHAR(255);
https://dev.mysql.com/doc/refman/8.0/en/alter-table.html
Bạn cũng có thể đặt giá trị mặc định cho cột chỉ cần thêm từ khóa DEFAULT theo sau là giá trị.
ALTER TABLE [table_name] MODIFY [column_name] [NEW DATA TYPE] DEFAULT [VALUE];
Điều này cũng hoạt động cho MariaDB (phiên bản thử nghiệm 10.2)
ALTER TABLE
trên thực tế, các câu trả lời (sử dụng ) sẽ hoạt động ngay cả khi cột đã chứa dữ liệu. Tuy nhiên, việc chuyển đổi một cột float thành một cột số nguyên sẽ khiến bất kỳ giá trị không nguyên nào trong đó được làm tròn thành số nguyên gần nhất.