SQL Update

Hi

In this tutorial I will give you example of SQL Update queries which will include SQL update join examples. I will use SQL Server 2008 R2 for my samples which should work with previous version of SQL Server without any problems.

Contents

SQL Update Overview


SQL Update is used to update one table columns with specified values. You can update one or multiple columns at the same time. For instance you might want to update customer address and this case you would update several columns like AddressLine1, AddressLine2, City, Post code with usually either hard coded or provided values from end user application. You could also update values using calculated fields for instance you might want to update Employee holiday entitlement (once a year) and you could use Employee start date to calculate number of years that employee has worked for the company and use some "IF" (case in SQL) logic to specify the correct holiday entitlement. Very often you might want to perform updates using another related table and for instance in our Holiday entitlement case we could use a HolidayEntitlement table and match it against our YearsWorked that could be calculated using EmployeeStartDate and provide matching row (HolidayEntitlement) from related HolidayEntitlement table. This SQL Update Join that I will give you examples of but be careful with joins this method can be tricky and I will give examples when it can go wrong. Apart from specifing or matching rows in SQL Update the most common task is to specify correct filter (or join) so we update only the rows with values we want to affect. Below I will provide you with simple syntax and later on provide you examples that will cover types of updates I mentioned.

SQL Update Syntax

Below I will give you basic and most popular example of SQL Update syntax which should work in most cases but there are more complicated syntaxes and I will show them to you with examples and screenshots later in this section.

 

Remember you can only update one table at a time but you can update multiple fields at the same time by separating them using commas.

Syntax
UPDATE tableName
SET ColumnName = NewValue
,ColumnName2 = NewValue2
WHERE ColumnName = FilterValue

SQL Update Simple Example

In the example below we change Katie's surname to Glownia based on her CustomerID which is 2
SQL Update Statement

The above example is the most popular SQL update and in our sample we used simple condition.

TIP: Very often you will want to perform updates on single or multiple rows. The best approach to ensure you update correct rows is to perform SELECT with the same conditions before you perform the actual update as it is not easy to "undo" your updates.

Warning: Make sure you use WHERE clause otherwise you might end up accidentely updating all values like in the example below (which occasionally is intentional)
Warning: See below nonsense example.

SQL Update Without Filter

 

 

 

SQL Update Join


It is also fairly common to perform SQL Update Join which means that we will update one table using another table and join condition. Below is an example where I have a customer table and I have UpdatedCustomer table that contains 'latest' customer details let say from another source system. In my case I want to update my Customer table using the latest data. In order to do that I perform join between my udpate target table and my source table using join on customerID. Notice the FROM I use the same table as in the update line; this is how it know how to 'map' rows for the update.

SQL Update Join Example

Warning: Updates using join can be sometimes tricky. If you have join that produces more than one match for the target table then you may get unexpected results without warning! See below example

SQL Update Join Example

Warning: Wrong join and you end up with nonsense results. See below

sql-nonsense-join

Take care
Emil

Did you find this page useful? +5  |  -0
(5 Votes)

It's very clear with screen shots
Want to add a comment


no comments
Donations: $145 (30 days)
Next Target: $250
Achieved: 72%

30 days stats
Thank you to your donation!

21st Aug - John Chamblee ($50)
20th Aug - Eamon Heenan (£10)
20th Aug - Pawel Olejniczak ($20)
19th Aug - Robert French ($10)
19th Aug - Robert Kelly ($10)
16th Aug - Lee Mezzulo ($5)
8th Aug - Betrehail Keteam ($2)
7th Aug - Pawel Bednarski (£10)
27th Jul - Bernhard Lauber (€20)
----
15th Jul - Pawel Olejniczak (£20)
13th July - Thomas Tabert ($10)
30 days stats
#1: Server $82/month
#2: Video hosting $25/month
#3: Katie & Emil $0.00/h
Caring is sharing :)