当前位置: 首页 > news >正文

数据库—数据库设计 多表查询 事务

概念/简介:

说白了就是设计数据库,设计数据库的,表里有什么字段,表与表之间的关系

表与表的关系:
1. 一对多。例如一个部门对应多个员工
2. 一对一。例如一个人就一个身份证
3. 多对多。例如一个商品对应多个订单,一个订单包含了多个商品

各个关系的实现方式:

1. 一对一: 多见于表拆分,例如用户信息表,通常会把一张表拆成两份,一般是简表,一种是详情表。然耨从一个表对另一个表进行唯一外键约束(因为一个id只能对应一个人,不能说id为1的人却能关联到id为2的人)
2. 一对多:“多” 的一方建立外键到 “一” 的一方
3. 多对多: 创建一张中间表,关联两张表的某两个表的字段。可能也会有其他的一些字段,例如在商品-订单情景中,确定好订单方式和商品后,表中会添加商品的数量字段。

多表查询:

概念:从多个表中查询数据。

1. select * from1,2;
获取两张表的“笛卡尔积” --- 即第一张表和第二张表的全部组合2. select * from1,2 where 条件;
获取两张表的交集部分

查询方式:

隐式连接:使用where作为关键字
显式连接:使用join作为关键字

(一)连接查询:
1. 内连接:取两集合的交集部分 --- 既能使用显式连接,又能使用隐式连接select * from1,2 where 条件;
2. 外连接:--- 只能使用显式连接2.1 右外连接:取右边集合的全部和交集部分select * from1 right inner join2 on 条件; 2.2 左外连接:取左边集合的全部和交集部分select * from1 left inner join2 on 条件;
(二)子查询:嵌套查询,就是把将一个sql语句作为另外一个sql语句的某个元素的替代物
1. 单行单列:	得到的结果信息是单行单列select * from1 where 条件  ---> 得到了某个结果后使用第二个句子:select * from2 where (第一句得到的结果)|(可以简化成)-----> select * from 表2 where 字段 = (select * from 表1 where 条件);
2. 多行单列:与单行单列的区别就是,从第一个语句获取的结果可能是多个的,因此关键字也需要修改:使用in作为关键字select * from1 where 条件1;select * from2 where 条件2;|-----> select * from 表2 where 字段 in (select * from 表1 where 条件);
3. 多行多列:常见作为虚拟表(就是一个sql语句如果获取出来的是一个表,就使用这个表进行子查询,因此这个表叫做虚拟表)替代sql语句中的表名。select * from (select * from1 where 条件) where 条件;

事务:

概念:不可分割的一个逻辑单元。
组成:一系列的sql语句。
关键字:在sql中,事务有三个关键字:

1.begin / start transaction --- 开启事务
2.commit --- 提交
3.rollback --- 回滚
自开启到提交事务之间的操作都是同成功 / 同失败的,例如在转账场景中,A扣除200块和B增加200块是同成功和同失败的。

四大特征—ACID
1.原子性(atomic):是不可分割的最小操作单元
2.一致性(consistent):事务完成后,数据要保持一样的状态。例如转账前后,两方的总金额应保持不变
3.隔离性(isolation):事务的执行相互独立,一个事务执行时不影响另一个事务执行。
4.持久性(durablity):事务一旦经过提交或者回滚,数据的改变都是永久的

select @@autocommit;
结果是1就代表自动提交,结果是0就代表需要手动提交

操作语句的提交方式一般是自动提交,也就是执行完语句后立刻修改数据

http://www.dtcms.com/a/490116.html

相关文章:

  • php网站开发如何赚钱新发地网站建设
  • 多合一建网站数码电子产品网站建设策划书
  • Spring Boot + Kafka 全面实战案例
  • MATLAB基于GWO-BP神经网络对某拨叉件锻造金属流动性的参数分析
  • 建网站教学视频wordpress外汇
  • Ubuntu-8卡H20服务器升级nvidia驱动+cuda版本
  • 2.6 代码注释与编码规
  • html css js网页制作成品——饮料官网html+css+js 4页网页设计(4页)附源码
  • Langchain流式自定义生成器函数
  • 基于单片机的智能收银机模拟系统设计
  • ssh连接本地虚拟机
  • PyInstaller多模块项目打包指南
  • access 网站后台汕头自助建站
  • 从图纸到三维模型:智能装配指导的突破之路
  • 「JMM+Java锁+AQS」 知识图谱
  • 【广州公共资源交易-注册安全分析报告-无验证方式导致安全隐患】
  • C++ 学习日记
  • 晶晨S905L3SB芯片_安卓9.0_高安版_支持外置WIFI_线刷固件包
  • 4G5G 移动代理实战:什么时候必须用移动 IP?
  • 【OpenHarmony】传感器轻量级服务模块架构
  • 面向服务架构(SOA)模式全解析:设计、实践与价值
  • HTML 零基础入门到实战:从骨架到页面的完整指南
  • 【Java EE进阶 --- SpringBoot】Mybatis操作数据库(进阶)
  • 成都海鸥手表网站crm系统的销售管理功能包括
  • 『 QT 』QT信号机制深度解析
  • stp,rstp,mstp的区别
  • 海外盲盒APP开发:从“未知”到“精准”的用户体验革命
  • 网站建设yuanmus站长工具seo综合查询5g
  • 使用 IntelliJ IDEA 结合 DBeaver 连接 MySQL 数据库并实现数据增删查改的详细步骤:
  • 零知IDE——基于STM32F407VET6和ESP-01的SHT2X温湿度监测与云传输系统