数据库多表查询

子查询

嵌套查询,查询条件里面嵌套了小的查询

select 字段
 from  表名
 where 查询条件(select 字段 from 表名 where 查询条件)

例:
查询1班叫张三的学员的java语言的成绩
java语言在课程表(kcb)里,学号,姓名在学生表(xsb)里,成绩在成绩表(cjb)里

select cj 
from cjb 
where xh = (select xh from xsb where bj= '1班' and xm = '张三')
and kch = (select kch from kcb where kcm = 'java语言')

关联查询

笛卡尔积运算:
select * from xsb,cjb;
select * from xsb cross join cjb;
当xsb有11行8列,cjb有12行3列
联合的表有(11*12)行,(8+3)列

通过相同的字段做过滤

select 字段 from 表1,表2 where 表1.相同字段=表2.相同字段

例:
select * from xsb,cjb where xsb.xh=cjb.xh

注:
做笛卡尔积运算,将多张表连接成一张更大的表,但会产生许多没有意义的数据,可通过多张表中相同的字段来过滤垃圾数据
只要跟了两张表,即表明要做笛卡尔积运算,产生的额垃圾数据,需要通过关联条件来消除,,如关联条件外还有其他条件,用and联接。
内联接:
只返回满足关联条件的数据
左外联接:
left join
除返回满足关联条件的结果外,还将左边的表完整的展示出来,右边的表不满足关联条件的字段补空值(null)

select * 
from xsb left join cjb 
on (xsb.xh = cjb.xh)
将xsb完全展示出来

右外联接:
right join
除返回满足关联条件的结果外,还将右边的表完整的展示出来,左边的表不满足关联条件的字段补空值(null)

select * 
from xsb right join cjb 
on  (xsb.xh = cjb.xh)
将cjb完全展示出来

全外联接:
full join (mysql不支持,可用union集合操作来实现)
除返回满足关联条件的结果外,还将两边的表完整的展示出来,两边的表不满足关联条件的字段补空值(null)

select * 
from xsb left join cjb 
on  (xsb.xh = cjb.xh)
union
select * 
from xsb right join cjb 
on  (xsb.xh = cjb.xh);
将左外联接和右外联接做集合运算

三表关联实例:

select 字段 
from 表1,表2,表3 
where表1.相同字段1 = 表2.相同字段1 
and 表2.相同字段2= 表3.相同字段2

例:
select * from xsb,cjb,kcb 
where xsb.xh = cjb.xh
and cjb.kch = kcb.kch

事务

一组DML操作,只允许同时成功或者同时失败
事务的代码实现:

开启事务:start transaction
事务提交:commit
事务回滚:rollback

例:a给b转账500
start transaction;
update 表名 set money = money-500 where name='a';
update 表名 set money = money +500 where name= 'b';
--rollback
commit;

注:
mysql默认事务都是自动提交的,即执行mysql语句之后马上commit,如不想自动提交,可使用start transaction来显示开始事务

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

臭屁范

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值