使用SQL 2008进行INSERT操作

T-SQL 语句可以通过打开一个新的“Query Window”(查询窗口)直接输入到SQL Server中。要启动一个查询窗口,打开SQL Server管理套件,选中正确的数据库,然后点击上面菜单中的New Query(新建查询)按钮。一个空白的查询窗口将被打开。   INSERT命令
0+j}i^   让我们从INSERT命令最基本的语法开始。
s   
'%%=.D7P
INSERT [INTO] table_name   [column_list]
P}hh@`B?   VALUES
]rMD {T<   default values t>`;K[iS"L values_list
QakF*   INSERT INTO Customers
~uAHL8>   (CustID, CustName)
MS:?nsd   VALUES
\N jhj   ('Cust1', 'Smith Company');
|j`C&[/z@
  INSERT 命令之后必须跟着你想添加数据的表的名称。INTO关键字是可选的。但是,INTO使得这个语句更加可读。在这个例子中,输入了两个信息字段。在VALUES行中出现的字段顺序必须和INTO语句的顺序一致。所以INTO和VALUES行的项目数和所列顺序必须一致。如果这两行不一致,那么会抛出一个类似于下面的错误:
G/.S,\gb   Msg 110, Level 15, State 1, Line 1
D< dO{+Z   There are fewer columns in the INSERT statement than values specified in the VALUES clause. The number of values in the VALUES clause must match the number of columns specified in the INSERT statement.
Vr; {PeO   在INSERT语句中的字段数比VALUES条件子句中指定的值少。VALUES条件子句的值的数目必须和INSERT语句中所指定的字段数一样。
NYxiv    输入所有的值
=~v1za5[   如果在信息中给每个字段都插入值,那么没有必要指定每个字段的名称。但是,要使用这个语法,在信息中给字段赋的值必须按照表定义中字段的顺序来输入。
2:tyO_s   
\Pe)`f>Z
INSERT INTO Customers   VALUES
SvspWkja   ('Cust1', 'Smith Company', '123 West 51 st', 'Tampa', 'FL');
j]pWpc-Wp
    图1
+oWSe*    多条插入记录
PrHt3!   SQL Server 2008支持在一个语句中插入多条记录。每行数据以逗号结尾,直到最后一行INSERT命令像普通情况一样结束。
a$$.pC   
9{j_2 8[=
INSERT INTO Customers   (CustID, CustName)
Ow]ylVKm   VALUES
L=~4~xor   ('Cust1', 'Smith Company'),
EslB%p84   ('Cust2', 'Perform Company'),
y2IAKY5<   ('Cust3', 'Test Inc');
47+( ;
  SQL Server的其它版本要求每条记录都执行一个单独的语句。
b@~]REv
,gjIF] d    默认字段
CC5a2\ |   如果一个字段被定义了一个默认值,那么如果没有在INSERT 语句中直接给这个字段赋值的话,每一个新记录中将插入这个默认值。例如,这个表的State字段有一个默认值“WI”。
87ljg9   
85N2>*&i   图2
j,0a   执行一个INSERT语句,类似于下面所显示的,没有给State 直接赋值,那么将使用默认值WI。
8py8}   
G+N]:l
T`drVvS
INSERT INTO Customers   (CustID, CustName)
HW`=C+1o)L   VALUES
pN*Alg   ('Cust1', 'Smith Company');
G.S< K,O

mZT^*3b 获得插入
rQ? oyrLS   
a)eSQkM2Z
INSERT INTO Customers   (CustID, CustName)
x,6;L|0Gb   SELECT CustID, CustName
6gcn%7[o   FROM LastYearSales
Z3iGEAtG
  插入的值可以用一个select 语句获取到。在这个例子中,CustID和CustName是从现有数据中获得的,而不是直接输入的。在这个语句的INTO部分指定的每个字段使用普通的INSERT规则,它们必须有相匹配的返回值。
D B*z1
(]l(&q6+f    其它规则
-jaw9[7Ev   你不能插入NULL值或重复值到任何主键字段。
m I` c   外键的值确认两个表间的关系。当插入或修改有外键约束的字段中的值时,相应的值必须显示在所关联的表中。
8JYCXBIk   自动填充的IDENTITY字段如果没有先执行一个特定的插入确认命令: SET IDENTITY_INSERT ON,那么不能用特定值插入。例如,下面的语句显示了插入到一个IDENTITY字段。Test是表名称。
&C5.rM   
nQ,cKQLV
SET IDENTITY_INSERT test ON   INSERT INTO test
0Mp*&<_wF1   (myID)
A~ @z-   VALUES
lOfh+^i   (4)
5}xrMn   SET IDENTITY_INSERT test OFF
V:z,(
  插入的值不需要是Identity字段通常使用的下一个数字。这意味着如果这之前输入了三条记录,ID是1、2和3,那么4或4以后的数字都可以使用。我们没有强制使用4。我们可以使用5、6或其它任何更大的数字。这么做将引起一个问题。下一次自动一致性被调用的时候;它会查找最大的数字然后加一。
"IMW.S4Y.
.~OU1>[S3    管理套件插入
k{)C|!Nd   现在让我们探究怎样使用SQL Server管理套件的图形界面来插入数据。右键单击对象浏览器中的表。从上下文菜单中选择Edit Top 200 Rows。
7}1hi,~[   
U=PWe3!   图3
_B<_:fZh]  一个具有生成的数据的数据网格将显示出来,如下所示。这个数据网格和MS Excel非常类似,所有你可以以一种熟悉的方式来输入数据。在左边加星号的记录显示了这个表的插入点。当输入数据时,你必须指定符合每个字段所设约束的可接受值。
}WvzN1M2   
[6i/<   图4
@#fh|o3%1    查询设计器
In zXCr   另一个图形化方法是使用查询编辑器的设计视图来插入数据到一个表中。在一个空白查询窗口中右键单击,然后选择Query、Design Query in Editor,如下图所示。
.7U"/Qb}   
8U 6ijH6P;   图5
Spw /3MFu   从Add Tables对话框中,选择你想插入或更新数据的表。右键单击查询设计器中的任何地方,然后从上下文菜单中选择Change Type、Insert Values。
]p~r^ #9   
Ce>mub   图6
#bSH._yz   当你在查询设计器的中间面板中输入数据到Column和New Value中时,INSERT INTO 脚本就被建立了。当你输入值后,点击OK退出设计视图。点击F5或Execute按钮来插入数据。
lbsl5sujFw   
:1B[~351\   图7
5oA=Uuk&   要在你的语句运行过一次之后编辑它,那么选中整个语句,右键单击选中区 中的任何位置,然后在查询编辑器中选择Design。如果没有选中整个语句,那么将打开一个新的设计窗口而不是编辑现有的代码。
h4eJM2G\    总结
2u)uS/y"Z   INSERT语句使得可以输入值到一个SQL Server表中。语句可以是手工输入或是通过查询设计器图形化地创建。值可以是直接输入或从其它一些SELECT语句获得。在SQL Server 2008中新推出的是在一个单独的语句中输入多条记录的能力。
F6X[$o:

你可能感兴趣的:(使用SQL 2008进行INSERT操作)