Sql 在表格中间插入新列?

Sql 在表格中间插入新列?,sql,database,oracle,Sql,Database,Oracle,使用“ALTERTABLETABADDCOL”时,新列将添加到表的末尾。例如: TABLE: TAB COL_1 COL_2 COL_4 ALTER TABLE TAB ADD COL_3 桌子将变成 TABLE: TAB COL_1 COL_2 COL_4 COL_3 然而,正如我的示例列的命名所表明的那样,我实际上希望该表以如下方式结束: TABLE: TAB COL_1 COL_2 COL_3 COL_4 第3列在第4列之前 除了从头开始重建表外,是否有任何标准SQL可以完成这项

使用“ALTERTABLETABADDCOL”时,新列将添加到表的末尾。例如:

TABLE: TAB
COL_1 COL_2 COL_4

ALTER TABLE TAB ADD COL_3
桌子将变成

TABLE: TAB
COL_1 COL_2 COL_4 COL_3
然而,正如我的示例列的命名所表明的那样,我实际上希望该表以如下方式结束:

TABLE: TAB
COL_1 COL_2 COL_3 COL_4 
第3列在第4列之前

除了从头开始重建表外,是否有任何标准SQL可以完成这项工作?但是,如果没有标准SQL,我仍然可以使用一些依赖于供应商的Oracle解决方案,但同样,标准解决方案是最好的


谢谢。

默认情况下,列仅添加在末尾

在中间插入一个列,您必须删除并重新创建表和所有相关对象(约束、索引、默认值、关系等)。

有几种工具可以为您执行此操作,根据表的大小,这可能是一项密集型操作

您还可以考虑在表中创建按优先顺序显示列的视图(重写表中的实际顺序)。

< P>表示不能完成,并建议重命名表并执行<代码>创建表作为选择…<代码>或(我不熟悉的东西)。“使用DBMS_重新定义包更改结构”

更改表表名 更改列名 位置X

我知道这是一个老话题(2009年),但也许它会帮助那些仍然在寻找答案的人。在MySQL中,它可以工作2在表中的任何位置添加一列

ALTER TABLE `tablename` ADD `column_name1` TEXT NOT NULL AFTER `column_name2`;
这是2输入一个文本列,但是你可以为新列设置你想要的任何属性,只要确保你用大写字母写它们就可以了

我用XAMPP找到它,MySQL admin,当我使用它时,2在MySQL表的中间插入一个列。

希望能有所帮助。

它很有效

ALTER TABLE tablename ADD columnname datatype AFTER columnname;

根据我的小型研究,唯一的方法是按照所需的列顺序创建上一个表的视图,或者从头开始重新创建表,在一些sql查询工具中,“AFTER”关键字可能会起作用。

如果您有表col_1、col_2、col_4,您想在col_2之后添加col_3,您可以简单地执行以下操作:

alter table <table_name> modify col_4 invisible;
alter table <table_name> add col_3 <type>;
alter table <table_name> modify col_4 visible;
altertable修改col_4不可见;
更改表格,添加第3列;
alter table modify COLU 4可见;

这真的重要吗?列顺序不应该与任何内容相关,除非您使用的是
select*
,在这种情况下,您不应该是…@skaffman,我理解您的意思,select*有点粗糙。但是能够使用它真的很好,特别是对于针对数据库发送的快速自定义查询。到目前为止,每个人都在使用select*,我的选择是修复列顺序或重新教育每个人(他们只是想快速、轻松地完成工作)他们需要使用正确的SQL。“这些人”是程序员,但不是DB程序员,他们发现需要编写大量的查询来回答一个简单的问题很麻烦。@Robert Gould-给人们一个文本文件,其中包含他们可以使用的常见查询,或者至少给他们“从表名中选择…然后他们就可以把剩下的内容放进去。@Robert:这是一个想法,然后:为每个表定义一个视图,该视图具有固定的列顺序,并让用户
从中选择*
,而不是从表中选择。重新创建视图比创建表容易得多。@skaffman,谢谢:)显然这就是我要解决的问题,因为它似乎不可能完成我最初想做的事情。是的,视图解决方案就是我知道的,这将是我的第一次尝试,但是有点希望有一个更简单的解决方案:/Is
POSITION
特定于MySQL吗?这也适用于MySQL。这不是标准的SQL。但答案可能会帮助有类似问题的人使用支持此功能的DB我做错了吗<代码>更改表费用\u测试表更改列col3位置3给出错误:错误1064(42000):您的SQL语法有错误;请查看与您的MySQL服务器版本对应的手册,以了解第1行“位置3”附近要使用的正确语法。请告诉我上述查询的SQL兼容版本