专注于互联网--专注于架构

最新标签
网站地图
文章索引
Rss订阅

首页 »数据库 » sql表数据:Sql表数据操作 »正文

sql表数据:Sql表数据操作

来源: 发布时间:星期五, 2009年1月23日 浏览:2次 评论:0
="t18">表数据操作包括数据插入、修改和删除
、插入数据

在向表中添加数据时应该注意两点:第是用户权限只有sysadmin角包成员、数据库和数据库对象所有者及其授权用户才有权限向表中添加数据;第 2是数据格式对于区别数据类型插入数据格式也不应严格遵守它们各自格式要求

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语句提供第 4种数据插入方式是通过执行系统存储过程其数据来自于过程执行后所产生结果集合所执行过程可以为存储过程、系统存储过程或扩展存储过程它们既可以为本地存储过程又可以是远程服务器上存储过程只要用户具有它们执行权限即可有关存储过程请参阅对应内容

table_source介绍说明INSERT语句插入数据时所操作表或视图其语法格式可简单书写为:

{table_name [[AS] table_alias]

| view_name [[AS] table_alias]

}

table_name和view_name介绍说明被插入数据表或视图名称table_alias参数为表或视图设置别名

使用别名有两方面原因:第、当表或视图名称较长时使用别名可以简化书写工作;第 2在自连接或子查询中使用别名可以区别同个表或视图

在向表中插入数据时 如果所插入数据和约束或规则要求冲突 或是它们数据类型不兼容时将导致INSERT 语句执行失败当使用SELECT或EXECUTE子句向表中次插入多行数据时如果其中有任行数据有误它将导致整个插入操作失败使SQL Server停止所有数据行插入操作

、使用数值列表方式( 假定 usertable 表中只定义了name、age和sex字段且name、sex均为

char类型age为类型)

INSERT usertable

VALUES ('张 3','女',18)

例 2、使用列名列表方式

INSERT usertable (age,name)

VALUES (18,'张 3')

例 3、在数值列表中还可以将变量值插入到表中在使用变量为列提供数据时应保证变量数据类型和列数据类型相同或是可以自动将它们转换为相同数据类型例如:

DECLARE @name char(16)

SET @name='张 3'

INSERT usertable

VALUES (@name,DEFAULT,20)

本例中Asp中是这样:

dim name

name="张 3"

sqlstr="INSERT usertable VALUES ('"&name&"','女',20)"

……



例 4、将SELECT子句所返回结果集合插入到表中例如:

INSERT usertable (name,sex,age)

SELECT 's'+name,sex,age

FROM usertable

WHERE name like '张%%'


2、修改数据

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='男'



例 2、将性别为null所有人员性别改成'男'

UPDATE usertable

SET sex='男'

WHERE sex IS NULL

例 3、将所有姓名为null人员姓名改为'张 3'、性别改为'女'年龄改为18

UPDATE usertable

SET name='张 3',sex='女',age=18

WHERE name IS NULL


3、删除数据

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为'张 3'数据行

DELETE usertable

WHERE name='张 3'



例 2、下面使用FROM子句和WHERE子句指定条件然后从TB_update表中删除数据

DELETE TB_update

FROM TB_constra AS a,TB_update AS b

WHERE a.name=b.name

AND a.country='China'



DELETE TB_update

FROM (SELECT * FROM TB_constra

WHERE country='USA') AS a

WHERE a.name=TB_update.name

相关文章

读者评论

  • 共0条 分0页

发表评论

  • 昵称:
  • 内容: