mysql数据库与表的基本操作总结(Mysql、Oracle中常用的多表修改语句总结)
类别:数据库 浏览量:1190
时间:2022-01-19 00:26:22 mysql数据库与表的基本操作总结
Mysql、Oracle中常用的多表修改语句总结今天在sql训练题库中看到了这题,这是一道很有代表性的多表修改题,其实解出这道题并不难,无论是mysql中还是oracle中都有很多种解法,接下来就好好归纳一下这些解法。
msyql中多表修改
对于mysql中常用的多表修改语句,还是用例子来解释一下吧。
|
//建表 create table aaa(id int ,value1 int (5),value2 int (5),value3 int (5),value4 int (5)); create table bbb like aaa; //插入数据 insert into aaa values (1,0,0,0,0),(2,0,0,0,0),(3,0,0,0,0),(4,0,0,0,0),(5,0,0,0,0),(6,0,0,0,0),(7,0,0,0,0); insert into bbb values (1,11,12,13,14),(3,31,32,33,34),(5,51,52,53,54); //备份 create table a1 select * from aaa; create table b1 select * from bbb; |
一般多表修改:(在mysql和Oracle中都适用,下面也会解释Oracle中的)
|
//一般多表修改 update a1 set a1.value1 = ( select b1.value1 from b1 where a1.id = b1.id), a1.value2 = ( select b1.value2 from b1 where a1.id = b1.id); |
表关联多表修改(这个只适用于mysql中)
|
//表关联多表修改 update a1 inner join b1 on a1.id = b1.id set a1.value1 = b1.value1, a1.value2 = b1.value2,a1.value3 = b1.value3; |
oracle中多表修改
|
--建表 create table aaa(id number,value1 number,value2 number,value3 number,value4 number); create table bbb(id number,value1 number,value2 number,value3 number,value4 number); --插入数据 insert into aaa values (1,0,0,0,0); insert into aaa values (2,0,0,0,0); insert into aaa values (3,0,0,0,0); insert into aaa values (4,0,0,0,0); insert into aaa values (5,0,0,0,0); insert into aaa values (6,0,0,0,0); insert into aaa values (7,0,0,0,0); insert into bbb values (1,11,12,13,14); insert into bbb values (3,31,32,33,34); insert into bbb values (5,51,52,53,54); -- 备份 create table a1 as select * from aaa; create table b1 as select * from bbb; |
一般多表修改:
和上面mysql中语句一样,这个写法比较容易理解,但是效率实在有些不尽人意,如果你们的多表修改只用修改一列(像最上面的那题一样),用这种写法挺好的。
|
//一般多表修改 update a1 set a1.value1 = ( select b1.value1 from b1 where a1.id = b1.id), a1.value2 = ( select b1.value2 from b1 where a1.id = b1.id); |
但是涉及到了多列修改,用这个就不太现实了,在oracle中就提供了一种语法让我们去进行多表修改和新增。
Merge into
merge into是update和insert语句的结合,可以同时实现update和insert的功能,在这里我就不多解释了,简单介绍一下merge into的语法吧。
|
merge into 目标表a ---into指向的目标表就是我们要做更新操作的表。 using 源表b ---using指向的表不能被更改,它还可以是视图、结果集等。 on (a.id = b.id) ---on()里面是用作目标表和源表匹配的条件,条件满足则匹配成功。 when matched then ---when matched then 后面接的是修改语句。 update set ... when not matched then ---when not matched then 后面接的是新增语句。 insert values (....); |
|
merge into a1 using b1 on (a1.id = b1.id) when matched then update set a1.value1 = b1.value1,a1.value2 = b1.value2,a1.value3 = b1.value3; |
exists多表修改
exists同样也适用于mysql和oracle,如果没有硬性要求表a根据表b的数据去修改,使用exists也是可以的。使用exists后的sql执行顺序是先执行外查询再执行内查询,所以多表修改就不能将表a1的值改为表a2的值。
|
update a1 set a1.value1 = 99,a1.value2 = 999,a1.vlaue3=999 where exists( select value1 from b1 where a1.id = b1.id); |
到此这篇关于Mysql、Oracle中常用的多表修改语句的文章就介绍到这了,更多相关Mysql、Oracle常用多表修改语句内容请搜索开心学习网以前的文章或继续浏览下面的相关文章希望大家以后多多支持开心学习网!
原文链接:https://blog.csdn.net/wankao/article/details/109454880
您可能感兴趣
- mysql创建表的基本步骤(mysql中操作表常用的sql总结)
- 阿里云mysql升级注意事项(阿里云mysql空间清理的方法)
- mysql索引应该注意的地方(关于MySQL索引知识的小妙招)
- mysql插入数据错误代码(教你解决往mysql数据库中存入汉字报错的方法)
- oraclemysql知识点(详解Mysql和Oracle之间的误区)
- MySQL批量执行SQL脚本文件
- docker怎样安装mysql8(docker-compose安装db2数据库操作)
- mysql数据库基本使用方法(详解MySQL 数据库范式)
- mysql数据结构讲解(详解MySQL 数据库隔离级别与MVCC)
- mysql中基本语句(MySQL中explain语句的基本使用教程)
- 将SQL Server数据迁移到MySQL的方法
- mysql数据类型
- mysql视图管理方法(MySQL 视图View原理解析)
- mysql用户登录命令(mysql的登陆和退出命令格式)
- mysql连接navicat报错1045(Navicat 连接MySQL8.0.11出现2059错误)
- MySql中date、datetime、time类型的区别
- 红色文化进国企(红色文化进国企)
- 车友的选择| 轮毂该如何选(车友的选择轮毂该如何选)
- 秦海璐炫耀和王新军热恋蜜事,不料对方吐槽她吃饱后肚子撅老高(秦海璐炫耀和王新军热恋蜜事)
- 秦海璐一袭旗袍惹人倾心,将高级与淡雅展现的游刃有余(秦海璐一袭旗袍惹人倾心)
- 门外之见 海蛎子味 的表演,能走多远(门外之见海蛎子味)
- 三部冷门谍战剧,第一部2014年拍摄,至今还未播出(三部冷门谍战剧)
热门推荐
- vue自定义组件定义事件(基于Vue实现自定义组件的方式引入图标)
- zabbix sender能否发送告警数据(python3实现zabbix告警推送钉钉的示例)
- Ext.form.FieldSet的用法
- mysql添加数据很慢(mysql如何优化插入记录速度)
- python socket 设置通信协议(详解python中TCP协议中的粘包问题)
- 简单的sql注入举例(分享一个简单的sql注入)
- cssdiv垂直居中怎么设置(CSS设置DIV垂直居中的N种方法 兼容IE浏览器)
- 香港云服务器哪个最好(香港云服务器和国内云服务器有什么区别?)
- tomcat怎么知道访问servlet(详解从源码分析tomcat如何调用Servlet的初始化)
- dedecms列表分页代码(Dedecms文章设置推荐后列表页标题自动加粗的解决方法)
排行榜
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9