手机版

MySql使用中文参考手册:MySQL多表同时删除方案

2019-09-11 阅读 :

MySQL可以在一个SQL语句中删除多张表的记录,也可以通过多个表之间的关联关系删除某个表的数据,在MySQL4.0版本之后MySQL支持多表删除。

假定目前有两张表goodsgoods_price表,前者是保存商品的具体信息,后者是保存商品的价格,具体的表结构如下:

create table goods (
`id` int unsigned primary key auto_increment,
`goods_name` varchar(30) not null default ''
)engine innodb charset utf8;
create table goods_price (
`goods_id` int unsigned not null,
`price` decimal(8,2) not null default '0.00'
)engine innodb charset utf8;
insert into goods values (1,'商品1'),(2,'商品2'),(3,'商品3'),(4,'商品4'),(5,'商品5');
insert into goods_price values (1,'5.44'),(2,'3.22'),(3,'5.55'),(4,'0.00'),(5,'4.54');

在delete时使用逗号分割删除

这里我们不适用join连接操作进行删除,具体SQL如下:

delete g.*,p.* from goods as g,goods_price as p where g.id = p.goods_id and g.id = 1;

使用连表查询

使用inner join删除

使用inner join在连接时指定表与表之间的关联关系进行删除,具体SQL如下:

DELETE g.*,p.* FROM goods as g INNER JOIN goods_price as p ON g.id=p.goods_id WHERE g.id = 2;

使用连接删除的时候不必删除所有表数据,上面的SQL语句会同时删除goodsgoods_price两张表中的数据,但是可以指定DELETE g.*从而只删除goods表中的记录,而不删除goods_price表中的记录[DELETE g.* FROM goods as g INNER JOIN goods_price as p ON g.id=p.goods_id WHERE g.id = 3;],但是在这里明显是不合适的,但是我们可以这样做。

使用left join删除

left join的使用方法如上,具体的SQL如下:

DELETE g.*,p.* FROM goods as g LEFT JOIN goods_price as p ON g.id=p.goods_id WHERE g.price = '0.00';

使用外键约束

给表新增约束外键并使用级联(cascade)方式对表与表之间关系进行约束。具体的SQL如下:

alter table goods_price
add constraint FK_goods_id foreign key(goods_id)
 references goods(id) on delete cascade on update cascade;

修改完后我们后期删除主表数据,关联表数据也会被删除。

delete from goods where id=5;
本文标题:MySql使用中文参考手册:MySQL多表同时删除方案 - 服务器教程_服务器技术_服务器知识_vps教程
本文地址:https://www.helloaliyun.com/tutorial/478.html

相关文章

  • CentOS 7 常用命令(系统关机、重启以及登出)

    关机:(系统的关机、重启以及登出 ) # 关闭系统(1)[root@localhost ~]# shutdown -h now # 关闭系统(2)[root@localhost ~]# init 0 # 关闭系统(3)[root@localhost ~]# telinit 0 # 按预定时间关闭系统[root@localhost...

    2019-12-07 服务器教程
  • linux重启命令 reboot与shutdown -r now的区别与联系

    在linux命令中reboot是重新启动,shutdown -r now是立即停止然后重新启动,都说他们两个是一样的,其实是有一定的区别的。shutdown命令可以安全地关闭或重启Linux系统,它在系统关闭之前给系统上的所有登录用户提示一条警告...

    2019-12-07 服务器教程
  • CentOS 7 如何使用命令重启或关机

    安装GNOME的朋友们首先切换到字符界面。切换到字符界面的方法如下: 先登陆进入系统,进入图形化界面,然后按Ctrl+Alt+F6(笔记本的是Ctrl+Alt+shift+Fn),进入字符界面。关机命令:shutdown或poweroffshutdown:shutdown -h now...

    2019-12-07 服务器教程
  • CentOS 7 正确关机重启的命令方法

    linux主要用于服务器领域,而在服务器上执行一项服务是永无止境的,除非遇到特殊情况,否则不会关机。和Windows不同,在linux系统下,很多进程是在后台执行的。在屏幕背后,可能有很多人同时在工作。如果直接按下电源的按钮,其他...

    2019-12-07 服务器教程
  • CentOS下的yum upgrade和yum update区别,没事别乱用!

    说明:生产环境对软件版本和内核版本要求非常精确,别没事有事随便的进行yum update操作!!!!!!!!!yum update: 升级所有包同时也升级软件和系统内核yum upgrade:只升级所有包,不升级软件和系统内核...

    2019-12-07 服务器教程
你可能感兴趣
热门浏览