多个表查询

梦想的初衷 提交于 2020-03-06 03:29:14

一、根据三个表格

二、语句

-- 查询年龄最小的学生信息   (先将所有信息按照年龄排序,然后取第一个值就是最小的,灵活应用)
-- 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


 

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!