首页 > 数据库 >数据库—多表查询、事务

数据库—多表查询、事务

时间:2024-10-21 15:47:40浏览次数:6  
标签:事务 多表 -- 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;

(1).多表查询——内连接、外连接

2.事务
(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

标签:事务,多表,--,money,数据库,account,查询,1000
From: https://www.cnblogs.com/abc233/p/18474039

相关文章

  • 请问织梦数据库在哪?织梦数据库配置
    各版本数据库连接文件位置织梦CMSV5.1:include/config_base.php织梦CMSV5.3:data/common.inc.php织梦CMSV5.5:data/common.inc.php织梦CMSV5.6:data/common.inc.php数据库连接文件内容示例以下是一个典型的数据库连接文件的内容示例(适用于V5.3及更高版本):<?php//数据......
  • 织梦数据库主表?dedecms数据库包含那些表
    以下是织梦CMS(DedeCMS)数据库表的汇总表格,包括主要表及其用途:表名用途dede_admin管理员信息表,存储管理员账号、密码、权限等信息。dede_addonarticle附加文章表,存储文章的详细内容。dede_arctype栏目类型表,存储网站栏目的分类信息。dede_archives文档主......
  • mongodb 查询条件,查询逻辑对照表,逻辑运算符,正则表达式匹配查询,排序,分页/巧分页,更新操
    mongodb查询条件,查询逻辑对照表,逻辑运算符,正则表达式匹配查询,排序,分页/巧分页,更新操作符,更新单个/多个文档,删除文档,批量插入,$type操作符,内嵌文档和数组查找修改1.条件查询SQLMQLa=1{a:1}a<>1{a:{$ne:1}}a>1{a:{$gt:1}}a>=1{a:{$gte:1}}a<1{a:{$lt......
  • 数据库系统-06-SQL查询语句4
    一、AggregateFunctions(聚集函数)1.定义:聚合函数接受一组(集合或多重集合)值作为输入,并返回单个值。2.种类函数功能count统计数量max最大值min最小值avg平均值sum求和二、基本的聚合1.语法:select 聚合函数(字段列表)from 表名;例1:找出计算......
  • 数据库系统-07-SQL查询语句5-嵌套子查询
    一、嵌套子查询1.概念:子查询是嵌套在另一个查询中的select-from-where表达式。子查询通常被用来对集合成员资格、集合的比较以及集合的基数进行检查2.集合的成员资格(1)概念:SQL允许测试元组在关系中的成员资格。连接词in测试元组是否是集合中的成员,集合是由select子句产生的......
  • 基于node.js+vue基于Android的星座运势查询系统(开题+程序+论文)计算机毕业设计
    本系统(程序+源码+数据库+调试部署+开发环境)带文档lw万字以上,文末可获取源码系统程序文件列表开题报告内容一、选题背景关于星座运势查询系统的研究,现有研究主要以网页形式为主,专门针对基于Android平台开发星座运势查询系统的研究较少。在国内外,星座文化都有一定的受众群体......
  • Python图像信息隐藏技术的实现<免费开题>全套源码+文章lw+毕业设计+课程设计+数据库+ppt
    Python图像信息隐藏技术的实现<免费开题>全套源码+文章lw+毕业设计+课程设计+数据库+ppt摘要在当下的时代中,人们获取信息的渠道随着网络的普及而变得非常的便捷。现在人们通过网络就能获得多种多样的、丰富多彩的信息内容。人们越来越希望能够通过网络进行信息的分享,从而......
  • [数据库][mysql]MySQL基础
    1,数据库相关概念以前我们做系统,数据持久化的存储采用的是文件存储。存储到文件中可以达到系统关闭数据不会丢失的效果,当然文件存储也有它的弊端。假设在文件中存储以下的数据:姓名 年龄 性别 住址张三 23 男 北京西三旗李四 24 女 北京西二旗王五 25 男 西安软件新城现......
  • [数据库][mysql]mysql高级
    1,约束上面表中可以看到表中数据存在一些问题:id列一般是用标示数据的唯一性的,而上述表中的id为1的有三条数据,并且 马花疼 没有id进行标示柳白 这条数据的age列的数据是3000,而人也不可能活到3000岁马运 这条数据的math数学成绩是-5,而数学学得再不好也不可能出现负分......
  • 【Python爬虫实战】从文件到数据库:全面掌握Python爬虫数据存储技巧
      ......