我是SQL的新手,所以如果这是一个愚蠢的问题我会道歉。
我何时需要在架构和表名称周围使用括号'['和']'?我可以一直使用它们吗?
现在,假设我执行了以下操作来创建表
CREATE TABLE [dbo].[table1] ([ID] VARCHAR(5))
这很有用。我通过运行select语句验证了它。假设时间继续,我添加了一堆行。现在如果我想删除所有行,我应该使用delete还是truncate?看来我应该这样做
TRUNCATE [dbo].[table1]
但是当我通过jtds jdbc driver执行此操作时,我在'dbo'附近的语法不正确或者在关键字TRUNCATE附近的语法不正确。
语法中缺少什么?
答案 0 :(得分:5)
TRUNCATE [dbo].[table1]
应该是
TRUNCATE TABLE [dbo].[table1]
括号用于允许无效的列名称,例如以数字开头或在其中包含空格的列名称
例如
CREATE TABLE [ ]([ ] INT)
INSERT [ ] VALUES(1)
SELECT [ ] FROM [ ]
你总是可以使用括号,它们不是必需的,但可以防止有问题的列名
答案 1 :(得分:2)
我认为你想要TRUNCATE TABLE
......它本身没有TRUNCATE。
TRUNCATE TABLE [dbo].[table1];
答案 2 :(得分:1)
对于保留字的表名和列名,或者包含空格,需要[]。 MS倾向于将它们放在一切,但大部分时间它们都不是必需的。
正如Aaron所说,你想要TRUNCATE TABLE。
答案 3 :(得分:1)
回答你问题的第一部分:
我何时需要在架构和表名称周围使用括号'['和']'?我可以一直使用它们吗?
当名称与SQL关键字冲突时使用括号(通常可以通过IDE中的颜色看到)和是 - 您可以随时使用它们。
答案 4 :(得分:1)
截断表和删除自然不尽相同,但它们通常看起来做同样的事情。
截断表需要一些提升的权限和截断表“删除表中的所有行而不记录单个行删除.TRUNCATE TABLE类似于没有WHERE子句的DELETE语句;但是,TRUNCATE TABLE更快并且使用更少的系统和事务日志资源。“
这意味着Truncate始终会删除表中的所有行,并且无法作为事务的一部分回滚。
Delete From几乎总是您想要在事务处理过程中执行的操作。在作为独立的adhoc命令进行开发和测试时,Truncate Table是合适的。如果您想要将Truncate Table放入存储过程中,请检查自己并查看Delete是否更合适。