我正在尝试添加一个日期类型的虚拟列,该列将五年添加到另一个日期列:
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 函数。我可以做什么来完成我想做的事?
谢谢。
当我看到以下形式的更改查询时,我正在浏览一些代码:
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 对表中的列进行重新排序。
何时应该使用此关键字?是否建议频繁运行它来更改具有大量(数百万)行的表?
在为数据库创建表时我经常小心谨慎。这次遇到了要换桌子的情况。
我想更改表中字段/列的数据类型。
更改表中列的数据类型:一般语法
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 参考文档
但这没有帮助。
我希望用一些旧的数据创建一个新表,但也有我可以编辑的新空列。
我会从:
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 - 但那可能吗?
我尝试在 Oracle 中添加一个表到缓存
alter table Test_Table cache;
Run Code Online (Sandbox Code Playgroud)
那么现在我怎样才能将其从缓存中删除呢?
我需要将一个表中的行追加到现有表中。我在想类似以下的内容,但这给出了一个错误
select *
into table1
from (select *
from table1
union
select *
from table2) as tmp
Run Code Online (Sandbox Code Playgroud)
有没有办法使用ALTER TABLE或UPDATE与UNION?
我的表中有以下列:
ID - NUMBER(10,0)NUMBER - VARCHAR(255)该列中的所有数据NUMBER都是数字。我想将VARCHAR类型更改为整数类型。如何做到不丢失数据?
我有三张桌子:
1.用户(id,name,birthdate) - PRIMARY KEY('id')
2.联系(身份证,联系人,已验证) - 主要密钥('id')
3. UserContact(User_id,Contact_id) - 没有主键或Foriegn键
问题是在创建UserContact表时我不关心主键或外键.因此,我在zend框架中的UserContact表中插入记录时遇到以下错误.
表必须具有主键,但未找到任何主键
现在我想创建一个MySql脚本,它改变UserContact表,并将User_id和Contact_id作为来自User和Contact表的外键.如何编写这个脚本.我正在使用phpMyAdmin.
谢谢
我有 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) 我正在尝试将一个名为 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 行 ')' 附近的语法不正确。
非常感谢一些指导。
当我想向现有表添加多列时,我可以这样做:
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) 我在网上搜索如何去除MySQL中的唯一约束,发现了很多解决方案。
DROP INDEX index_name ON table_name;
Run Code Online (Sandbox Code Playgroud)
ALTER TABLE table_name
DROP INDEX index_name;
Run Code Online (Sandbox Code Playgroud)
ALTER TABLE table_name
DROP CONSTRAINT constraint_name;
Run Code Online (Sandbox Code Playgroud)
所有这些查询之间有什么区别?这些查询中的哪一个是根据标准 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附近的语法不正确
上面的代码有什么问题?
alter-table ×13
sql ×5
database ×4
mysql ×4
oracle ×4
sql-server ×4
ddl ×2
sql-update ×2
t-sql ×2
case ×1
constraints ×1
create-table ×1
indexing ×1
migration ×1
optimization ×1
oracle11g ×1
php ×1
union ×1