|
| |
名片设计 CorelDRAW Illustrator AuotoCAD Painter 其他软件 Photoshop Fireworks Flash |
|
表数据操作包括数据的插入、修改和删除。 一、插入数据 在向表中添加数据时应该注重两点:第一是用户权限,只有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 返回类别: 教程 上一教程: 用 PHP 实现 XML 备份 MYSQL 数据库 下一教程: 用SQLPLUS只输出数据到文本文件的实例 您可以阅读与"SQL表数据操作"相关的教程: · SQL数据操作基础(初级)4 · SQL数据操作基础(初级)5 · SQL数据操作基础(中级)6 · SQL数据操作基础(中级)10 · SQL数据操作基础(中级)8 |
| 快精灵印艺坊 版权所有 |
首页 |
||