一、根据三个表格
二、语句
-- 查询年龄最小的学生信息 (先将所有信息按照年龄排序,然后取第一个值就是最小的,灵活应用)
-- select * from students order by age limit 1
-- 笛卡尔积=两个表格的个数相乘
-- SELECT * FROM courses,scores WHERE courses.courseNo=scores.courseNo
-- SELECT * FROM courses as a,scores as c WHERE a.courseNo=c.courseNo
-- 查询学生信息及学生的成绩 (两个表连接)
-- SELECT * FROM students,scores WHERE students.studentNo=scores.studentNo
-- SELECT a.name,c.score FROM students a,scores c WHERE a.studentNo=c.studentNo
-- 查询学生信息及学生成绩 两个表内连接
-- 语法:select * FROM 表一 INNER JOIN 表二 on 根据两表连接的条件
-- SELECT stu.name,sco.score FROM students stu INNER JOIN scores sco on stu.studentNo=sco.studentNo
-- 查询学生信息及学生的课程对应的成绩 (三个表连接起来,,,姓名。。。是别名)
-- SELECT stu.name 姓名 ,sco.score 成绩,cou.name 课程名 FROM students stu,scores sco,courses cou
-- WHERE stu.studentNo=sco.studentNo and sco.courseNo=cou.courseNo
-- 查询学生信息及学生的课程对应的成绩 (三个表内连接起来,,,姓名。。。是别名)
-- 语法:select * FROM 表一 INNER JOIN 表二 on 根据两表连接的条件
-- SELECT stu.name 姓名,sco.score 成绩,cou.name 课程号 FROM students stu
-- INNER JOIN scores sco on stu.studentNo=sco.studentNo
-- INNER JOIN courses cou on sco.courseNo=cou.courseNo
-- 查询小小的成绩,要求显示姓名、课程号、成绩(三个表内连接起来,,,姓名。。。是别名)
-- select stu.name,sco.score,cou.`name` from students stu
-- inner join scores sco on stu.studentNo=sco.studentNo
-- inner join courses cou on cou.courseNo=sco.courseNo
-- where stu.`name`='小小'
-- 查询小小的数据库成绩,要求显示姓名、课程名、成绩
-- select stu.name,sco.score,cou.`name` from students stu
-- inner join scores sco on stu.studentNo=sco.studentNo
-- inner join courses cou on cou.courseNo=sco.courseNo
-- where stu.`name`='小小' and cou.`name`='数据库'
-- 方法一:查询男生中最高成绩,要求显示姓名、课程名、成绩
-- select stu.name,stu.sex, sco.score,cou.`name` from students stu
-- inner join scores sco on stu.studentNo=sco.studentNo
-- inner join courses cou on cou.courseNo=sco.courseNo
-- where sex='男'
-- ORDER BY sco.score DESC
-- LIMIT 1
-- 方法二:查询男生中最高成绩,要求显示姓名、课程名、成绩
-- select stu.name,stu.sex, sco.score,cou.`name` from students stu,scores sco,courses cou
-- where stu.studentNo=sco.studentNo
-- and sco.courseNo=cou.courseNo
-- and sex='男'
-- ORDER BY sco.score DESC
-- limit 1
--
-- 左连接 语法
-- select * from 表1
-- left join 表2 on 表1.同条件=表2.同条件
-- 查询所有学生的成绩,包括没有成绩的学生
-- SELECT stu.name,sco.score FROM students stu
-- LEFT JOIN scores sco on stu.studentNo=sco.studentNo
-- 查询所有学生的成绩,包括没有成绩的学生,需要显示课程名
-- SELECT stu.name,sco.score,cou.`name` FROM students stu
-- LEFT JOIN scores sco on stu.studentNo=sco.studentNo
-- LEFT JOIN courses cou on sco.courseNo=cou.courseNo
-- 右连接 语法
-- select * from 表1
-- right join 表2 on 表1.同条件=表2.同条件
-- 查询所有课程的成绩,包括没有成绩的课程
-- SELECT * FROM scores sco
-- RIGHT JOIN courses cou on sco.courseNo=cou.courseNo
-- 查询所有课程的成绩,包括没有成绩的课程,包含学生
-- SELECT sco.score,cou.`name`,stu.`name` FROM scores sco
-- RIGHT JOIN courses cou on sco.courseNo=cou.courseNo
-- RIGHT JOIN students stu on stu.studentNo=sco.studentNo
来源:CSDN
作者:wennie11
链接:https://blog.csdn.net/wennie11/article/details/104675661