mysql多表联合查询

发布于:2022-12-29 ⋅ 阅读:(415) ⋅ 点赞:(0)

概念

  1. 多表联合查询:你想要的数据不在一个表中,而是多个表中查询获取,就需要把表   联合起来查询,但是必须加条件进行筛选,如果不加条件筛选,会出现大量错误数据。
  2. 条件,连接条件:先分析了表跟表之间的关系,分析数据和数据之间的关系,把关   系变成 SQL写出来(条件)。多数情况下,表和表之间的关系是主外键关系,但是  有特殊,有例外。
  3. 一个连接条件,只能连接2个表,如果需要连接N个 表,就至少需要 N-1个连接   条件
  4. 特殊情况:有的表不是主外键关系,并且列名也不一致,但是仍然可以写多表联合   查询

语法:SELECT * FROM 表名1,表名2,表名3,... WHERE 1个或者多个连接条件 [AND查询条件];

查询内容:全部信息 、部分列(,间隔);某个表的全部列 : 表名.*;

          查询涉及的表多,表名长,可以给表起别名; 表名 别名 ,注意查询的内容,查询条件中确定属于哪个表的列,都需要使用别名。

例如:查询学生的姓名,性别,以及学生所在院系的名称和院系编号

SELECT * FROM student;

SELECT * FROM DEPARTMENT;    # 分析发现,所需要的数据在两张表

第一步:

SELECT * FROM student,department WHERE STUDENT.did=DEPARTMENT.did; (查询出所有信息)

第二步:

SELECT sname,ssex,dname, STUDENT.did FROM student,department WHERE STUDENT.did=DEPARTMENT.did; (将*替换成要查询的列名)

例如:查询学生的姓名,年龄,这个学生的课程名称,以及这门功课的考试成绩

分析:分析发现,所需要的数据在张表

SELECT * FROM student,course,score WHERE student.sid=score.sid AND score.cid=course.`CID`

SELECT sname,sage,cname,grade

     FROM student,course,score

     WHERE student.sid=score.sid AND score.cid=course.`CID`;


网站公告

今日签到

点亮在社区的每一天
去签到