Birden çok sütunun veri türünü float'tan int'ye değiştirmek istiyorum. Bunu yapmanın en basit yolu nedir?MySQL'de bir sütun için veri türünü nasıl değiştiririm?
Henüz endişelenecek bir veri yok.
Birden çok sütunun veri türünü float'tan int'ye değiştirmek istiyorum. Bunu yapmanın en basit yolu nedir?MySQL'de bir sütun için veri türünü nasıl değiştiririm?
Henüz endişelenecek bir veri yok.
http://dev.mysql.com/doc/refman/5.1/en/alter-table.html
ALTER TABLE tablename MODIFY columnname INTEGER;
Bu sütunlar bunu bir komut dosyası oluşturabilir veya MySQL istemci GUI
çeşit kullanmak iyi olabilir değiştirmek istediğiniz howmany bağlı verilen sütundaveri türünü değişecek
Dostu hatırlatma - Sütunlar için varsayılan BOŞLUKTUR, bu nedenle NOT NULL sütununuz varsa, "DEĞİŞTİRME sütun numarası INTEGER NOT NULL" seçeneğini kullanmayı unutmayın, aksi halde sütununuzu NOT NULL - NULL olarak değiştireceksiniz. – Despertar
Tablodaki verileri silecek veya bir şey yeni sütun türüyle ilgili bir şikayette bulunmuyorsa yürütme başarısız olur mu? – EndermanAPM
ALTER TABLE tabename MODIFY sütun adı INTEGER imzasız; <- imzasız yeni sütunu önemsiyorsanız. Benim davamdı. – mircealungu
Örneğin, alter table ... change ...
yöntemi kullanın:
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 table_name modify column_name int(5)
Ayrıca bu kullanabilirsiniz:
ALTER TABLE [tablename] CHANGE [columnName] [columnName] DECIMAL (10,2)
bunu başka bir türle belli türdeki tüm sütunları değiştirmek isterseniz, böyle bir sorgu kullanarak sorgular oluşturabilir:
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>';
Eğer bit(1)
için tinyint(4)
sütunları değiştirmek istiyorsanız örneğin, bu gibi çalıştırın:
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)';
ve böyle bir sonuç alırsınız:
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;
!! Benzersiz kısıtlamalar tutmaz, ancak -parametresi ile concat
'a kolayca sabitlenmelidir. Ben .. gerekirse o uygulamak için okuyucuya
Alter TABLE `tableName` MODIFY COLUMN `ColumnName` datatype(length);
Ör o kadar bırakacağım:
Alter TABLE `tbl_users` MODIFY COLUMN `dup` VARCHAR(120);
Sadece bu açık hale getirmek için, ('alter table' kullanarak) aşağıda cevapları olacak Aslında, sütun zaten veri içeriyor olsa bile çalışır. Ancak, bir kayan sütunun bir tamsayı sütununa dönüştürülmesi, içinde tamsayı olmayan değerlerin en yakın tam sayıya yuvarlanmasına neden olur. –