以下SQL语句是否会自动在Table1.Table1Column上创建索引,还是必须显式创建索引?
数据库引擎是SQL Server 2000
CREATE TABLE [Table1] (
. . .
CONSTRAINT [FK_Table1_Table2] FOREIGN KEY
(
[Table1Column]
) REFERENCES [Table2] (
[Table2ID]
)
)
Run Code Online (Sandbox Code Playgroud) 我在Excel中有一堆行要粘贴到MS SQL中的新表中.有一个简单的方法吗?
我有一个表的人与personaldata等.有很多专栏,但这里曾经感兴趣的是:addressindex,lastname以及firstname在addressindex公寓门口钻一个独特的地址.因此,如果我"喜欢下面"两个人和lastname一个人firstnames相同,他们很可能是重复的.
我需要一种方法来列出这些重复项.
tabledata:
personid 1
firstname "Carl"
lastname "Anderson"
addressindex 1
personid 2
firstname "Carl Peter"
lastname "Anderson"
addressindex 1
Run Code Online (Sandbox Code Playgroud)
我知道如果我要在所有列上完全匹配,但是我需要模糊匹配来完成这个技巧(来自上面的例子),结果如下:
Row personid addressindex lastname firstname
1 2 1 Anderson Carl Peter
2 1 1 Anderson Carl
.....
Run Code Online (Sandbox Code Playgroud)
关于如何以一种好的方式解决这个问题的任何提示?
反正是否在T-SQL中循环表变量?
DECLARE @table1 TABLE ( col1 int )
INSERT into @table1 SELECT col1 FROM table2
Run Code Online (Sandbox Code Playgroud)
我也使用游标,但游标似乎不如表变量灵活.
DECLARE cursor1 CURSOR
FOR SELECT col1 FROM table2
OPEN cursor1
FETCH NEXT FROM cursor1
Run Code Online (Sandbox Code Playgroud)
我希望能够以与游标相同的方式使用表变量.这样我就可以在过程的一个部分中对表变量执行一些查询,然后为表变量中的每一行执行一些代码.
任何帮助是极大的赞赏.
关于SQL Server,我理解:
var 表示内存是惰性分配的,这意味着它完全适合数据(插入时).
MAX 意味着没有尺寸限制\限制.
那么,使用MAX时总是优先使用varchar,因为我们无论如何都不分配整个尺寸?
只有在我们想要在此DB列上强制执行约束时,我们才应该使用常量吗?
有没有办法Now()在SQL中使用函数来选择具有今天日期的值?
我在印象中Now()会包含时间和日期,但今天的日期会有时间设置00:00:00,因此这永远不会匹配?
我安装了SQL Server Management Studio,它工作正常.之后我将Visual Studio从2010更新到2013 Express版,现在它没有使用此错误消息:
找不到一个或多个组件.请重新安装该应用程序
我重新安装了它,但仍然是同样的问题.有什么建议吗?
我有一个使用以下模式创建的表:
CREATE TABLE [dbo].[Visualizations]
(
VisualizationID int identity (1,1) NOT NULL
)
Run Code Online (Sandbox Code Playgroud)
由于表没有可设置的字段,我不知道如何插入记录.我试过了:
INSERT INTO [Visualizations];
INSERT INTO [Visualizations] () VALUES ();
Run Code Online (Sandbox Code Playgroud)
都没有工作.这样做的正确语法是什么?
编辑:由于很多人似乎对我的表感到困惑,因此它纯粹用于表示多个子表的父级...每个子表都用FK引用这个表,每个FK都是PK,所以在所有子表中在这些表中,ID是唯一的.
我正在创建一个将在MS SQL服务器中运行的脚本.此脚本将运行多个语句,并且需要是事务性的,如果其中一个语句失败,则停止整体执行并回滚任何更改.
在发出ALTER TABLE语句以向表中添加列然后更新新添加的列时,我在创建此事务模型时遇到问题.为了立即访问新添加的列,我使用GO命令执行ALTER TABLE语句,然后调用我的UPDATE语句.我面临的问题是我无法在IF语句中发出GO命令.IF语句在我的事务模型中很重要.这是我尝试运行的脚本的示例代码.另请注意,发出GO命令会丢弃@errorCode变量,并且需要在使用之前在代码中声明(这不在下面的代码中).
BEGIN TRANSACTION
DECLARE @errorCode INT
SET @errorCode = @@ERROR
-- **********************************
-- * Settings
-- **********************************
IF @errorCode = 0
BEGIN
BEGIN TRY
ALTER TABLE Color ADD [CodeID] [uniqueidentifier] NOT NULL DEFAULT ('{00000000-0000-0000-0000-000000000000}')
GO
END TRY
BEGIN CATCH
SET @errorCode = @@ERROR
END CATCH
END
IF @errorCode = 0
BEGIN
BEGIN TRY
UPDATE Color
SET CodeID= 'B6D266DC-B305-4153-A7AB-9109962255FC'
WHERE [Name] = 'Red'
END TRY
BEGIN CATCH
SET @errorCode = @@ERROR
END CATCH
END
-- **********************************
-- …Run Code Online (Sandbox Code Playgroud) sql-server ×10
sql ×5
t-sql ×5
alter-table ×1
copy-paste ×1
current-time ×1
cursor ×1
excel ×1
foreign-keys ×1
fuzzy-search ×1
indexing ×1
insert ×1
transactions ×1