分享
 
 
 

INSERT

王朝other·作者佚名  2008-05-19
窄屏简体版  字體: |||超大  

将新行添加到表或视图。语法INSERT [ INTO]{ table_name WITH ( [ ...n ] )| view_name| rowset_function_limited} {

[ ( column_list ) ]{ VALUES( { DEFAULT | NULL | expression } [ ,...n] )| derived_table| execute_statement} } | DEFAULT VALUES ::={ FASTFIRSTROW| HOLDLOCK| PAGLOCK| READCOMMITTED| REPEATABLEREAD| ROWLOCK| SERIALIZABLE| TABLOCK| TABLOCKX| UPDLOCK } 参数[INTO]一个可选的关键字,可以将它用在 INSERT 和目标表之间。table_name将要接收数据的表或 table 变量的名称。 WITH ( [...n])指定目标表所允许的一个或多个表提示。需要有 WITH 关键字和圆括号。不允许有 READPAST、NOLOCK 和 READUNCOMMITTED。view_name视图的名称及可选的别名。通过 view_name 来引用的视图必须是可更新的。由 INSERT 语句所做的修改不能影响视图的 FROM 子句中引用的多个基表。例如,在多表视图中的 INSERT 必须使用 column_list,column_list 是只引用来自一个基表的列。rowset_function_limited是 OPENQUERY 或 OPENROWSET 函数。(column_list)要在其中插入数据的一列或多列的列表。必须用圆括号将 column_list 括起来,并且用逗号进行分隔。 如果某列不在 column_list 中,则 Microsoft® SQL Server™ 必须能够基于该列的定义提供一个值;否则不能装载行。如果列满足下面的条件,那么 SQL Server 将自动为列提供值: 具有 IDENTITY 属性。使用下一个增量标识值。有默认值。使用列的默认值。具有 timestamp 数据类型。使用当前的时间戳值。是可空的。使用空值。 当向标识列中插入显式的值时,必须使用 column_list 及 VALUES 列表,并且对于表,SET IDENTITY_INSERT 选项必须是 ON。VALUES引入要插入的数据值的列表。对于 column_list(如果已指定)中或者表中的每个列,都必须有一个数据值。必须用圆括号将值列表括起来。如果 VALUES 列表中的值与表中列的顺序不相同,或者未包含表中所有列的值,那么必须使用 column_list 明确地指定存储每个传入值的列。DEFAULT强制 SQL Server 装载为列定义的默认值。如果对于某列并不存在默认值,并且该列允许 NULL,那么就插入 NULL。对于使用 timestamp 数据类型定义的列,插入下一个时间戳值。DEFAULT 对标识列无效。expression一个常量、变量或表达式。表达式不能包含 SELECT 或 EXECUTE 语句。derived_table任何有效的 SELECT 语句,它返回将装载到表中的数据行。execute_statement任何有效的 EXECUTE 语句,它使用 SELECT 或 READTEXT 语句返回数据。如果将 execute_statement 与 INSERT 一起使用,那么每个结果集都必须与表中或 column_list 中的列兼容。execute_statement 可以用来执行同一服务器或远程服务器上的存储过程。执行远程服务器中的过程,然后将结果集返回到本地服务器,并装载到本地服务器的表中。如果 execute_statement 使用 READTEXT 语句返回数据,那么每个单独的 READTEXT 语句最多可以返回 1 MB (1024 KB) 的数据,也可以将 execute_statement 与扩展过程一起使用,并且插入扩展过程的主线程返回的数据。不会插入不是主线程的其它线程中的输出结果。说明

对于 SQL Server 7.0,execute_statement 不包含返回 text 或 image 列的扩展存储过程。这个行为是从 SQL Server 早期版本变化而来的。DEFAULT VALUES强制新行包含为每个列所定义的默认值。注释INSERT 将新行追加到表中。若要替换表中的数据,必须在使用 INSERT 装载新数据之前,使用 DELETE 或 TRUNCATE TABLE 语句清除现有的数据。若要修改现有行中的列值,请使用 UPDATE。若要创建新表,并且通过一个步骤给它装载数据,请使用 SELECT 语句的 INTO 选项。table 变量在其作用域内可以像常规表一样访问。因此,可以像在 INSERT 语句中将行添加到表一样使用 table 变量。由 OPENDATASOURCE 函数建立的、作为服务器名部分的四段名称可以作为表源,该表源可以出现在 INSERT 语句中显示表名的所有位置。使用 uniqueidentifier 数据类型创建的列存储特殊格式的 16 字节二进制值。与标识列不同,SQL Server 不会为带有 uniqueidentifier 数据类型的列自动地生成值。在插入操作过程中,带有 uniqueidentifier 数据类型的变量以及某些字符串常量可以用于 uniqueidentifier 列(这些字符串常量的形式为:xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx,有 36 个字符,其中包括连字符。x 是十六进制数,范围为 0-9 或 a-f。)。例如,对于 uniqueidentifier 变量或列,6F9619FF-8B86-D011-B42D-00C04FC964FF 是一个有效值。使用 NEWID() 函数可以获取全局唯一的 ID (GUID)。插入行时,可以应用下列规则: 如果将值装载到带有 char、varchar 或 varbinary 数据类型的列,尾随空格(对于 char 和 varchar 是空格,对于 varbinary 是零)的填充和截断是由 SET ANSI_PADDING 设置确定的。该设置是在创建表时为列定义的。下表显示 SET ANSI_PADDING 为 OFF 时的默认操作。 如果将一个空字符串 (' ') 装载到带有 varchar 或 text 数据类型的列,那么默认操作是装载一个零长度的字符串。如果数据库的兼容级别小于 70,那么将该值转换成单个空格。如果 INSERT 语句违反约束或规则,或者它有与列的数据类型不兼容的值,那么该语句就会失败,并且 SQL Server 显示错误信息。 将空值插入到 text 或 image 列不能创建有效的文本指针,也不能预分配 8 KB 的文本页。如果 INSERT 正在使用 SELECT 或 EXECUTE 装载多行,正在装载的值中出现任何违反规则或约束的行为都会导致整个语句终止,从而不会装载任何行。当向远程 SQL Server 表中插入值且没有为所有列指定值时,则用户必须标识将向其中插入指定值的列。 在本地和远程分区视图上,忽略 INSERT 语句的 SET ROWCOUNT 选项的设置。而且,当兼容级别设置为 80 时,在 SQL Server 2000 中的远程表上也不支持 INSERT 语句的 SET ROWCOUNT 选项。当为表或视图的 INSERT 操作定义了 INSTEAD-OF 触发器时,该触发器就会执行 INSERT 语句中的 instead of。以前的 SQL Server 版本只支持在 INSERT 中定义的 AFTER 触发器,以及其它数据修改语句。如果在表达式赋值过程中 INSERT 语句遇到算术错误(溢出、被零除或域错误),那么 SQL Server 会处理这些错误,就好像 SET ARITHABORT 是 ON 一样。批处理的其余部分将终止,并且会返回一条错误信息。权限默认情况下,INSERT 权限被授予 sysadmin 固定服务器角色成员,db_owner 和 db_datawriter 固定数据库角色成员,以及表的所有者。sysadmin、db_owner 和 db_securityadmin 角色成员和表所有者可以将权限转让给其他用户。示例A. 使用简单的 INSERT下面的示例创建表 T1,并且插入一行。IF EXISTS(SELECT TABLE_NAME FROM INFORMATION_SCHEMA.TABLESWHERE TABLE_NAME = 'T1')DROP TABLE T1GOCREATE TABLE T1 ( column_1 int, column_2 varchar(30))INSERT T1 VALUES (1, 'Row #1')B. 插入与列顺序不同的数据下面的示例使用 column_list 及 VALUES 列表显式地指定将被插入每个列的值。IF EXISTS(SELECT TABLE_NAME FROM INFORMATION_SCHEMA.TABLESWHERE TABLE_NAME = 'T1')DROP TABLE T1GOCREATE TABLE T1 ( column_1 int, column_2 varchar(30))INSERT T1 (column_2, column_1) VALUES ('Row #1',1)C. 插入值少于列个数的数据下面的示例创建一个带有四个列的表。INSERT 语句插入一些行,这些行只有部分列包含值。IF EXISTS(SELECT TABLE_NAME FROM INFORMATION_SCHEMA.TABLESWHERE TABLE_NAME = 'T1')DROP TABLE T1GOCREATE TABLE T1 ( column_1 int identity, column_2 varchar(30) CONSTRAINT default_name DEFAULT ('column default'),column_3 int NULL,column_4 varchar(40))INSERT INTO T1 (column_4) VALUES ('Explicit value')INSERT INTO T1 (column_2,column_4) VALUES ('Exp

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
推荐阅读
 
 
 
>>返回首頁<<
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有