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

概念/简介:

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

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

各个关系的实现方式:

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

多表查询:

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

sql 复制代码
1. select * from 表1,表2;
获取两张表的"笛卡尔积" --- 即第一张表和第二张表的全部组合

2. select * from 表1,表2 where 条件;
获取两张表的交集部分

查询方式:

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

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

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

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

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

相关推荐
吴声子夜歌15 分钟前
MongoDB 4.2——应用程序设计
数据库·mongodb
数字新视界22 分钟前
动环监控可视化在数据中心管理中的应用与实践解析
数据库·物联网·解决方案·动环监控·大榕树
极地野狼 音乐哔哔25 分钟前
数据库备份恢复的原理实践
数据库
互联网中的一颗神经元1 小时前
小白python入门 - 25. SQL 与表设计入门
数据库·python·sql
ttwuai1 小时前
AI 生成后台改数据后,操作日志别只记按钮:Go + MySQL 怎么验
数据库·人工智能·mysql·golang
KaMeidebaby1 小时前
卡梅德生物技术快报 | 核酸适配体文库测序:核酸适配体文库测序的技术原理、实验流程与数据解析
前端·网络·数据库·人工智能·算法
ClouGence2 小时前
除了 DBeaver,2026 年还有哪些好用的开源数据库管理工具?
数据库·开源
景芯SoC芯片实战2 小时前
12nm工艺下,6T-Turbo Cell的Filler到底该怎么插?
数据库·数字ic·dft·soc后端
韩楚风2 小时前
【参天引擎】一次宕机后的数据恢复,让我把 Cantian 持久化与恢复的六大机制全搞明白了
服务器·网络·数据库·分布式·mysql·架构·cantian
寒月小酒3 小时前
第五章 生成集成 和第六章 RAG评估(all-in-rag学习)
数据库·学习