数据SQL Server中更新数据的简单技巧

简介

SQL Server是一个重要的数据库管理系统,在数据的更新上有着多种简便的技巧。本文将介绍几种在SQL Server中更新数据的方法,让你轻松更新数据。

常规更新数据

语法

UPDATE table_name

SET column1 = value1, column2 = value2, ...

WHERE condition;

以上是更改数据最基本的语法结构,其中为要修改数据的表名,为要更新的数据列的名称,为要更改为的值,为指定要更改的行的条件。

示例

假如我们有一个名为“students”的表,其中有三列,分别为“id”、“name”和“score”,现在要更改“id”=1的学生的分数为100。使用以下代码即可:

UPDATE students

SET score = 100

WHERE id = 1;

使用子查询更新数据

语法

UPDATE table_name

SET column1 = (SELECT expression FROM table_name WHERE condition),

column2 = (SELECT expression FROM table_name WHERE condition),

...

WHERE condition;

以上结构中,指定要更改的表名,而是子查询所返回的结果,条件限定了要更改的列。

示例

我们要给“score”=90的学生名字前加上前缀“good”。用以下代码可以实现:

UPDATE students

SET name = 'good' + name

WHERE score = 90;

使用JOIN更新数据

语法

UPDATE table1

SET table1.column = table2.expression

FROM table1

JOIN table2

ON table1.column = table2.column

WHERE condition;

该语法中,我们需要使用JOIN连接,将两个表中的数据联系在一起。表达式table1.column=table2.column用于将两个表的行与数据列匹配起来。WHERE子句用于指定要更新的行。

示例

以“students”表和“scores”为例子,假如我们要将“students”表中的学生名字更改为他们相应的成绩。首先,我们需要在“students”表和“scores”表之间建立一个JOIN。使用以下代码:

UPDATE students

SET students.name = scores.score

FROM students

JOIN scores

ON students.id = scores.id;

使用CASE语句更新数据

语法

UPDATE table_name

SET column1 =

CASE

WHEN condition1 THEN result1

WHEN condition2 THEN result2

...

ELSE result

END,

column2 =

CASE

WHEN condition1 THEN result1

WHEN condition2 THEN result2

...

ELSE result

END,

...

WHERE condition;

该语法中,我们可以根据不同的情况使用不同的更新方式。

示例

如需将“score”≥80的学生信息中,“name”前添加前缀“good”,其余信息保留不变。使用以下代码:

UPDATE students

SET name =

CASE

WHEN score >= 80 THEN 'good' + name

ELSE name

END,

score =

CASE

WHEN score >= 80 THEN score

ELSE score

END;

使用TOP更新数据

语法

UPDATE TOP (expression) table_name

SET column = value

WHERE condition;

该语法中,“expression”为指定的行数表达式,指定了要更新多少行;“table_name”是表名;“column”是需要更新的列;“value”是要更新到的新值;“condition”是限定要更新的行的条件。

示例

如需将“students”表前三名学生的“score”改为100,使用以下代码:

UPDATE TOP (3) students

SET score = 100

ORDER BY score DESC;

使用MERGE语句更新数据

语法

MERGE target_table AS target

USING source_table AS source

ON (merge_condition)

WHEN MATCHED THEN

UPDATE SET target.column1 = source.column1, target.column2 = source.column2

WHEN NOT MATCHED BY TARGET THEN

INSERT (column_list) VALUES (value_list)

WHEN NOT MATCHED BY SOURCE THEN

DELETE;

MERGE语句是一次性合并两个表的数据,如果目标表中不存在的数据,就进行插入。在合并的时候,可以指定各个字段需要如何合并。

示例

我们把“students”表中的“score”合并到“scores”表中。如果“scores”表中已有该学生分数,则更新分数;否则,新增一条记录。我们使用以下代码来达到目的:

MERGE scores AS target

USING students AS source

ON (target.id = source.id)

WHEN MATCHED THEN

UPDATE SET target.score = source.score

WHEN NOT MATCHED BY TARGET THEN

INSERT (id, score)

VALUES (source.id, source.score)

WHEN NOT MATCHED BY SOURCE THEN

DELETE;

总结

使用以上五种方法之一可以轻松地更新SQL Server中的数据。从简单的常规更新,到使用子查询、JOIN、CASE语句和MERGE语句,这些技巧可以满足绝大部分更新数据的需求。我们可以根据具体情况选择最合适的方法,提高更新效率。

数据库标签