Ответ 1
Да, конечно
ALTER TABLE table_name MODIFY column_name VARCHAR(X)
Можно ли легко преобразовать столбец с данными в нем как TEXT
в VARCHAR(X)
? Нет существующих записей в столбце больше, чем X
.
Да, конечно
ALTER TABLE table_name MODIFY column_name VARCHAR(X)
Для MS SQL:
ALTER TABLE table_name
ALTER COLUMN column_name datatype(value)
Для MySQL
ALTER TABLE table_name
MODIFY column_name datatype(value)
Я использовал это для массового изменения моей БД. Выполните его, затем скопируйте все строки, вставьте в поле запроса, удалите заголовок и запустите.
Измените ДВИГАТЕЛЬ, CHARSET и COLLATION всех таблиц в DB = thed:
SELECT CONCAT("ALTER TABLE ", TABLE_SCHEMA, '.', TABLE_NAME," ENGINE=INNODB,
CHARSET=utf8, COLLATE=utf8_general_ci;") AS ExecuteTheString
FROM INFORMATION_SCHEMA.TABLES
WHERE TABLE_SCHEMA="itsd"
AND TABLE_TYPE="BASE TABLE";
Преобразование CHARSET и COLLATION всех таблиц в DB = thed:
SELECT CONCAT("ALTER TABLE ", TABLE_SCHEMA, '.', TABLE_NAME," CONVERT TO
CHARACTER SET utf8;") AS ExecuteTheString
FROM INFORMATION_SCHEMA.TABLES
WHERE TABLE_SCHEMA="itsd"
AND TABLE_TYPE="BASE TABLE";
Измените все поля TEXT на VARCHAR (255) всех таблиц в DB = thed:
SELECT CONCAT('ALTER TABLE ', table_schema, '.', table_name, ' MODIFY COLUMN ',
column_name, ' VARCHAR(255);')
FROM information_schema.columns
WHERE TABLE_SCHEMA = 'itsd'
AND DATA_TYPE = 'text'
AND TABLE_TYPE="BASE TABLE";