一条SQL语句如何高效删除关联表中的特定数据?

左连接删除,确保主表数据删,关联表无匹配也行。
dish表id=5 1 ,5 2 ,关联表相关数据全删。
左连接方案,测试环境先跑,避免数据丢。
备份数据,权限确保,我也还在验证。

SQL 如何把两个表相关联的数据一同删除

我有个小同事,去年刚入职那会儿,有一次我们部门组织团建,去了一个风景如画的小山丘上野餐。
她不小心把一杯奶茶打翻了,弄脏了一块漂亮的地毯。
那地毯可是老板刚从意大利带回来的,价格不菲。
我当时就在想,这要是数据库里的数据出了问题,不也是个大麻烦?不过后来想想,数据库里其实有类似的情况可以避免。

我记得有一次,我们系统里有一个用户信息表和一个订单表,订单表里的用户ID字段就对应用户信息表里的用户ID。
有一次,一个用户突然离职了,我们得把他的信息从用户信息表里删掉。
要是没处理好,相关的订单信息不就会出问题吗?幸好,我们用了一个叫做外键的东西。

就是在用户信息表的每个用户ID上,都加上了一个指向订单表的用户ID的外键。
这样一来,当我们删除用户信息表中的数据时,加上一条on delete cascade的语句,系统就会自动删除所有相关的订单数据。
就像小同事那次打翻奶茶,虽然弄脏了地毯,但因为有地毯清洗的,最后还是恢复了原样。

其实,我还突然想到,那地毯清洗的费用,老板会不会心疼呢?还有,这种数据库的设置,对于不同规模的数据来说,效率如何呢?等等,还有个事,我记得我们之前还遇到过数据迁移的问题,那又是怎么解决的?