MySQL基础命令之多个表查询(二)

一、根据三个表格

二、语句

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


 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值