SQLServer update语句用法

本文介绍了SQLServer中UPDATE语句的使用,包括如何更新单表和多表的数据,并提供了详细的语法结构。通过示例,解释了如何设置列的值以及在更新前需要注意的数据安全问题,建议在操作前备份数据。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

UPDATE是我们常SQL语句之一,update主要用于更改表中的现有数据.

更新一个表:update product set l_parentid ='1'

详细解说: update 表名 set 列名 =参数

更新两个表或多个表: update product set l_parentid = producttype.parentid from product,producttype where product.l_typeid =producttype.id

详细解说:  update 表名 set 列名 =参数 from 表名1,表名2 where 指定条件

 

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
        | READCOMMITTED
        | REPEATABLEREAD
        | ROWLOCK
        | SERIALIZABLE
        | TABLOCK
        | TABLOCKX
        | UPDLOCK
    }

< table_hint > ::=
    
{    INDEX ( index_val [ ,...n ] )
        | FASTFIRSTROW
        | HOLDLOCK
        | NOLOCK
        | PAGLOCK
        | READCOMMITTED
        | READPAST
        | READUNCOMMITTED
        | 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

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

SET

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

小贴士:SQL Server 联机丛书就提供了很详细Transact-SQL 参考

update在用之前请你备份数据,在用的数据一更新错,你就挂了.

SQL Server 的 `UPDATE` 语句用于修改表中现有记录的数据。基本语法如下: ```sql UPDATE 表名 SET 列名1 = 值1, 列名2 = 值2, ... [WHERE 条件]; ``` ### 详细说明 1. **基本语法**: - `UPDATE` 指定要更新的表。 - `SET` 指定要更新的列及其新值。 - `WHERE` 子句用于指定要更新的行。如果省略,将更新表中的所有行。 2. **示例**: - 更新单个列: ```sql UPDATE Employees SET Salary = 50000 WHERE EmployeeID = 1; ``` - 更新多个列: ```sql UPDATE Employees SET Salary = 55000, Department = 'IT' WHERE EmployeeID = 2; ``` 3. **高级用法**: - 使用子查询更新: ```sql UPDATE Products SET Price = Price * 1.1 WHERE CategoryID IN (SELECT CategoryID FROM Categories WHERE CategoryName = 'Electronics'); ``` - 使用 `FROM` 子句更新: ```sql UPDATE Orders SET OrderStatus = 'Shipped' FROM Orders o JOIN Shipments s ON o.OrderID = s.OrderID WHERE s.ShipDate IS NOT NULL; ``` 4. **注意事项**: - 在执行 `UPDATE` 前,建议先使用 `SELECT` 语句测试 `WHERE` 条件,确保只更新目标行。 - 更新大量数据时,考虑分批更新以减少锁争用。 - 事务中执行 `UPDATE` 以便在出错时回滚。 ### 示例代码 ```sql -- 更新单个列 UPDATE Customers SET ContactName = 'Alfred Schmidt' WHERE CustomerID = 1; -- 更新多个列 UPDATE Customers SET ContactName = 'Alfred Schmidt', City = 'Frankfurt' WHERE CustomerID = 1; -- 使用子查询更新 UPDATE Products SET UnitPrice = UnitPrice * 1.05 WHERE SupplierID IN (SELECT SupplierID FROM Suppliers WHERE Country = 'USA'); ```
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值