在mysql中创建表时更改列数据类型
我正在使用select查询从现有表创建新表。数据类型为varchar(255)的现有表列,因此在新创建的表中,该列默认包含varchar数据类型 现在,如何将新表列更改为其他数据类型文本。下面是mysql查询。尝试了cast()和convert(),但对文本数据类型无效在mysql中创建表时更改列数据类型,mysql,select,mysql-workbench,create-table,sqldatatypes,Mysql,Select,Mysql Workbench,Create Table,Sqldatatypes,我正在使用select查询从现有表创建新表。数据类型为varchar(255)的现有表列,因此在新创建的表中,该列默认包含varchar数据类型 现在,如何将新表列更改为其他数据类型文本。下面是mysql查询。尝试了cast()和convert(),但对文本数据类型无效 CREATE TABLE topper AS SELECT studentname as `Name`, rollno as `Roll_No`, description as `Information` FROM stude
CREATE TABLE topper AS
SELECT studentname as `Name`, rollno as `Roll_No`, description as `Information`
FROM student
我需要文本数据类型中的“信息”列
谢谢您的帮助。先创建表格,然后再创建表格。像这样的
CREATE OR REPLACE TABLE topper (
Name VARCHAR(255),
Roll_No INT,
Information TEXT
);
INSERT INTO topper (Name, Roll_No, Information)
SELECT studentname as `Name`, rollno as `Roll_No`, description as `Information`
FROM student;
这是一个很好的实践,因为它允许您按照自己的要求明确新表的数据类型。它也很好,因为它允许您在新表中指定索引、主键和排序规则等内容。
TEXT
本质上是VARCHAR(…)
的一个变体
请注意,您可以在CREATE
中指定列、索引等。处理过程将按名称匹配列,然后填充其余列
或者
当您有一个x VARCHAR(255)不为空的表之后,您可以通过
ALTER TABLE t
MODIFY COLUMN x TEXT NOT NULL;
您可以从VARCHAR
转到TEXT
,反之亦然;请注意,因为它们的“最大大小”不同,所以可能会被截断。不显示警告
;运行ALTER
后
另外,确保包含所有额外的子句(NULL、CHARSET等)
考虑这些和类似问题的另一种方式是,从逻辑上讲,数据作为字符串转储,然后插入。也就是说,将应用与字符串之间的任何转换。实际上,不需要强制转换/转换,至少不需要在TEXT和VARCHAR之间转换。为什么不在以后使用
ALTER TABLE
?更改列类型,或者使用@NicoHaase链接的手册页面中记录的步骤,“选择列的数据类型也可以通过在“创建表”部分中指定列来覆盖。”我不同意这个问题不够清晰。问题不必太复杂就可以清楚。
ALTER TABLE t
MODIFY COLUMN x TEXT NOT NULL;