SQLUPDATE语句WHERE

发布时间:2018-07-01 06:18:52   来源:文档文库   
字号:

sql语句中的更新语句update是最常用的语句之一,下面将为您介绍update语句的三种使用方法,供您参考,希望对您有所帮助。

一、环境:

mysql-5.0.41-win32

windows xp professional

二、建立测试环境:

drop table if exists t_test;

create table t_test (

bsbigint(20) not null auto_increment,

usernamevarchar(20) not null,

passwordvarchar(20) default null,

remarkvarchar(200) default null,

primary key (bs)

) engine=innodb auto_increment=4 default charset=gbk;

insert into t_test values (1,lavasoft,123456,null);

insert into t_test values (2,hello,null,null);

insert into t_test values (3,haha,zz,tt);

三、测试

1set一个字段

在表t_test中设置第二条记录(bs2)的password***

updatet_test t

sett.password = ***

where t.bs = 2;

2set多个字段

在表t_test中设置第一条记录(bs1)的password*remark*

updatet_test t

sett.password = *, t.remark = *

where t.bs = 1;

3set null

在表t_test中设置第三条记录(bs3)的passwordnullremarknull

updatet_test t

sett.password = null, t.remark = null

where t.bs = 3;

这个是按照标准语法写的,在不同的数据库系统中,update还有更多的写法,但是标准写

法都是支持的。以上三个例子为了说明情况,每次都更新一行。在实际中,可以通过where语句约束来控制更新行数。篇二:sqlupdate语句功能非常强大

语法

update

{

table_name with ( <

table_hint_limited > [ ...n ] )

| view_name

| rowset_function_limited

}

set

{ column_name = { expression |

default | null }

| @variable = expression

| @variable = column = expression

} [ ,...n ]

{ { [ from { < table_source > } [

,...n ] ]

[ where

< search_condition > ] }

|

[ where current of

{ { [ global ] cursor_name } |

cursor_variable_name }

] }

[ option ( < query_hint > [

,...n ] ) ]

< table_source > ::=

table_name [ [ as ] table_alias ] [

with ( < table_hint > [ ,...n ] ) ]

| view_name [ [ as ] table_alias ]

| rowset_function [ [ as ] table_alias

]

| derived_table [ as ] table_alias [

( column_alias [ ,...n ] ) ]

| < joined_table >

< joined_table > ::=

< table_source > < join_type > <

table_source > on < search_condition >

| < table_source > cross join <

table_source >

| < joined_table >

< join_type > ::=

[ inner | { { left | right | full

} [outer] } ]

[ < join_hint > ]

join

< table_hint_limited > ::=

{ fastfirstrow

| holdlock

| paglock

| repeatableread

| rowlock

| serializable

| tablock

| tablockx

| updlock

}

< table_hint > ::=

{ index ( index_val [ ,...n ] )

| fastfirstrow

| holdlock

| nolock

| paglock

| readpast

| repeatableread

| rowlock

| serializable

| tablock

| tablockx

| updlock

}

< query_hint > ::=

{ { hash | order } group

| { concat | hash | merge }

union

| {loop | merge | hash } join

| fast number_rows

| force order

| maxdop

| robust plan

| keep plan

}

参数

table_name

需要更新的表的名称。如果该表不在当前服务器或数据库中,或不为 当前用户所有,这个名称可用链接服务器、数据库和所有者名称来限

定。

with ( < table_hint_limited > [ ...n ] )

指定目标表所允许的一个或多个表提示。需要有 with 关键字和

view_name

要更新的视图的名称。通过 view_name 来引用的视图必须是可

更新的。用 update 语句进行的修改,至多只能影响视图的

from 子句所引用的基表中的一个。有关可更新视图的更多信息,请 参见 create view

rowset_function_limited

openquery openrowset 函数,视提供程序功能而定。有关 提供程序所需功能的更多信息,请参见 ole db 提供程序的

update delete 语句要求。有关行集函数的更多信息,请参 openquery openrowset

set

指定要更新的列或变量名称的列表。

column_name

含有要更改数据的列的名称。column_name 必须驻留于 update 子句中所指定的表或视图中。标识列不能进行更新。

如果指定了限定的列名称,限定符必须同 update 子句中的表或 视图的名称相匹配。例如,下面的内容有效:

update authors

set authors.au_fname = annie

where au_fname = anne

from 子句中指定的表的别名不能作为 set column_name

句中的限定符使用。例如,下面的内容无效:

update titles

set t.ytd_sales = t.ytd_sales + s.qty

from titles t, sales s

where t.title_id = s.title_id

and s.ord_date = (select max(sales.ord_date)

from sales)

若要使上例合法,请从列名中删除别名 t

update titles

set ytd_sales = t.ytd_sales + s.qty

from titles t, sales s

where t.title_id = s.title_id

and s.ord_date = (select max(sales.ord_date)

from sales)

expression

变量、字面值、表达式或加上括弧的返回单个值的 subselect 语句。expression 返回的值将替换 column_name

@variable 中的现有值。

default

指定使用对列定义的默认值替换列中的现有值。如果该列没有默认值 并且定义为允许空值,这也可用来将列更改为 null

@variable

已声明的变量,该变量将设置为 expression 所返回的值。

set @variable = column = expression 将变量设置为

与列相同的值。这与 set @variable = column, column

= expression 不同,后者将变量设置为列更新前的值。

from < table_source >

指定用表来为更新操作提供准则。有关更多信息,请参见 from

table_name [[as] table_alias ]

为更新操作提供准则的表的名称。

如果所更新表与 from 子句中的表相同,并且在 from 子句 中对该表只有一个引用,则指定或不指定 table_alias 均可。如

果所更新表在 from 子句中出现了不止一次,则对该表的一个(且 仅仅一个)引用不能指定表的别名。from 子句中对该表的所有其它 引用都必须包含表的别名。

view_name [ [ as ] table_alias ]

为更新操作提供准则的视图的名称。带 instead of update 触发器的视图不能是含有 from 子句的 update 的目标。

with ( < table_hint > [ ...n ] )

为源表指定一个或多个表提示。有关表提示的信息,请参见本卷 from

rowset_function [ [as] table_alias ]

任意行集函数的名称和可选别名。有关行集函数列表的信息,请参见 行集函数。

derived_table

是从数据库中检索行的子查询。derived_table 用作对外部查询的 输入。

column_alias

替换结果集内列名的可选别名。在选择列表中放入每个列的一个别 名,并将整个列别名列表用圆括号括起来。

由两个或更多表的积组成的结果集,例如:

select *

from tab1 left outer join tab2 on tab1.c3 =

tab2.c3

right outer join tab3 left outer join

tab4

on tab3.c1 = tab4.c1

on tab2.c3 = tab4.c3

对于多个 cross 联接,请使用圆括号来更改联接的自然顺序。

指定联接操作的类型。

inner

指定返回所有相匹配的行对。废弃两个表中不匹配的行。如果未指定 联接类型,则这是默认设置。

left [outer]

指定除所有由内联接返回的行外,所有来自左表的不符合指定条件的 行也包含在结果集内。来自左表的输出列设置为 null

right [outer]

指定除所有由内联接返回的行外,所有来自右表的不符合指定条件的 行也包含在结果集内。来自右表的输出列设置为 null

full [outer]

如果来自左表或右表的某行与选择准则不匹配,则指定在结果集内包 含该行,并且将与另一个表对应的输出列设置为 null。除此之外, 结果集中还包含通常由内联接返回的所有行。

指定联接提示或执行算法。如果指定了 ,也必须明确

指定 innerleftright full。有关联接提示的更多信 息,请参见 from。篇三:sql server update语句的用法

sql server update语句的用法

sql server中的数据改动是免不了的,使用update语句就可以实现我们对数据库数据的更新修改操作,下面就让我们来了解一下update语句的用法。

sql server update语句用于更新数据,下面就为您详细介绍sql server update语句语法方面的知识,希望可以让您对sql server update语句有更多的了解。

现实应用中数据库中的数据改动是免不了的。通常,几乎所有的用户数据库中的大部分数据都要进行某种程度的修改。在sql server数据库中要想修改数据库记录,就需要用update语句,update语句就是为了改变数据库中的现存数据而存在的。这条语句虽然有一些复杂的选项,但确实是最容易学习的语句之一。这是因为在大多数情况下,这条语句的高级部分很少使用。在用户看来,update语句只是用来改变指定行中的数据。但实际的内部情况是,sql server从表中删除旧的数据行并插入新行。

sql server update语句的语法如下:

1. update set > = where

下面是语法选项简介:

表的名称。该表包含了要修改值的列

要修改数据的列的名称

要输入到列中的新值

这是update语句中最重要的部分。通过指定一个好的搜索条件,你能够限定表内被修改的行数。如果你不指定搜索条件,sqlserver会用新值修改表内的所有行 示例:

现在我们来看看如何实际修改表中的某些行。我们在表中有一列使用了唯一值,可以区分表中的每一行。因此,我们可以轻松地写下update语句,只改变对应某作者的那行数据。如下:

1. update users set phone=78789831 where number =231;

比如现在我们要把超市表内的每件商品价格都提高11%,是否有必要为每一行都写一条独立的update语句呢?就现在的情况而言,也许不会有很多update语句要写,但如果是

更大的表,这就成问题了。所以回答是否定的。

本文来源:https://www.2haoxitong.net/k/doc/8bcf73b5ddccda38366bafc7.html

《SQLUPDATE语句WHERE.doc》
将本文的Word文档下载到电脑,方便收藏和打印
推荐度:
点击下载文档

文档为doc格式