面试题答案
一键面试- 创建临时表:
- 创建一个与
user_info
表结构类似的临时表,除了phone
列的数据类型为INTEGER
。
CREATE TABLE user_info_temp ( -- 假设表中还有其他列,如id和name,这里一并列出 id INTEGER PRIMARY KEY, name TEXT, phone INTEGER );
- 创建一个与
- 迁移数据:
- 从原
user_info
表中读取数据,转换phone
列的数据类型后插入到临时表中。这里假设phone
列中的数据都是合法的整数形式的字符串,如果有非数字字符串可能需要额外处理。
INSERT INTO user_info_temp (id, name, phone) SELECT id, name, CAST(phone AS INTEGER) FROM user_info;
- 从原
- 删除原表:
DROP TABLE user_info;
- 重命名临时表:
ALTER TABLE user_info_temp RENAME TO user_info;
在上述步骤中,通过创建临时表并迁移数据,确保了在修改phone
列数据类型时数据的完整性和正确性。但要注意,CAST(phone AS INTEGER)
前提是phone
列中的数据都可以正确转换为INTEGER
类型,如果存在不能转换的情况,需要先进行数据清理或特殊处理。