mysql多表操作

多表查询

内连接:过滤为空的数据(查询的实际上是两张表数据的交集部分)

select * from 表1,表2 where 表1.字段=表2.字段; //隐式内连接,使用where条件消除笛卡尔积
select * from 表1 inner join 表2 on 表1.字段=表2.字段 //显式内连接,如果是多张表,则一直在join..on后依次添加join..on即可

外连接:左外连接、右外连接、全外连接

左外连接:以左边表为主,返回左边表中选中字段的所有数据,若右表中无数据,则显示为NULL

SELECT 表1.*, `biao2.字段FROM 表1
LEFT JOIN 表2 ON 表1.字段= 表2.字段

右外连接:以右边表为主,返回右表中的所有数据,若左表无数据,显示NULL

参考

https://www.cnblogs.com/yiyide266/p/7594058.html
https://blog.csdn.net/qq_38225558/article/details/82776348

多表更新

内连接更新

UPDATE 表1, 表2 SET 表1.字段='xxx',表2.字段='yyy' WHERE 表1.字段=表2.字段 //例如update t1,t2 set t1.a=2这样的语法,表2不能为空表
UPDATE 表1 join 表2 on 表1.字段=表2.字段 SET 表1.字段='xxx',表2.字段='yyy'

外连接更新

UPDATE 表1 left join 表2 on 表1.字段=表2.字段 SET 表1.字段='xxx',表2.字段='yyy'
UPDATE 表1 right join 表2 on 表1.字段=表2.字段 SET 表1.字段='xxx',表2.字段='yyy'

参考

https://blog.csdn.net/u012604745/article/details/80642015

多表删除

外连接删除

delete 表1,表2 from 表1 left(right) join 表2 on 表1.字段=表2.字段 where 表1.字段=? //删除表1和表2有关联的信息,条件是传入的表1字段参数相等
delete 表1 from 表1,表2 where 表1.字段=表2.字段 //删除表1所有与表2有关联的数据

内连接删除会导致一个问题:第一个表有需要删除的数据,但是后面的表没有关联的数据,会造成任何数据都不被删除(因为没有满足内连接的条件)

参考

https://blog.csdn.net/chanmufeng/article/details/78236001
https://www.2cto.com/database/201710/693356.html

内连接和外连接

https://blog.csdn.net/chanmufeng/article/details/78234654

关于删除接口遇到的坑,参考如下:

https://blog.csdn.net/qq_15238647/article/details/81539287

多表插入

无法一条语句完成多表插入。解决办法是:利用last_insert_id(),获取插入sql语句后最新的ID(id为自增主键)
先插入主表数据,返回新增的数据ID,得到ID后再向从表插入数据。
insert into t_user (id,name,password) values(%s,%s,%s)
insert into user_receive(user_id,address) values(last_insert_id(),%s)

2019.9.24补充

order by:按照某一列的升降序对结果集排序

select * from 表1 order by 列1--------默认是按照升序排序

select * from 表1 order by 商品编号, 数量;
------------先按照商品编号升序排序,如果商品编号相同,再按照数量升序排序

select * from sell order by 商品编号 desc, 数量;
-------先按“商品编号”降序排序 如果商品编号相同 再按照sal升序排序
-------记住‘数量’是升序不是降序
-------例如:order by a desc, b, c, d desc只对a产生影响 不会对后面的b c d 产生影响

查询指定行的数据

select * from 表名 limit 10
-----查询前十行

转载于:https://www.cnblogs.com/lwblwb/p/11466228.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值