📄 463.html
字号:
<STYLE type=text/css>
<!--
body,td { font-size:9pt;}
hr { color: #000000; height: 1px}
-->
</STYLE>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" "http://www.w3.org/TR/REC-html40/loose.dtd">
<HTML>
<HEAD><TITLE>精选文章 >> SQL之家 >> Sql表数据操作</title>
</head>
<body >
<p><IMG SRC="../image/jsp001_middle_logo.gif" WIDTH="180" HEIGHT="60" BORDER=0 ALT=""></p>
<table width=100% bgcolor="#cccccc" align=center cellpadding="2" cellspacing="0" border=1 bordercolorlight="#000000" bordercolordark="#FFFFFF">
<tr bgcolor="#EFF8FF"><td>
<a href=http://www.jsp001.com/list_thread.php?int_attribute=2>精选文章</a>
>> <a href=http://www.jsp001.com/list_thread.php?forumid=45&int_attribute=2>SQL之家</a>
>> Sql表数据操作 [<a href=http://www.jsp001.com/forum/showthread.php?goto=newpost&threadid=463>查看别人的评论</a>]<br>
<hr><p>由 amtd 发布于: 2001-02-15 09:59</p><p><img src="images/icons/icon1.gif" alt="Post" border=0> </p><p>Sql表数据操作 <br> <br><br>表数据操作包括数据的插入、修改和删除。<br>一、插入数据 <br><br>在向表中添加数据时应该注意两点:第一是用户权限,只有sysadmin角包成员、数据库和数据库对<br><br>象所有者及其授权用户才有权限向表中添加数据;第二是数据格式,对于不同的数据类型,插入数据的<br><br>格式也不一样,应严格遵守它们各自的格式要求。<br><br>Transact-SQL语言中用INSERT语句向表或视图中插入新的数据行。INSERT语句的语法格式为:<br><br>INSERT [INTO] table_source<br><br>{[column_list]<br><br>VALUES ({DEFAULT | constant_expression} [,…n])<br><br>|DEFAULT VALUES<br><br>|select_statement<br><br>|execute_statement<br><br>}<br><br>}<br><br>其中,column_list参数为新插入数据行中一列或多列列名列表,它说明INSERT 语句只为指定列插<br><br>入数据。在给表或视中部分列插入数据时,必须使用列名列表方式指出这部分列名。其余未指定列的列<br><br>值要根据它们的默认值和空值属性情况而定,它们有以下几种可能取值:<br><br>(1)对于timestamp列或具有IDENTITY属性列,它们的列值由SQL Server计算后自动赋值。<br><br>(2)如果这些列有默认值或关联有默认数据库对象,插入新列时,它们的值为默认值。<br><br>(3)当这些列没有默认值设置时,但它们允许空值时,该列值为空。<br><br>(4)当这些列既没有默认值设置,也不允许空值时,SQL Server在执行INSERT 语句时将产生错误,<br><br>导致插入操作失败。<br><br>当未指定column_list 参数时,为各列所提供的数据顺序应严格按照表中各列的定义顺序,而使用<br><br>column_list参数则可以调整向表中所插入数据的列顺序,只要VALUES子句所提供的数据顺序与column_<br><br>list参数中指定的列顺序相同即可。<br><br>VALUES子句为新插入行中column_list 参数所指定列提供数据,这些数据可以以常量表达式形式提<br><br>供,或使用DEFAULT关键字说明向列中插入其默认值。<br><br>DEFAULT VALUES说明向表中所有列插入其默认值。对于具有INDENTITY 属性或timestamp 数据类型<br><br>列,系统将自动插入下一个适当值。对于没有设置默认值的列,如果它们允许空值,SQL Server将插入<br><br>null,否则返回一错误消息。<br><br>select_statement是标准的数据库查询语句,它是SQL Server为INSERT语句所提供的又一种数据插<br><br>入方式。INSERT语句将select_statement子句所返回的结果集合数据插入到指定表中。查询语句结果集<br><br>合每行中的数据数量、 数据类型和排列顺序也必须与表中所定义列或 column_list 参数中指定列的数<br><br>量、数据类型和排列顺序完全相同。<br><br>SQL Server为INSERT语句提供的第四种数据插入方式是通过执行系统存储过程,其数据来自于过程<br><br>执行后所产生的结果集合。所执行的过程可以为存储过程、系统存储过程或扩展存储过程,它们既可以<br><br>为本地存储过程,又可以是远程服务器上的存储过程,只要用户具有它们的执行权限即可。有关存储过<br><br>程请参阅对应的内容。<br><br>table_source说明INSERT语句插入数据时所操作的表或视图,其语法格式可简单书写为:<br><br>{table_name [[AS] table_alias]<br><br>| view_name [[AS] table_alias]<br><br>}<br><br>table_name和view_name说明被插入数据的表或视图名称,table_alias参数为表或视图设置别名。<br><br>使用别名有两方面原因:第一、当表或视图名称较长时,使用别名可以简化书写工作;第二,在自连接<br><br>或子查询中,使用别名可以区别同一个表或视图。<br><br>在向表中插入数据时, 如果所插入的数据与约束或规则的要求冲突, 或是它们的数据类型不兼容<br><br>时,将导致INSERT 语句执行失败。当使用SELECT或EXECUTE子句向表中一次插入多行数据时,如果其中<br><br>有任一行数据有误,它将导致整个插入操作失败,使SQL Server停止所有数据行的插入操作。<br><br>例一、使用数值列表方式( 假定 usertable 表中只定义了name、age和sex字段,且name、sex均为<br><br>char类型,age为int类型)。<br><br>INSERT usertable<br><br>VALUES ('张三','女',18)<br><br>例二、使用列名列表方式<br><br>INSERT usertable (age,name)<br><br>VALUES (18,'张三')<br><br>例三、在数值列表中,还可以将变量的值插入到表中。在使用变量为列提供数据时,应保证变量的<br><br>数据类型与列数据类型相同,或是可以自动将它们转换为相同的数据类型。例如:<br><br>DECLARE @name char(16)<br><br>SET @name='张三'<br><br>INSERT usertable<br><br>VALUES (@name,DEFAULT,20)<br><br>本例中Asp中是这样的:<br><br>dim name<br><br>name="张三"<br><br>sqlstr="INSERT usertable VALUES ('"&name&"','女',20)"<br><br>……<br><br><br><br>例四、将SELECT子句的所返回的结果集合插入到表中。例如:<br><br>INSERT usertable (name,sex,age)<br><br>SELECT 's'+name,sex,age<br><br>FROM usertable<br><br>WHERE name like '张%%'<br><br><br>二、修改数据 <br><br>Transact-SQL中的UPDATE语句用于修改表中数据,该语句的语法格式为:<br><br>UPDATE ()<br><br>SET (<br><br>column_name={expression | DEFAULT }<br><br>| @variable = expression<br><br>} [,…n]<br><br>[FROM<br><br>{<br><br>| (select_statement) [AS] table_alias [,…m]) ]<br><br>}<br><br>[,…n]<br><br>]<br><br>[WHERE<br><br><br><br>| CURRENT OF ({[GLOBAL] cursor_name } | cursor_variable_name} }<br><br>]<br><br>别看写了一大堆,最常用的只是下列格式:<br><br>UPDATE table_name<br><br>SET column_name1=variable1,column_name2=variable2<br><br>WHERE search_conditions<br><br>其中table_or_view参数指出待修改的表或视图名称,其格式与INSERT语句中该参数的格式相同。<br><br>SET子句指出表中被修改的列或变量,以及它们的新值。column_name为被修改的列名,@variable<br><br>为一个已经声明的局部变量名称,它们修改后的值由expression表达式提供,或使用DEFAULT关键字将<br><br>默认值赋给指定列。<br><br>FROM子句引出另一个表,它为UPDATE语句的数据修改操作提供条件。<br><br>WHERE子句中的search_conditions 参数说明UPDATE语句的修改条件,它指出表或视图中的哪些行<br><br>需要修改。省略WHERE子句时,说明对指定的表或视图中的所有行进行修改!!!!<br><br>WHERE子句中的CURRENT OF说明在游标的当前位置处执行修改操作,游标由curror_name 或游标变<br><br>量cursor_variable_name指定。<br><br>UPDATE不能修改具有IDENTITY属性列的列值。<br><br>例一、将usertable表中所有人员的性别改为'男'<br><br>UPDATE usertable<br><br>SET sex='男'<br><br><br><br>例二、将性别为null的所有人员的性别改成'男'<br><br>UPDATE usertable<br><br>SET sex='男'<br><br>WHERE sex IS NULL<br><br>例三、将所有姓名为null的人员的姓名改为'张三'、性别改为'女',年龄改为18<br><br>UPDATE usertable<br><br>SET name='张三',sex='女',age=18<br><br>WHERE name IS NULL<br><br><br>三、删除数据 <br><br>Transact-SQL中,DELETE和TRUNCATE TABLE语句均可以删除表中的数据。DELETE语句的语法格式为:<br><br>DELETE<br><br>{table_name | view_name}<br><br>FROM<br><br>{<br><br><br><br>| (select_statement) [AS] table_alias [(column_alias [,…m])]<br><br>}[,…n]<br><br>[WHERE<br><br>{<br><br>|{ [CURRENT OF {{[global] cursor_name}<br><br>|cursor_variable_name<br><br>}<br><br><br><br>DELETE语句的结构与UPDATE语句有些类似,其中也包含FROM子句和WHERE子句。WHERE子句为数据删<br><br>除指定条件。不使用WHERE子句时,DELETE语句将把有或视图中所有的数据删除。FROM子句是Transact-<br><br>SQL在ANSI基础上对DELETE语句的扩展,它指定要连接的表名,提供与相关子查询相似的功能。<br><br>TRUNCATE TABLE语句语法格式为:<br><br>TRUNCATE TABLE table_name<br><br>TRUNCATE TABLE语句删除指定表中的所有数据行,但表结构及其所有索引继续保留,为该表所定义<br><br>约束、规则、默认和触发器仍然有效。如果所删除表中包含有IDENTITY列,则该列将被复位到其原始基<br><br>值。使用不带WHERE子句的DELETE语句也可以删除表中所有行,但它不复位IDENTITY列。<br><br>与DELETE语句相比,TRUNCATE TABLE语句的删除速度更快。因为DELETE语句在每删除一行时都要把<br><br>删除操作记录到日志中,而TRUNCATE TABLE语句则是通过释放表数据页面的方法来删除表中数据,它只<br><br>在释放页面做一次事务日志记录。所以使用TRUNCATE TABLE语句删除数据后,这些行是不可恢复的,而<br><br>DELETE操作则可回滚,能够恢复原来数据。<br><br>因为TRUNCATE TABLE语句不做操作日志,它不能激活触发器,所以TRUNCATE TABLE语句不能删除一<br><br>个被其它表通过FOREIGN KEY约束所参照的表。<br><br>例一、使用DELETE语句删除usertable表中name为'张三'的数据行<br><br>DELETE usertable<br><br>WHERE name='张三'<br><br><br><br>例二、下面使用FROM子句和WHERE子句指定条件,然后从TB_update表中删除数据<br><br>DELETE TB_update<br><br>FROM TB_constraint AS a,TB_update AS b<br><br>WHERE a.name=b.name<br><br>AND a.country='China'<br><br><br><br>DELETE TB_update<br><br>FROM (SELECT * FROM TB_constraint<br><br>WHERE country='USA') AS a<br><br>WHERE a.name=TB_update.name<br><br><br>来自软件使用主页(http://swuse.yeah.net) <br><br>__________________<br><font color=red>真实源于生活! </font><br>请访问我们的网站: <br>(VB爱好者乐园) <br><a href="http://www.vbgood.com" target=_blank>http://www.vbgood.com</a><br><a href="http://www.d1vb.com" target=_blank>http://www.d1vb.com</a><br><a href="http://61.128.97.225/vbgood/index.asp" target=_blank>http://61.128.97.225/vbgood/index.asp</a><br>拥有1800多个资料! </p></td>
</tr>
</table>
<p>
<CENTER><a href="http://www.jsp001.com/forum/newreply.php?action=newreply&threadid=463">点这里对该文章发表评论</a></CENTER>
<p>该文章总得分是 <font color=red>5</font> 分,你认为它对你有帮助吗?
[<a href=javascript:void(0) onclick=window.open("http://www.jsp001.com/forum/codeVote.php?threadid=463&intVote=4","","menubar=no,toolbar=no,location=no,directories=no,status=no,resizable=no,scrollbars=no,width=70,height=40,top=0,left=0")>非常多</a>](<font color=red>1</font>)
[<a href=javascript:void(0) onclick=window.open("http://www.jsp001.com/forum/codeVote.php?threadid=463&intVote=2","","menubar=no,toolbar=no,location=no,directories=no,status=no,resizable=no,scrollbars=no,width=70,height=40,top=0,left=0")>有一些</a>](<font color=red>1</font>)
[<a href=javascript:void(0) onclick=window.open("http://www.jsp001.com/forum/codeVote.php?threadid=463&intVote=1","","menubar=no,toolbar=no,location=no,directories=no,status=no,resizable=no,scrollbars=no,width=70,height=40,top=0,left=0")>无帮助</a>](<font color=red>1</font>)
[<a href=javascript:void(0) onclick=window.open("http://www.jsp001.com/forum/codeVote.php?threadid=463&intVote=-1","","menubar=no,toolbar=no,location=no,directories=no,status=no,resizable=no,scrollbars=no,width=70,height=40,top=0,left=0")>是灌水</a>](<font color=red>2</font>) </p>
<script language="javascript" src="http://www.jsp001.com/include/read_thread_script.php?threadid=463"></script>
<p><CENTER>
Copyright © 2001 - 2009 JSP001.com . All Rights Reserved <P>
<IMG SRC="../image/jsp001_small_logo.gif" WIDTH="85" HEIGHT="30" BORDER=0 ALT="">
</CENTER></p>
</body>
</html>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -