| 域名空间 下载中心 社区论坛 信息公告 my小屋 |
![]() |
联系我们 设为首页 加入收藏 |
|
首页 | 新闻资讯 | 编程开发 | 网页设计 | 图形图象 | 网络媒体 | 网站模板 | 数 据 库 | 投稿 论坛 | 操作系统 | 系统优化 | 网络安全 | 黑客技术 | 硬件学堂 | 硬件报价 | 服 务 器 | 地图 专题 | 应用软件 | 聊天通讯 | q q 专栏 | 建站经验 | 在线工具 | 站长club | 注 册 表 | 旧版 社会 | 游戏娱乐 | 设计欣赏 | 疑难解答 | 社区论坛 | 网络赚钱 | 网站地图 | 广告服务 | 服务 |
| 新版上线![旧版] | |||||
注:打开慢时请稍等
|
表数据操作包括数据的插入、修改和删除。 一、插入数据 在向表中添加数据时应该注意两点:第一是用户权限,只有sysadmin角包成员、数据库和数据库对 象所有者及其授权用户才有权限向表中添加数据;第二是数据格式,对于不同的数据类型,插入数据的 格式也不一样,应严格遵守它们各自的格式要求。 transact-sql语言中用insert语句向表或视图中插入新的数据行。insert语句的语法格式为: insert [into] table_source {[column_list] values ({default | constant_expression} [,…n]) |default values |select_statement |execute_statement } } 其中,column_list参数为新插入数据行中一列或多列列名列表,它说明insert 语句只为指定列插 入数据。在给表或视中部分列插入数据时,必须使用列名列表方式指出这部分列名。其余未指定列的列 值要根据它们的默认值和空值属性情况而定,它们有以下几种可能取值: (1)对于timestamp列或具有identity属性列,它们的列值由sql server计算后自动赋值。 (2)如果这些列有默认值或关联有默认数据库对象,插入新列时,它们的值为默认值。 (3)当这些列没有默认值设置时,但它们允许空值时,该列值为空。 (4)当这些列既没有默认值设置,也不允许空值时,sql server在执行insert 语句时将产生错误, 导致插入操作失败。 当未指定column_list 参数时,为各列所提供的数据顺序应严格按照表中各列的定义顺序,而使用 column_list参数则可以调整向表中所插入数据的列顺序,只要values子句所提供的数据顺序与column_ list参数中指定的列顺序相同即可。 values子句为新插入行中column_list 参数所指定列提供数据,这些数据可以以常量表达式形式提 供,或使用default关键字说明向列中插入其默认值。 default values说明向表中所有列插入其默认值。对于具有indentity 属性或timestamp 数据类型 列,系统将自动插入下一个适当值。对于没有设置默认值的列,如果它们允许空值,sql server将插入 null,否则返回一错误消息。 select_statement是标准的数据库查询语句,它是sql server为insert语句所提供的又一种数据插 入方式。insert语句将select_statement子句所返回的结果集合数据插入到指定表中。查询语句结果集 合每行中的数据数量、 数据类型和排列顺序也必须与表中所定义列或 column_list 参数中指定列的数 量、数据类型和排列顺序完全相同。 sql server为insert语句提供的第四种数据插入方式是通过执行系统存储过程,其数据来自于过程 执行后所产生的结果集合。所执行的过程可以为存储过程、系统存储过程或扩展存储过程,它们既可以 为本地存储过程,又可以是远程服务器上的存储过程,只要用户具有它们的执行权限即可。有关存储过 程请参阅对应的内容。 table_source说明insert语句插入数据时所操作的表或视图,其语法格式可简单书写为: {table_name [[as] table_alias] | view_name [[as] table_alias] } table_name和view_name说明被插入数据的表或视图名称,table_alias参数为表或视图设置别名。 使用别名有两方面原因:第一、当表或视图名称较长时,使用别名可以简化书写工作;第二,在自连接 或子查询中,使用别名可以区别同一个表或视图。 在向表中插入数据时, 如果所插入的数据与约束或规则的要求冲突, 或是它们的数据类型不兼容 时,将导致insert 语句执行失败。当使用select或execute子句向表中一次插入多行数据时,如果其中 有任一行数据有误,它将导致整个插入操作失败,使sql server停止所有数据行的插入操作。 例一、使用数值列表方式( 假定 usertable 表中只定义了name、age和sex字段,且name、sex均为 char类型,age为int类型)。 insert usertable values ('张三','女',18) 例二、使用列名列表方式 insert usertable (age,name) values (18,'张三') 例三、在数值列表中,还可以将变量的值插入到表中。在使用变量为列提供数据时,应保证变量的 数据类型与列数据类型相同,或是可以自动将它们转换为相同的数据类型。例如: declare @name char(16) set @name='张三' insert usertable values (@name,default,20) 本例中asp中是这样的: dim name name="张三" sqlstr="insert usertable values ('"&name&"','女',20)" …… 例四、将select子句的所返回的结果集合插入到表中。例如: insert usertable (name,sex,age) select 's'+name,sex,age from usertable where name like '张%%'
transact-sql中的update语句用于修改表中数据,该语句的语法格式为: update () set ( column_name={expression | default } | @variable = expression } [,…n] [from { | (select_statement) [as] table_alias [,…m]) ] } [,…n] ] [where | current of ({[global] cursor_name } | cursor_variable_name} } ] 别看写了一大堆,最常用的只是下列格式: update table_name set column_name1=variable1,column_name2=variable2 where search_conditions 其中table_or_view参数指出待修改的表或视图名称,其格式与insert语句中该参数的格式相同。 set子句指出表中被修改的列或变量,以及它们的新值。column_name为被修改的列名,@variable 为一个已经声明的局部变量名称,它们修改后的值由expression表达式提供,或使用default关键字将 默认值赋给指定列。 from子句引出另一个表,它为update语句的数据修改操作提供条件。 where子句中的search_conditions 参数说明update语句的修改条件,它指出表或视图中的哪些行 需要修改。省略where子句时,说明对指定的表或视图中的所有行进行修改!!!! where子句中的current of说明在游标的当前位置处执行修改操作,游标由curror_name 或游标变 量cursor_variable_name指定。 update不能修改具有identity属性列的列值。 例一、将usertable表中所有人员的性别改为'男' update usertable set sex='男' 例二、将性别为null的所有人员的性别改成'男' update usertable set sex='男' where sex is null 例三、将所有姓名为null的人员的姓名改为'张三'、性别改为'女',年龄改为18 update usertable set name='张三',sex='女',age=18 where name is null
transact-sql中,delete和truncate table语句均可以删除表中的数据。delete语句的语法格式为: delete {table_name | view_name} from { | (select_statement) [as] table_alias [(column_alias [,…m])] }[,…n] [where { |{ [current of {{[global] cursor_name} |cursor_variable_name } delete语句的结构与update语句有些类似,其中也包含from子句和where子句。where子句为数据删 除指定条件。不使用where子句时,delete语句将把有或视图中所有的数据删除。from子句是transact- sql在ansi基础上对delete语句的扩展,它指定要连接的表名,提供与相关子查询相似的功能。 truncate table语句语法格式为: truncate table table_name truncate table语句删除指定表中的所有数据行,但表结构及其所有索引继续保留,为该表所定义 约束、规则、默认和触发器仍然有效。如果所删除表中包含有identity列,则该列将被复位到其原始基 值。使用不带where子句的delete语句也可以删除表中所有行,但它不复位identity列。 与delete语句相比,truncate table语句的删除速度更快。因为delete语句在每删除一行时都要把 删除操作记录到日志中,而truncate table语句则是通过释放表数据页面的方法来删除表中数据,它只 在释放页面做一次事务日志记录。所以使用truncate table语句删除数据后,这些行是不可恢复的,而 delete操作则可回滚,能够恢复原来数据。 因为truncate table语句不做操作日志,它不能激活触发器,所以truncate table语句不能删除一 个被其它表通过foreign key约束所参照的表。 例一、使用delete语句删除usertable表中name为'张三'的数据行 delete usertable where name='张三' 例二、下面使用from子句和where子句指定条件,然后从tb_update表中删除数据 delete tb_update from tb_constraint as a,tb_update as b where a.name=b.name and a.country='china' delete tb_update from (select * from tb_constraint where country='usa') as a where a.name=tb_update.name 编辑:黑鹰 [发送给好友] [打印本页] [关闭窗口] [返回顶部] 上一篇:sql2k中新增加的function的sqlbook 的帮助 下一篇:使用ms sql7的linked server(一) 转载请注明来源:www.iyit.net 特别声明: 本站除部分特别声明禁止转载的专稿外的其他文章可以自由转载,但请务必注明出处和原始作者。文章版权归文章原始作者所有。对于被本站转载文章的个人和网站,我们表示深深的谢意。如果本站转载的文章有版权问题请联系编辑人员,我们尽快予以更正。 |
| 最新更新 | 热点排行 | 推荐新闻 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||
| 友情链接 | ||||||
| 设置首 页 - 版权声明 - 广告服务 - 关于我们 - 联系我们 - 友情连接 |
| |||||||