关于sql的关联查询、删除与子查询、删除

首先我有三张相互关联的数据库表分别是

role_table(角色表)、user_table(用户表)、blog_table(博客表)关联信息如下,现在我需要对三张表进行关联查询

        

一、子查询(查询角色为“学生”的所有博客)

SELECT * FROM blog_table WHERE userId IN
(SELECT id FROM user_table WHERE roleId IN 
(SELECT id FROM role_table WHERE roleName = '学生'));
这种查询简单 但是很耗时

二、使用JOIN关联查询(查询角色为“学生”的所有博客)

两级关联查询(查询名字为“lihua”的博客信息)

SELECT b.* FROM blog_table b INNER JOIN user_table u
ON u.id = b.userId WHERE u.userName='Lihua';

三级关联查询(查询角色为“学生”的所有博客)

SELECT b.* FROM blog_table b INNER 
JOIN user_table u ON u.id = b.userId 
JOIN role_table r ON r.id = u.roleId
WHERE r.roleName="学生";
使用关联查询可以大大加快查询速度。但关联表最好不要超过三张,否则容易降低其效率

关联删除

一、删除角色名称为“学生”的user信息

DELETE u FROM user_table u INNER JOIN role_table r ON 
r.id = u.roleId WHERE r.roleName = '学生';
二、删除角色名称为“学生”的博客信息

DELETE b FROM blog_table b INNER 
JOIN user_table u ON u.id = b.userId 
JOIN role_table r ON r.id = u.roleId 
WHERE r.roleName='学生';






评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值