首先我有三张相互关联的数据库表分别是
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='学生';