(下)篇是关于多表联查的基本语句操作。
目录
一、如何连系多个表?
多张表之间的连系需要通过外键(引用百度中的解释)进行关联。
外键:是一个关联键,外键用来建立表与表之间的关联关系,外键所在的表称为从(子)表。外键所关联的表称为主(父)表。
外键是一个列,该列负责与关联表联系
二、如何设置外键
1.观察多表之间的关系
以学生(tbl_student)、成绩(tbl_score)、课程(tbl_course)表为例,
学生表和成绩表之间共同拥有的属性是stu_id;
成绩表和课程表之间共同拥有的属性是course_id;
所以要在成绩表中设置外键,用来连接学生表和课程表。
2.建立外键
以Navicat Premium 15为例,鼠标放在成绩表上,右键-->设计表-->然后选择外键
然后设置字段、被引用的模式、被引用的表、被引用的字段
然后在逆向数据库到模型中查看,设置完之后就是上图的样子。
三、表连接查询
1.内连接
两个表中都存在的才查询,如果只有一张表存在则不查询,通过主外键来确定是否两张表都存在
内连接所使用的关键字为:INNER JOIN
-- 使用内连接查询获得学生及学生的成绩信息
SELECT
stu.stu_name,
stu.stu_sex,
stu.stu_age,
score.score_score
FROM -- 主表
tbl_student as stu
INNER JOIN -- 子表
tbl_score as score
ON -- 联系条件
stu.stu_Id = score.stu_Id
-- 使用内连接查询获得学生信息及成绩信息(学号,姓名,性别,年龄,课程名称,成绩)
SELECT
stu.stu_id,
stu.stu_name,
stu.stu_sex,
stu.stu_age,
course.course_name,
score.score_score
FROM
tbl_student as stu
INNER JOIN
tbl_score as score
ON
stu.stu_id=score.stu_id
INNER JOIN
tbl_course as course
ON
score.couse_id=course.course_id
2.左外连接
两张表关联,左外连接查询,以左表为主,右表为副,在左表中没有右表的元素都为空
内连接所使用的关键字为:LEFT JOIN
-- 使用左外连接查询学生和成绩表 左外连接查询,以左表为主,右表为副,在左表中没有右表的元素都为空
SELECT
stu.*,score.score_id,score.score_score
FROM
tbl_student AS stu
LEFT JOIN
tbl_score AS score
ON
stu.stu_id = score.score_id
3.右外连接
两张表关联,右外连接查询,以右表为主,左表为副,只显示左表中存在右表的元素
右外连接使用的关键字为:RIGHT JOIN
-- 使用右外连接查询学生和成绩表 右外连接查询,以右表为主,左表为副,只显示左表中存在右表的元素
SELECT
stu.*,score.score_id,score.score_score
FROM
tbl_student AS stu
RIGHT JOIN
tbl_score AS score
ON
stu.stu_id = score.stu_id
4.子查询(嵌套查询)
在一个查询语句中,又包含一个或多个查询语句
小括号内部的查询语句称为子查询,外部的查询语句称为主查询
在执行时先执行子查询,然后在执行主查询
-- 2.使用子查询
SELECT
stu_Id,stu_Name
FROM
tbl_student
WHERE stu_Id IN(
SELECT
stu_Id
FROM
tbl_score
WHERE
score_score>70
)
SELECT * FROM tbl_student -- 查询出学生表中参加考试的人
WHERE EXISTS(SELECT*FROM tbl_score WHERE stu_Id = tbl_student.stu_Id)