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);
三、测试
1、set一个字段
在表t_test中设置第二条记录(bs为2)的password为***。
updatet_test t
sett.password = ***
where t.bs = 2;
2、set多个字段
在表t_test中设置第一条记录(bs为1)的password为*、remark为*。
updatet_test t
sett.password = *, t.remark = *
where t.bs = 1;
3、set null值
在表t_test中设置第三条记录(bs为3)的password为null、remark为null。
updatet_test t
sett.password = null, t.remark = null
where t.bs = 3;
这个是按照标准语法写的,在不同的数据库系统中,update还有更多的写法,但是标准写
法都是支持的。以上三个例子为了说明情况,每次都更新一行。在实际中,可以通过where语句约束来控制更新行数。篇二:sql的update语句功能非常强大
语法
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。除此之外, 结果集中还包含通常由内联接返回的所有行。
指定联接提示或执行算法。如果指定了 ,也必须明确
指定 inner、left、right 或 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
下面是语法选项简介:
现在我们来看看如何实际修改表中的某些行。我们在表中有一列使用了唯一值,可以区分表中的每一行。因此,我们可以轻松地写下update语句,只改变对应某作者的那行数据。如下:
1. update users set phone=78789831 where number =231;
比如现在我们要把超市表内的每件商品价格都提高11%,是否有必要为每一行都写一条独立的update语句呢?就现在的情况而言,也许不会有很多的update语句要写,但如果是
更大的表,这就成问题了。所以回答是否定的。
本文来源:https://www.2haoxitong.net/k/doc/8bcf73b5ddccda38366bafc7.html
文档为doc格式