在mysql中创建表时更改列数据类型

问题描述

我正在使用选择查询从现有表中创建新表。现有的表列的数据类型为varchar(255),因此在新创建的表中,该列包含认的varchar数据类型。

现在如何将新表列更改为其他数据类型TEXT。这是mySQL查询。尝试使用cast()和convert(),但不适用于TEXT数据类型

findBy

我想要TEXT数据类型的“信息”列。

感谢您的帮助。

解决方法

TEXT本质上是VARCHAR(...)的变体。

CREATE TABLE topper (
    Information TEXT NOT NULL,) AS
SELECT studentname as `Name`,rollno as `Roll_No`,description as `Information`
FROM student;

请注意,您可以在CREATE内指定列,索引等。处理过程将按名称匹配各列,然后填写其余的列。

或者...

拥有包含x VARCHAR(255) NOT NULL的表格后,您可以通过以下方式将其更改为TEXT

ALTER TABLE t
    MODIFY COLUMN x TEXT NOT NULL;

您可以从VARCHAR转到TEXT,反之亦然;请注意,由于它们具有不同的“最大大小”,您可能会被截断。做SHOW WARNINGS;运行ALTER之后。

此外,请确保包括所有额外的子句(NULL,CHARSET等)。

考虑这些问题和类似问题的另一种方法是逻辑,将数据作为字符串转储,然后插入。即,将应用对字符串的任何转换。实际上,不需要CAST / CONVERT,至少不需要在TEXT和VARCHAR之间。

,

首先执行CREATE TABLE,然后执行INSERT SELECT。像这样的东西。

CREATE OR REPLACE TABLE topper (
    Name        VARCHAR(255),Roll_No     INT,Information TEXT
);

INSERT INTO topper (Name,Roll_No,Information)
     SELECT studentname as `Name`,description as `Information`
       FROM student;

这是一个好习惯,因为它使您可以根据需要明确表的数据类型。这也很好,因为它允许您在新表中指定索引,主键和排序规则。