ฉันต้องการเปลี่ยนชนิดข้อมูลของหลายคอลัมน์จาก float เป็น int วิธีที่ง่ายที่สุดในการทำเช่นนี้คืออะไร?
ยังไม่มีข้อมูลที่ต้องกังวล
ฉันต้องการเปลี่ยนชนิดข้อมูลของหลายคอลัมน์จาก float เป็น int วิธีที่ง่ายที่สุดในการทำเช่นนี้คืออะไร?
ยังไม่มีข้อมูลที่ต้องกังวล
คำตอบ:
http://dev.mysql.com/doc/refman/5.1/en/alter-table.html
ALTER TABLE tablename MODIFY columnname INTEGER;
สิ่งนี้จะเปลี่ยนประเภทข้อมูลของคอลัมน์ที่กำหนด
ขึ้นอยู่กับคอลัมน์ที่คุณต้องการแก้ไขมันอาจจะดีที่สุดในการสร้างสคริปต์หรือใช้ GUI ไคลเอนต์ mysql บางประเภท
alter table table_name modify column_name int(5)
คุณยังสามารถใช้สิ่งนี้:
ALTER TABLE [tablename] CHANGE [columnName] [columnName] DECIMAL (10,2)
หากคุณต้องการเปลี่ยนคอลัมน์ทั้งหมดของประเภทที่แน่นอนเป็นประเภทอื่นคุณสามารถสร้างแบบสอบถามโดยใช้แบบสอบถามเช่นนี้:
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>';
ตัวอย่างเช่นหากคุณต้องการเปลี่ยนคอลัมน์จากเป็นtinyint(4)
ให้bit(1)
เรียกใช้ดังนี้:
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)';
และรับผลลัพธ์เช่นนี้
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;
!! ไม่ให้ข้อ จำกัด ที่ไม่ซ้ำกัน แต่ควรได้รับการแก้ไขได้อย่างง่ายดายอีกด้วยif
-parameter concat
ไป ฉันจะปล่อยให้ผู้อ่านนำไปใช้หากจำเป็น ..
Alter TABLE `tableName` MODIFY COLUMN `ColumnName` datatype(length);
เช่น
Alter TABLE `tbl_users` MODIFY COLUMN `dup` VARCHAR(120);
คุณใช้alter table ... change ...
วิธีการเช่น:
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)
ในการเปลี่ยนประเภทข้อมูลคอลัมน์มี วิธีการเปลี่ยนและแก้ไขวิธี
ALTER TABLE student_info CHANGE roll_no roll_no VARCHAR(255);
ALTER TABLE student_info MODIFY roll_no VARCHAR(255);
หากต้องการเปลี่ยนชื่อฟิลด์ให้ใช้วิธีการเปลี่ยนด้วย
ALTER TABLE student_info CHANGE roll_no identity_no VARCHAR(255);
https://dev.mysql.com/doc/refman/8.0/en/alter-table.html
นอกจากนี้คุณยังสามารถตั้งค่าเริ่มต้นสำหรับคอลัมน์เพียงเพิ่มคำหลัก DEFAULT ตามด้วยค่า
ALTER TABLE [table_name] MODIFY [column_name] [NEW DATA TYPE] DEFAULT [VALUE];
สิ่งนี้ยังใช้งานได้กับ MariaDB (เวอร์ชั่นทดสอบ 10.2)
หากคุณต้องการแก้ไขรายละเอียดคอลัมน์เพิ่มความคิดเห็นใช้สิ่งนี้
ALTER TABLE [table_name] MODIFY [column_name] [new data type] DEFAULT [VALUE] COMMENT '[column comment]'
ALTER TABLE
) จะใช้งานได้จริงแม้ว่าคอลัมน์จะมีข้อมูลอยู่แล้ว อย่างไรก็ตามการแปลงคอลัมน์ลอยเป็นคอลัมน์จำนวนเต็มจะทำให้ค่าที่ไม่ใช่จำนวนเต็มใด ๆ ในนั้นถูกปัดเศษเป็นจำนวนเต็มที่ใกล้ที่สุด