SQL题目练习---三表联查

一、数据库中有三张如下所示的表(学生表,教师表,成绩表),查出橘右京老师的学生所有分数,按照成绩倒序排列;

分析:1)本质是一个三表联查问题,SQL语句为: 

select * from A inner join 表B on 表A.列1=表B.列2 inner join 表C on 表B.列1=表C.列1

2)降序问题语法为:order by  字段   desc;

-- 查询橘右京的学生所有分数按照倒序排列

use dali

select stuId,stuName,stuScore,teaName from score s inner join students st on  s.stuId=st.id 
inner join  teacher t on st.teaId=t.id where teaName="橘右京" order by s.stuScore desc;

结果:

附:创表过程

-- 创建数据库dali
create database dali;
use dali;
-- 创建学生表
CREATE TABLE `students` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `stuName` varchar(12) NOT NULL COMMENT '学生姓名',
  `teaId` int(11) NOT NULL COMMENT '教师id',
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='学生表';
-- 创建教师表
CREATE TABLE `teacher` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `teaName` varchar(12) NOT NULL COMMENT '老师姓名',
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='教师表';
-- 创建成绩表
CREATE TABLE `score` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `stuScore` int(12) NOT NULL COMMENT '学生成绩',
  `stuId` int(11) NOT NULL COMMENT '学生id',
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='成绩表';

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值