sql语句学习教程07_update_update与join_update语句_update语法_sql增删改语句

教程发布:风哥 教程分类:MySQL教程 更新日期:2020-03-05 浏览学习:520

sql语句学习教程07_update_update与join_update语句_update语法_sql增删改语句

数据库就是用来存储数据的,所有的数据都根据业务分门别类,存储在对应的表中,所以数据的操作,其实就是对表的数据进行增删改查操作,这些操作采用的是标准SQL的DML操作语言,如insert、delete、update语句,接下来风哥为大家介绍如何使用update对数据进行修改操作的高级操作。
1.SQL UPDATE JOIN
SQL UPDATE JOIN可使用一个表和连接条件来更新另一个表。
假设有一个客户表,更新包含来自其他系统的最新客户详细信息的客户表。比如要用最新数据来更新客户表。 在这种情况下,将使用客户ID上的连接在目标表和源表之间执行连接。
案例:SQL UPDATE和JOIN语句的查询语法。
fgedu.net.cn @mysql>UPDATE fgedu_table 
INNER JOIN 
fgedu_table 
ON fgedu_table.name = fgedu_table.id 
SET fgedu_table.name = fgedu_table.name

如何在SQL UPDATE语句中使用JOIN使用多个表?

这里使用两个表:fgedu_table1和fgedu_table2。
创建fgedu_table1表 -
fgedu.net.cn @mysql>CREATE TABLE fgedu_table1 (column1 INT, column2 INT, column3 VARCHAR (100));
INSERT INTO fgedu_table1 (column1, column2, column3)
SELECT 1, 11, 'ITPUX1' 
UNION ALL 
SELECT 11,12, 'ITPUX2' 
UNION ALL  
SELECT 21, 13, 'ITPUX3' 
UNION ALL  
SELECT 31, 14, 'ITPUX4';

创建fgedu_table2表 -
fgedu.net.cn @mysql>CREATE TABLE fgedu_table2 (column1 INT, column2 INT, column3 VARCHAR (100));
INSERT INTO fgedu_table2 (column1, column2, column3)
SELECT 1, 21, 'FGEDU1' 
UNION ALL 
SELECT 11, 22, 'FGEDU2' 
UNION ALL  
SELECT 21, 23, 'FGEDU3' 
UNION ALL  
SELECT 31, 24, 'FGEDU4';

接下来,查看表中的内容
SELECT * FROM fgedu_table1;
执行上面示例代码,得到以下结果
fgedu.net.cn @mysql> SELECT * FROM fgedu_table1;
+---------+---------+---------+
| column1 | column2 | column3 |
+---------+---------+---------+
|       1 |      11 | ITPUX1   |
|      11 |      12 | ITPUX2  |
|      21 |      13 | ITPUX3   |
|      31 |      14 | ITPUX4  |
+---------+---------+---------+
4 rows in set

SELECT * FROM fgedu_table2;
执行上面示例代码,得到以下结果 -
fgedu.net.cn @mysql> SELECT * FROM fgedu_table2;
+---------+---------+-----------+
| column1 | column2 | column3   |
+---------+---------+-----------+
|       1 |      21 | FGEDU1   |
|      11 |      22 | FGEDU2   |
|      21 |      23 | FGEDU3 |
|      31 |      24 | FGEDU4  |
+---------+---------+-----------+
4 rows in set

在fgedu_table2中有两行:column1的值是21和31,假设想要将fgedu_table1中的值更新为fgedu_table2中column1为21和31行的值。
仅更新column2和column3的值。
最简单和最常用的方法是在update语句中使用join子句并在update语句中使用多个表。
fgedu.net.cn @mysql>UPDATE fgedu_table1 t1
LEFT JOIN  fgedu_table2 t2
ON t1.column1 = t2.column1
SET t1.column2 = t2.column2, 
t1.column3 = t2.column3
where t1.column1 in(21,31);

执行以下语句,查看更新结果 -
fgedu.net.cn @mysql>select * from fgedu_table1;
+---------+---------+-----------+
| column1 | column2 | column3   |
+---------+---------+-----------+
|       1 |      11 | ITPUX1     |
|      11 |      12 | ITPUX2    |
|      21 |      23 | FGEDU3 |
|      31 |      24 | FGEDU4  |
+---------+---------+-----------+
4 rows in set

2.如何在SQL中更新日期和时间字段的值?

如果要在SQL中更新日期和时间字段,则应使用以下查询。下面来看看SQL更新日期的语法。
fgedu.net.cn @mysql>UPDATE fgedu_table  
SET Column_Name = 'YYYY-MM-DD HH:MM:SS' 
WHERE Id = value


下面来看看一个示例:
首先,使用一个表来演示更新日期和时间字段。如果要更改id为2的行记录,则应编写以下语法:
fgedu.net.cn @mysql>UPDATE fgedu_table  
SET EndDate = '2017-02-12 00:00:00.000'  
WHERE Id = 2

注意:SQL自动附加默认的00:00:00.000。此查询将更改上面假设表中第一行的日期和时间字段。

网站声明:本文由风哥整理发布,转载请保留此段声明,本站所有内容将不对其使用后果做任何承诺,请读者谨慎使用!
【上一篇】sql语句学习教程08_update_update批量更新_update语句_update语法_sql增删改
【下一篇】sql语句学习教程06_update_sql update_update语句_update语法_sql增删改语句