首页 > 编程语言 >Java日总结---多表查询&事务

Java日总结---多表查询&事务

时间:2024-10-10 19:43:32浏览次数:1  
标签:事务 Java -- money account --- 李四 多表 1000

  1. 多表查询简介:
    设计员工和部门两个表
点击查看代码
# 创建部门表
CREATE TABLE dept(
did INT PRIMARY KEY AUTO_INCREMENT,
dname VARCHAR(20)
);

# 创建员工表
CREATE TABLE emp (
id INT PRIMARY KEY AUTO_INCREMENT,
NAME VARCHAR(10),
gender CHAR(1), -- 性别
salary DOUBLE, -- 工资
join_date DATE, -- 入职日期
dep_id INT,
FOREIGN KEY (dep_id) REFERENCES dept(did) -- 外键,关联部门表(部门表的主键)
);

-- 添加部门数据
INSERT INTO dept (dNAME) VALUES ('研发部'),('市场部'),('财务部'),('销售部');

-- 添加员工数据
INSERT INTO emp(NAME,gender,salary,join_date,dep_id) VALUES
('孙悟空','男',7200,'2013-02-24',1),
('猪八戒','男',3600,'2010-12-02',2),
('唐僧','男',9000,'2008-08-08',2),
('白骨精','女',5000,'2015-10-07',3),
('蜘蛛精','女',4500,'2011-03-14',1),
('小白龙','男',2500,'2011-02-14',null);

如果多表查询使用:select * from emp , dept;
那么会查询到24条结果,其中包含错误无效的数据,原理:-- 笛卡尔积:从A,B两个集合取所有集合情况,也就是6条员工数据和4条部门数据的全部组合
因此查询时需要限制条件:select * from emp , dept where emp.dep_id = dept.did;
得到结果:
2.多表查询--内连接&&外连接


3.子连接

  • 事务
  1. 简介:
  • 数据库的事务是一种机制,一个操作序列,包含了一组数据库操作命令。
  • 事务把所有的命令作为一个整体一起向系统提交或撤销操作请求,即一组数据库命令要么同时成功,要么同时失败。
    2.事务的操作语句-- 三个命令:

    (事务的操作是临时操作,只有当提交事务时之前的操作才会变为永久操作,否则回滚事务,之前的操作全部取消。)
    我的实例:(李四向张三转账)
点击查看代码
CREATE TABLE account(
id int PRIMARY KEY auto_increment,
name varchar(10),
money double(10,2)
);
-- 添加数据
INSERT INTO account(name,money) values('张三',1000),('李四',1000);

select * from account;
update account set money = 1000;

-- 转账操作
-- 开启事务
BEGIN;
-- 查询李四余额
select money from account where name = '李四';
-- 李四金额减500
update account set money = money - 500 where name = '李四';
-- 出错了... 
-- 张三金额加500
update account set money = money + 500 where name = '张三';
-- 提交事务
commit;
-- 回滚事务
ROLLBACK;
开始表中张三李四余额都为1000; 从begin开始事务,如果出现错误那么该表访问结果为张三余额1000,李四余额500 但是从另一个查询中发现数据没变(因为事务begin开始后的操作都为临时操作,只有遇到提交事务才会永久改变)张三李四都为1000 此时出错后进行回滚事务:rollback 表中数据变回都为1000 当把错误清除后进行提交事务:commit 发现两个查询中都已转账成功:张三余额1500,李四余额500

标签:事务,Java,--,money,account,---,李四,多表,1000
From: https://www.cnblogs.com/hx-top/p/18454991

相关文章

  • 多模态论文串讲-学习笔记(下)
    入门参考:跟着chatgpt一起学|多模态入门-CSDN博客学习笔记(上):多模态论文串讲-学习笔记(上)-CSDN博客学习参考:多模态论文串讲·下【论文精读·49】_哔哩哔哩_bilibili学习笔记上介绍只使用transformer encoder的方法,本文来介绍下同时使用transformerencoder和decoder的方法。......
  • 昇思MindSpore进阶教程--自动数据增强
    大家好,我是刘明,明志科技创始人,华为昇思MindSpore布道师。技术上主攻前端开发、鸿蒙开发和AI算法研究。努力为大家带来持续的技术分享,如果你也喜欢我的文章,就点个关注吧正文开始MindSpore除了可以让用户自定义数据增强的使用,还提供了一种自动数据增强方式,可以基于特定......
  • 玩玩虚拟化-KVM
    1、讲在前面(玩这个的心历路程)最近一段时间想玩一些集群之类的东西,学习搞一下K8s,集群啥的,但是我没有多台服务器,如果购买云服务器成本太高,后来想到了买台台式机弄点虚拟机来玩,于是我就在某鱼上淘了台二手台式机(24核+32G+512G+4G显卡),价格1280。后来想到要装虚拟机,我就想到了现在经......
  • Open X-Embodiment: Robotic Learning Datasets and RT-X Models
    OpenX-Embodiment:RoboticLearningDatasetsandRT-XModels启发:在不同数据集上训练大规模、高容量模型以处理下游应用方面取得显著成功。是否能将所有数据整合在高容量机器人操作模型上使其有效适应新的机器人、任务、环境?贡献:提供了标准化数据格式和模型的数据集,收......
  • #数学基础-概率论day1-1 事件与概率
    1.事件事件是指在某个试验或观察中可能发生的结果或结果的集合。用大写字母,如A,B,C等表示。1.1概念1.1.1基本事件基本事件是指试验中不可再分的最简单的事件。每个基本事件代表一个单一的可能结果。抛一枚硬币:基本事件是“正面”和“反面”。1.1.2复合事件复合事件是......
  • JAVA面试八股文(三)
    MybatisMybatis的一级、二级缓存? 一级缓存存储的作用域是session,当sessionflush或者close之后,session中的缓存会失效,此时一级缓存就开启 二级缓存和一级缓存机制相同,hashmap存储,作用域为mapper,二级缓存一般不用,因为他不好控制缓存的刷新,我们一般是用的是redisMyBatis的......
  • 2024CSP-J模拟赛————S12678
    禁止抄袭!!!一,赛中得分硬币(coin)100数位(digit)100划分(partition)0路径(path)0总分200二,赛中概括第一第二题30分钟做完,三四题不会。三,题目解析硬币(coin)1.1问题描述小明很喜欢 100这个数字,父母给他一些零花钱,这些零花钱的面值是 a 和 b,即小明......
  • Cortex-M3/M4/M7 芯片 Fault 分析原理与实战
    目录一、简介1、异常类型2、异常优先级3、同步异步问题4、异常具体类型二、Faultexceptionregisters1、Controlregisters1.1CCR1.2SHP1.3SHCSR2、Statusandaddressregisters2.1HardFaultStatusRegister——HSFR2.2ConfigurableFaultStatusRegister——......
  • 重修设计模式-行为型-观察者模式
    重修设计模式-行为型-观察者模式Defineaone-to-manydependencybetweenobjectssothatwhenoneobjectchangesstate,allitsdependentsarenotifiedandupdatedautomatically.在对象之间订阅一个一对多的依赖,当一个对象状态改变时,它的所有依赖对象都会自动......
  • [面试] java开发面经-1
    前言目录1.看到你的简历里说使用Redis缓存高频数据,说一下Redis的操作2.说一下Redis的缓存击穿、缓存穿透、缓存雪崩3.你的项目中使用了ThreadLocal,那么当有两个请求同时发出时,会怎么处理,可以同时处理两个请求吗4.使用的是哪个版本的git5.假如在git提交的有两份代码,该怎......