MySQL笔记(三)

多表查询

设A表与B表 笛卡尔积:取A,B集合的所有情况

连接查询:

内连接

相当于查询A,B集合交集的数据
– 隐式内连接

select 字段列表 from 表A,表B.....where 条件
例如:select A.name , B.name from A ,B where A.id=B.dep_id;
-- 给表起别名:select A.name , B.name from A a ,B b where a.id=b.dep_id;

– 显示内连接

select 字段列表 from 表A [INNER] JOIN 表B ON 条件;
例如:select A.name,B.name from A inner join B on A.id=B.dep_id; #inner 可以省略

外连接:

左外连接:查询A表所有数据和交集部分数据
select 字段列表 from 表A left [outer] join 表B on 条件;
右外连接:相当于查询B表所有数据和交际部分数据
select 字段列表 from 表A right [outer] join 表B on 条件;

子查询

查询中嵌套查询,称嵌套查询为子查询

例如查询工资高于大牛工资的人员信息:
select * from emp where salary >(select salary from emp where name="大牛");

子查询根据查询结果不同,作用不同:

单行单列:作为条件值,使用= != > <等进行条件判断
select 字段列表 from 表名 where 字段名=(子查询);
多行单列:作为条件值,使用in等关键字进行条件判断
select 字段列表 from 表名 where 字段名 in(子查询);
多行多列:作为虚表
select 字段列表 from (子查询) where 条件;

事务

1.数据库的事务是一种机制、一个操作序列,包含了一组数据库操作命令
2.事务吧所有的命令作为一个整体向系统提交或者撤销请求,这一组数据库命令要么成功要么失败
3.事务是一个不可分割的工作逻辑单元
开启事务(临时修改,只作用当前用户)
start transaction;或者 begin;

提交事务(永久修改,针对所有用户)
commit;

--------出异常 回滚事务
rollback;

例如:

#开启事务
begin;
#李四向张三转账500
update account set money =money-500 where name='李四';
update account set money =money+500 where name='张三';
#提交事务
commit;
#回滚事务
rollback;
mysql事务是默认自动提交的;
oracle事务默认手动提交;

事务特性:

原子性:事务不可分割,要么都成功,要么都失败;
一致性:事务完成时,必须所有数据都保持一致;
隔离性:多个事务之间,操作的可见性;
持久性:事务一旦提交或者回滚,他对数据库的改变是永久的;
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

chp的博客

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

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

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

打赏作者

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

抵扣说明:

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

余额充值