sql语句学习教程06_update_sql update_update语句_update语法_sql增删改语句
sql语句学习教程06_update_sql update_update语句_update语法_sql增删改语句
数据库就是用来存储数据的,所有的数据都根据业务分门别类,存储在对应的表中,所以数据的操作,其实就是对表的数据进行增删改查操作,这些操作采用的是标准SQL的DML操作语言,如insert、delete、update语句,接下来风哥为大家介绍如何使用update对数据进行修改操作。
1. SQL UPDATE语句简介
要更改表中的现有数据,请使用UPDATE语句。 以下是UPDATE语句的语法:
fgedu.net @mysql>UPDATE table_name
SET column1 = value1,
column2 = value2
WHERE
condition;
SQL
在上面的语法中 -
首先,在UPDATE子句中指明要更新的表。其次,在SET子句中指定要修改的列。 SET子句中未列出的列的值不会被修改。第三,指定WHERE子句中要更新的行。
UPDATE语句根据WHERE子句中的条件影响表中的一行或多行。 例如,如果WHERE子句包含主键表达式,则UPDATE语句仅更改一行。
但是,将修改WHERE条件评估为true的任何行。 因为WHERE子句是可选的,所以,如果省略它,表中的所有行都将受到影响。
2. SQL UPDATE语句示例
我们将使用fgedu_yg和fgedu_bm表来演示如何使用UPDATE语句。
1)UPDATE更新一行示例
假设有一个员工编号(yg_id)的值为:202,在fgedu_yg表中查询数据记录,如下所示 -
fgedu.net @mysql> select first_name,last_name from fgedu_yg where yg_id=202;
+------------+-----------+
| first_name | last_name |
+------------+-----------+
| itpux | fgedu |
+------------+-----------+
1 row in set
要将last_name字段的值从fgedu改为fgjy,请使用以下UPDATE语句:
fgedu.net @mysql>UPDATE fgedu_yg
SET
last_name = 'fgjy'
WHERE
yg_id = 202;
数据库系统更新了yg_id为202的记录last_name列的值。可以使用以下SELECT语句对其进行验证。
fgedu.net @mysql>SELECT
yg_id,
first_name,
last_name
FROM
fgedu_yg
WHERE
yg_id = 202;
执行上面查询语句,得到以下结果 -
+-------------+------------+-----------+
| yg_id | first_name | last_name |
+-------------+------------+-----------+
| 202 | itpux | fgjy |
+-------------+------------+-----------+
1 row in set
2)UPDATE多行示例
现在,要把所有工资低于2800的员工全部提高到3500,在更新数据之前,让我们先来看看有有哪些工资低于2800的员工。
fgedu.net @mysql>SELECT
yg_id,
first_name,
last_name,salary
FROM
fgedu_yg
WHERE
salary<3500;
+-------------+------------+-----------+--------+
| yg_id | first_name | last_name | salary |
+-------------+------------+-----------+--------+
| 106 | itpux01 | fgjy | 2900 |
| 107 | itpux02 | fgjy | 2800 |
| 108 | itpux03 | fgjy | 2600 |
| 109 | itpux04 | fgjy | 2800 |
| 116 | itpux05 | Liu | 2700 |
+-------------+------------+-----------+--------+
5 rows in set
执行以下UPDATE语句,以更新工资为:3500。
fgedu.net @mysql>UPDATE
fgedu_yg
SET
salary=3500
WHERE
salary<3500;
3)带有子查询示例的SQL UPDATE
有时,当员工更改姓氏(last_name)时,只更新fgedu_yg表而不更新fgedu_bm表。要确保子项的姓氏(last_name)始终与fgedu_yg表中父项的姓氏(last_name)匹配,请使用以下语句:
fgedu.net @mysql>UPDATE fgedu_bm
SET last_name = (
SELECT
last_name
FROM
fgedu_yg
WHERE
yg_id = fgedu_bm.yg_id
);
由于省略了WHERE子句,因此UPDATE语句更新了fgedu_bm表中的所有行。在SET子句中,我们使用子查询而不是使用文字值来从fgedu_yg表中获取相应的last_name值。