数据库——sql多表查询

打印 上一主题 下一主题

主题 1014|帖子 1014|积分 3046

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

x
        当要在两个表(或多个表)中查找对应数据时,与普通的查询略有差异。本篇博文用于先容根本的多表查询的方法。
为方便展示,本篇建了两个数据库表“门生表”“班级表”作为例子

其中,在“门生表”中,cid标签体现的是门生所在班级的id
1.多表查询

通过以下语句查找两个表的全部内容(相当于将两个表拼合),我们会发现出现了随机匹配的情况
  1. SELECT * FROM `学生表`,`班级表`
复制代码

 为办理这种问题,让门生和对应班级的信息匹配,我们可以通过添加条件实现,即查找出在门生表中cid与班级表中id相称的项
  1. SELECT * FROM `学生表`,`班级表` WHERE `门生表`.cid=`班级表`.id
复制代码

如许可以有用制止以上问题。
2.联表查询

方法:JOIN IN
2.1内联接

 假设,有A,B两个表,join in 求的内联表即为下图示意中的黄色部分

 对于本篇文章中的例子,详细SQL语句为:
  1. SELECT * FROM `学生表`join `班级表` on `学生表`.cid=`班级表`.id
复制代码
所得结果为下图: 

2.2外联接

外联接又分为:左外联接和右外联接
左外联接示意图如下图赤色所示:

 右外联接示意图如下图赤色所示:

在本文中的例子里,为了方便展示外联接,更新门生表和班级表如下:

左外联接的SQL语句 为:
  1. SELECT * FROM `学生表` left join `班级表` on `学生表`.cid=`班级表`.id
复制代码
结果如下,可见丽丽并没有对应班级,但在左外联表中仍会体现: 

 右外联接的SQL语句 为:
  1. SELECT * FROM `学生表` right join `班级表` on `学生表`.cid=`班级表`.id
复制代码
结果如下:


免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

刘俊凯

论坛元老
这个人很懒什么都没写!
快速回复 返回顶部 返回列表