当前位置:   article > 正文

数据库联表查询_数据库链表查询语法

数据库链表查询语法

一、Join

  • join的固定语法搭配是join(要连接的表)on,用于连接查询,而通常我们所使用的where是等值查询。
  • 多表连接分为:内连接、外连接,而外连接又包括左外连接右外连接全外连接

总结对比连接的特征如下:

操作关键字描述
内连接JOIN 或者INNER JOIN用比较运算符比较要连接的列的值的连接,不匹配的行不会被显示
全外连接FULL  JOIN所有的值都会进行显示,但是不匹配的会表示为NULL
左外连接LEFT JOIN

左表所有行列都显示,但右表不匹配的会表示为NULL

右外连接RIGHT JOIN右表所有行列都显示,但左表不匹配的会表示为NULL
  • 下面以两表连接查询举例说明join的用法,查询学生的科目成绩,需要连接成绩表与学生表。
  1. -- =========联表查询=========
  2. -- 1.先确定该查询需要用到哪些表
  3. -- 2.确定使用哪种连接查询,找出两张表中的共同属性
  4. -- 加入某课程的同学(学号、姓名、课程号、分数)
  5. -- ======inner join=======
  6. SELECT sc.studentNo,studentName,subjectNo,studentScore
  7. FROM student AS st
  8. INNER JOIN score AS sc
  9. WHERE st.studentNo = sc.studentNo
  10. -- =======left join=======
  11. SELECT sc.studentNo,studentName,subjectNo,studentScore
  12. FROM student AS st
  13. LEFT JOIN score AS sc
  14. ON st.studentNo = sc.studentNo
  15. -- =======right join=======
  16. SELECT sc.studentNo,studentName,subjectNo,studentScore
  17. FROM student AS st
  18. RIGHT JOIN score AS sc
  19. ON st.studentNo = sc.studentNo
  20. -- 查询缺考的同学
  21. SELECT sc.studentNo,studentName,subjectNo,studentScore
  22. FROM student AS st
  23. RIGHT JOIN score AS sc
  24. ON st.studentNo = sc.studentNo
  25. WHERE studentScore IS NULL
  • 这里使用三表连接查询,连接了学生表、课程表、分数表
  1. -- ==========三表连接==========
  2. -- 学生表、课程表、分数表
  3. -- 查询参加考试的同学的信息
  4. SELECT st.studentNo,studentName,subjectName,studentScore
  5. FROM student AS st
  6. RIGHT JOIN score AS sc
  7. ON st.studentNo = sc.studentNo
  8. INNER JOIN `subject` AS su
  9. ON sc.subjectNo = su.subjectNo

二、自连接

  • 同一张表,自己和自己连接,它的左表(父表)和右表(子表)都是自己。

以上表为例,每一个产品都以一个自己的id,并且还有一个parent_id。此时我们进行以下操作:查询父类对应的子类关系

  1. -- 查询父子信息
  2. SELECT f.cate_name AS father,s.cate_name AS son
  3. FROM tdb_cates AS f
  4. JOIN tdb_cates AS s
  5. WHERE f.id = s.parent_id

 

 

 

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/AllinToyou/article/detail/305448
推荐阅读
相关标签
  

闽ICP备14008679号