SQL数据库经典题型1查询“001“课程比“002“课程成绩高的所有学生的学号
题目:
学生表:Student(S#,Sname,Sage,Ssex) ,学号:S#,学生姓名:Sname,学生年龄:Sage,学生性别:Ssex
课程表:Course(C#,Cname,T#),课程编号:C#,课程名字:Cname,教师编号:T#
成绩表:SC(S#,C#,score), 学号:S#,课程编号:C#,成绩:score
教师表:Teacher(T#,Tname),教师编号:T#,教师名字:Tname
创建表格:
--学生表
CREATE TABLE s_student(
s_id VARCHAR(20),
s_name VARCHAR(20) NOT NULL,
s_birth VARCHAR(20) NOT NULL,
s_sex VARCHAR(10) NOT NULL,
PRIMARY KEY(s_id)
);
--课程表
CREATE TABLE c_course(
c_id VARCHAR(20),
c_name VARCHAR(20) NOT NULL,
t_id VARCHAR(20) NOT NULL,
PRIMARY KEY(c_id)
);
--教师表
CREATE TABLE t_teacher(
t_id VARCHAR(20),
t_name VARCHAR(20) NOT NULL,
PRIMARY KEY(t_id)
);
--成绩表
CREATE TABLE s_score(
s_id VARCHAR(20),
c_id VARCHAR(20),
s_score number(3),
PRIMARY KEY(s_id,c_id)
);
--插入学生表测试数据
insert into s_student(s_id, s_name, s_birth, s_sex) values('01' , '赵雷' , '1990-01-01' , '男');
insert into s_student(s_id, s_name, s_birth, s_sex) values('02' , '钱电' , '1990-12-21' , '男');
insert into s_student(s_id, s_name, s_birth, s_sex) values('03' , '孙风' , '1990-05-20' , '男');
insert into s_student(s_id, s_name, s_birth, s_sex) values('04' , '李云' , '1990-08-06' , '男');
insert into s_student(s_id, s_name, s_birth, s_sex) values('05' , '周梅' , '1991-12-01' , '女');
insert into s_student(s_id, s_name, s_birth, s_sex) values('06' , '吴兰' , '1992-03-01' , '女');
insert into s_student(s_id, s_name, s_birth, s_sex) values('07' , '郑竹' , '1989-07-01' , '女');
insert into s_student(s_id, s_name, s_birth, s_sex) values('08' , '王菊' , '1990-01-20' , '女');
commit;
--课程表测试数据
insert into c_course(c_id, c_name, t_id) values('01' , '语文' , '02');
insert into c_course(c_id, c_name, t_id) values('02' , '数学' , '01');
insert into c_course(c_id, c_name, t_id) values('03' , '英语' , '03');
commit;
--教师表测试数据
insert into t_teacher(t_id, t_name) values('01' , '张三');
insert into t_teacher(t_id, t_name) values('02' , '李四');
insert into t_teacher(t_id, t_name) values('03' , '王五');
commit;
--成绩表测试数据
insert into s_score(s_id, c_id, s_score) values('01' , '01' , 80);
insert into s_score(s_id, c_id, s_score) values('01' , '02' , 90);
insert into s_score(s_id, c_id, s_score) values('01' , '03' , 99);
insert into s_score(s_id, c_id, s_score) values('02' , '01' , 70);
insert into s_score(s_id, c_id, s_score) values('02' , '02' , 60);
insert into s_score(s_id, c_id, s_score) values('02' , '03' , 80);
insert into s_score(s_id, c_id, s_score) values('03' , '01' , 80);
insert into s_score(s_id, c_id, s_score) values('03' , '02' , 80);
insert into s_score(s_id, c_id, s_score) values('03' , '03' , 80);
insert into s_score(s_id, c_id, s_score) values('04' , '01' , 50);
insert into s_score(s_id, c_id, s_score) values('04' , '02' , 30);
insert into s_score(s_id, c_id, s_score) values('04' , '03' , 20);
insert into s_score(s_id, c_id, s_score) values('05' , '01' , 76);
insert into s_score(s_id, c_id, s_score) values('05' , '02' , 87);
insert into s_score(s_id, c_id, s_score) values('06' , '01' , 31);
insert into s_score(s_id, c_id, s_score) values('06' , '03' , 34);
insert into s_score(s_id, c_id, s_score) values('07' , '02' , 89);
insert into s_score(s_id, c_id, s_score) values('07' , '03' , 98);
commit;
1.查询"001"课程比"002"课程成绩高的所有学生的学号
--先查询001课程成绩,002课程成绩
select * from s_score where c_id='01';
select * from s_score where c_id='02';
--方法一
select c1.s_id s_id,c1.s_score score1,c2.s_score score2 from (select * from s_score where c_id='01') c1,(select * from s_score where c_id='02') c2
where c1.s_id=c2.s_id and c1.s_score>c2.s_score;
--方法二
select s1.s_id from s_score s1,s_score s2
where s1.s_id=s2.s_id and s1.c_id='01' and s2.c_id='02' and s1.s_score>s2.s_score;
--扩展,需要查找学生姓名时,用连接将学生表与其他两表连接
select s_student.*,s1.s_score,s2.s_score from s_student, s_score s1,s_score s2
where s_student.s_id=s1.s_id and s_student.s_id=s2.s_id
and s1.s_id=s2.s_id and s1.c_id='01' and s2.c_id='02' and s1.s_score>s2.s_score;
select s_student.*,s1.s_score,s2.s_score from s_student inner join s_score s1 on s_student.s_id=s1.s_id
inner join s_score s2 on s_student.s_id=s2.s_id
where s1.s_id=s2.s_id and s1.c_id='01' and s2.c_id='02' and s1.s_score>s2.s_score;
这篇好文章是转载于:学新通技术网
- 版权申明: 本站部分内容来自互联网,仅供学习及演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,请提供相关证据及您的身份证明,我们将在收到邮件后48小时内删除。
- 本站站名: 学新通技术网
- 本文地址: /boutique/detail/tanhfihjcj
-
photoshop保存的图片太大微信发不了怎么办
PHP中文网 06-15 -
《学习通》视频自动暂停处理方法
HelloWorld317 07-05 -
word里面弄一个表格后上面的标题会跑到下面怎么办
PHP中文网 06-20 -
Android 11 保存文件到外部存储,并分享文件
Luke 10-12 -
photoshop扩展功能面板显示灰色怎么办
PHP中文网 06-14 -
微信公众号没有声音提示怎么办
PHP中文网 03-31 -
excel下划线不显示怎么办
PHP中文网 06-23 -
excel打印预览压线压字怎么办
PHP中文网 06-22 -
TikTok加速器哪个好免费的TK加速器推荐
TK小达人 10-01 -
怎样阻止微信小程序自动打开
PHP中文网 06-13