多表查询和事务

本文介绍了多表查询的基本步骤和类型,包括内连接、外连接(左外连接、右外连接)以及子查询的不同形式,如标量子查询、列子查询、行子查询和表子查询。此外,还详细阐述了事务的概念,包括其四大特性(ACID)以及事务的开始、提交和回滚操作。
摘要由CSDN通过智能技术生成

多表查询

多表查询书写步骤:
 1.确定需关联的表(查询数据涉及的表)
 2.确定关联关系(关联条件)+其他关系
 3.确定需要显示的数据(select 后*位置的定义)

内连接:

定义:通过共同的键将两个或多个表中的数据进行连接。内连接只返回那些在连接条件下匹配的行。如果某个表中的行在另一个表中没有匹配的行,则该行将被忽略。
(隐式内连接实现)
select emp.name 姓名 ,dept.name 部门姓名
from emp,dept where emp.dept_id=dept.id;

(隐式内连接实现)
select emp.name 姓名,dept.name 部门姓名
from dept inner join emp on dept.id = emp.dept_id;

外连接:

定义:通过共同的键将两个或多个表中的数据进行连接,并且返回
所有匹配的行以及未匹配的行。
(左外连接)  --- 常用 , 推荐
select 需求数据 
from 需要查询所有数据的表 left join 另一张表 on 关系条件 
where 其他需求

(右外连接)
select 需求数据 
from 另一张表 right join 需要查询所有数据的表 on 关系条件 
where 其他需求

子查询


______________________________________标量子查询______________________________

select *
from emp
where entrydate > (select entrydate
                   from emp
                   where name = '方东白')
order by entrydate;


______________________________________列子查询______________________________

select *
from emp
where dept_id in (select id
                  from dept
                  where dept.name in ('教研部', '咨询部'));
                  
                  
______________________________________行子查询______________________________

select *
from emp
where (entrydate, job) = (select entrydate, job
                          from emp
                          where name = '韦一笑');
                          
                          
______________________________________表子查询______________________________

select e.name 员工姓名 ,d.name 部门名称
from (select *
from emp
where entrydate >'2006-01-01') e left join dept d on e.dept_id=d.id;

事务

定义:一组操作的集合,它是一个不可分割的工作单位,事务会把所有的操作作为一个整体一起向系统提交或撤销操作请求即这些操作要么同时成功,要么同时失败

事务流程:
开始:
start transaction  或  begin

结束(提交):
commit

回滚:
rollback

事务四大特性(ACID):

原子性(Atiomicity): 事务是不可分割的最小操作单位,要么全部成功,要么全部失败
一致性(Consistency): 事务完成时,必须使所有的数据都保持一致状态
隔离性(Isolation): 数据库系统提供的隔离机制,保证事务在不受外部并发操作影响的独立环境下运行
持久性(Durability): 事务一旦提交或回滚,它对数据库中的数据的改变就是永久的
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值