标签: alter-table

Oracle添加了一个虚拟列,增加了年份

我正在尝试添加一个日期类型的虚拟列,该列将五年添加到另一个日期列:

ALTER TABLE AU_Ventes ADD (
DateVente date NOT NULL,
DateFinGarantie date As(ADD_MONTHS(DateVente, 60))
);
Run Code Online (Sandbox Code Playgroud)

但我收到错误:“%s:无效标识符”。也许我无法在 ALTER TABLE 中使用 ADD_MONTHS 函数。我可以做什么来完成我想做的事?

谢谢。

sql oracle alter-table

1
推荐指数
1
解决办法
4544
查看次数

mysql ALTER 表查询中的 AFTER 关键字

当我看到以下形式的更改查询时,我正在浏览一些代码:

alter table table_name add column tags varchar(25) default null after some_field;
Run Code Online (Sandbox Code Playgroud)

阅读Table的 mysql 文档ALTER, AFTER 关键字的目的是

要在表行中的特定位置添加列,请使用 FIRST 或 AFTER col_name。默认情况下最后添加列。您还可以在 CHANGE 或 MODIFY 操作中使用 FIRST 和 AFTER 对表中的列进行重新排序。

何时应该使用此关键字?是否建议频繁运行它来更改具有大量(数百万)行的表?

mysql alter-table

1
推荐指数
1
解决办法
6153
查看次数

ORA-00905: 缺少关键字 - 更改表修改列在 Oracle 10g 中不起作用

在为数据库创建表时我经常小心谨慎。这次遇到了要换桌子的情况。

我想更改表中字段/列的数据类型。

更改表中列的数据类型:一般语法

ALTER TABLE table_name ALTER COLUMN column_name datatype
Run Code Online (Sandbox Code Playgroud)

SQL查询:

alter table employee modify column ename varchar(40);
Run Code Online (Sandbox Code Playgroud)

我很少使用Alter和Modify命令。这次尝试时,它向我抛出一个错误,为ORA-00905: missing keyword

我上网查阅了StackOverflow提出的问题,但没有找到相关答案。

我还参考了这个 Oracle 文档: Oracle 参考文档

但这没有帮助。

mysql sql database oracle alter-table

1
推荐指数
1
解决办法
1万
查看次数

SQL:如何使用旧表和新空列中的数据创建新表

我希望用一些旧的数据创建一个新表,但也有我可以编辑的新空列。

我会从:

CREATE TABLE new_table AS SELECT ID, title, summary FROM old_table;
Run Code Online (Sandbox Code Playgroud)

然后用新列更改表:

ALTER TABLE new_table ADD note datatype;
Run Code Online (Sandbox Code Playgroud)

但是我需要我的新空列在标题和摘要之间,而不是像 ALTER 给我的那样“最终”。

我想结合 CREATE TABLE 和 CREATE TABLE AS SELECT - 但那可能吗?

sql alter-table create-table

1
推荐指数
1
解决办法
1269
查看次数

Oracle中如何从缓存中删除表?

我尝试在 Oracle 中添加一个表到缓存

alter table Test_Table cache;
Run Code Online (Sandbox Code Playgroud)

那么现在我怎样才能将其从缓存中删除呢?

database oracle ddl alter-table oracle11g

1
推荐指数
1
解决办法
3999
查看次数

SQL Server 将表追加到现有表

我需要将一个表中的行追加到现有表中。我在想类似以下的内容,但这给出了一个错误

select * 
into table1
from (select * 
      from table1
      union
      select *  
      from table2) as tmp
Run Code Online (Sandbox Code Playgroud)

有没有办法使用ALTER TABLEUPDATEUNION

database sql-server union alter-table sql-update

1
推荐指数
1
解决办法
2万
查看次数

Oracle:如何在不丢失数据的情况下将列数据类型从 VARCHAR 更改为 NUMBER

我的表中有以下列:

  • ID - NUMBER(10,0)
  • NUMBER - VARCHAR(255)

该列中的所有数据NUMBER都是数字。我想将VARCHAR类型更改为整数类型。如何做到不丢失数据?

sql oracle ddl alter-table

1
推荐指数
1
解决办法
1万
查看次数

如何在现有表中添加外键?

我有三张桌子:

1.用户(id,name,birthdate) - PRIMARY KEY('id')

2.联系(身份证,联系人,已验证) - 主要密钥('id')

3. UserContact(User_id,Contact_id) - 没有主键或Foriegn键

问题是在创建UserContact表时我不关心主键或外键.因此,我在zend框架中的UserContact表中插入记录时遇到以下错误.

表必须具有主键,但未找到任何主键

现在我想创建一个MySql脚本,它改变UserContact表,并将User_idContact_id作为来自User和Contact表的外键.如何编写这个脚本.我正在使用phpMyAdmin.

谢谢

php mysql zend-framework alter-table

0
推荐指数
1
解决办法
4478
查看次数

T-SQL -- 为什么 ALTER 和 UPDATE 语句只在分离到它们自己的批处理中时才运行?

我有 update 和 alter 语句,它们仅在将它们放入自己的批处理中时才运行。下面是我的精简版。

DROP TABLE #tmpImportData
USE database_name
GO

DECLARE @localVar VARCHAR(MAX) = 'data'
DECLARE @localVar VARCHAR(MAX) = 'data'
DECLARE @localVar VARCHAR(MAX) = 'data'
DECLARE @localVar int = 1
--Etc...

DECLARE @localVar INT
DECLARE @localVarVARCHAR(50)    
DECLARE @localVar AS BINARY (16)    
---Etc...


CREATE TABLE #tmpImportData (GuideFirstName VARCHAR(MAX), GuideLastName VARCHAR(MAX), 
                             email VARCHAR(MAX), group_id_text VARCHAR(MAX), CandidateName VARCHAR(MAX), 
                             grade_text VARCHAR(5), dateofbirth DATETIME

                             )

SET @sql = 'BULK INSERT #tmpImportData FROM '''+@fileName+''' WITH (FIELDTERMINATOR ='';'', ROWTERMINATOR = ''\n'', FIRSTROW = 1)'
EXEC (@sql) …
Run Code Online (Sandbox Code Playgroud)

t-sql database sql-server alter-table sql-update

0
推荐指数
1
解决办法
1410
查看次数

SQL:根据 CASE 表达式添加一个新列并从另一个表中查找值

我正在尝试将一个名为 Multiplier 的新列添加到名为 Trades 的现有表中。此列的行值将取决于 Trades 表中名为 Type 的另一列。如果 Type 不是“Equity”、“Corp”或“Option”,则需要从另一个名为 ContractSize 的表中查找该值。最后,我希望 Multiplier 列的数据类型为十进制 (7,3 )我的代码是:

ALTER TABLE Portfolio.Trades
ADD Multiplier decimal(7,3) AS
(
CASE 
 WHEN Type = 'Equity' Then 1
 WHEN Type = 'Corp' Then 0.1
 WHEN Type = 'Option' Then 100
ELSE
 (SELECT ContractSize FROM Portfolio.ContractSize CS
 JOIN Portfolio.Trades T
 ON T.Identifier = CS.ContractSize)
)
Run Code Online (Sandbox Code Playgroud)

我在此代码上遇到两个错误:

消息 156,级别 15,状态 1,第 2 行 关键字“AS”附近的语法不正确。
消息 102,级别 15,状态 1,第 12 行 ')' 附近的语法不正确。

非常感谢一些指导。

sql sql-server case alter-table

0
推荐指数
1
解决办法
2万
查看次数

Rails 迁移,如何以批处理方式向表中添加多列

当我想向现有表添加多列时,我可以这样做:

rails g migration AddColumnsToUser col1:integer col2:integer .. etc.
Run Code Online (Sandbox Code Playgroud)

这将生成包含几行的迁移:

def change
  add_column :users, :col1, :integer
  add_column :users, :col2, :integer
end
Run Code Online (Sandbox Code Playgroud)

这将在几个alter table命令中转换为后端数据库:

ALTER TABLE users ADD COLUMN col1 SMALLINT(6) NOT NULL;
ALTER TABLE users ADD COLUMN col2 SMALLINT(6) NOT NULL;
Run Code Online (Sandbox Code Playgroud)

问题是如果你正在处理一个大表,每一个alter table都会花费很多时间,在 MySQL 中更少,因为后端引擎会生成一个表的重复,并且会做很多昂贵的过程。所有这些工作都必须为我要添加的每一列完成。

所以,我的问题是,我怎样才能将所有这些add_column句子聚合成一个,这样结果将是alter table批处理模式,如下所示:

ALTER TABLE users
    ADD COLUMN col1 SMALLINT(6) NOT NULL,
    ADD COLUMN col2 SMALLINT(6) NOT NULL;
Run Code Online (Sandbox Code Playgroud)

migration optimization ruby-on-rails alter-table

0
推荐指数
1
解决办法
2935
查看次数

如何删除MySQL中的唯一约束?

我在网上搜索如何去除MySQL中的唯一约束,发现了很多解决方案。

  1. DROP INDEX index_name ON table_name;
    
    Run Code Online (Sandbox Code Playgroud)
  2. ALTER TABLE table_name
    DROP INDEX index_name;
    
    Run Code Online (Sandbox Code Playgroud)
  3. ALTER TABLE table_name
    DROP CONSTRAINT constraint_name; 
    
    Run Code Online (Sandbox Code Playgroud)

所有这些查询之间有什么区别?这些查询中的哪一个是根据标准 SQL 的?

另外,唯一约束、唯一索引和唯一键之间有什么区别?

MySQL词汇表截图; 链接:https://dev.mysql.com/doc/refman/8.0/en/glossary.html

mysql indexing constraints alter-table unique-constraint

-1
推荐指数
1
解决办法
165
查看次数

如何使用T-SQL正确添加新列

我在Visual Studios 2013中开始使用T-SQL,我想知道如何在现有数据库表中添加新列?

我有这个片段

ALTER TABLE [dbo].[Articles]
ADD COLUMNS
  TenLatMin  FLOAT     NULL,
  TenLatMax  FLOAT     NULL,
  TenLonMin  FLOAT     NULL,
  TenLonMax  FLOAT     NULL;
Run Code Online (Sandbox Code Playgroud)

但它抱怨

FLOAT附近的语法不正确

上面的代码有什么问题?

t-sql sql-server alter-table

-4
推荐指数
1
解决办法
2761
查看次数