以lifetragedy大神的文章为参考整理的笔记(数据库)

sql经常不写总是容易忘,记下来方便以后回忆!




查询“1”课程比“2”课程成绩高的所有学生的学号;

子查询运用不熟
select a.s#,a.score
from
(select s#,score from sc where c#= '1') a,
(select s#,score from sc where c#= '2') b
where a.score > b.score and a.s#=b.s#

查询平均成绩大于60分的同学的学号和平均成绩;

avg()只能跟在haiving后  不能跟在where 后
select s#,avg(score) 
from sc 
having avg(score)>60 group by s#

查询所有同学的学号、姓名、选课数、总成绩;

内链接、外联结知识点模糊
select s.s#,count(sc.c#),sum(score)
from student s
left outer join sc on s.s# = sc.s#
group by s.s#

查询姓“郭”的老师的个数;

select count(distinct(tname))
from teacher
where tname like '郭%'

查询没学过“赵嘉玉”老师课的同学的学号、姓名;

大神sql:
select Student.S#,Student.Sname
    from Student 
    where S# not in (select distinct( SC.S#) fromSC,Course,Teacher where  SC.C#=Course.C#and Teacher.T#=Course.T# andTeacher.Tname='赵嘉玉');
本人写的sql(差距啊):
select distinct(s.s#) 
from student s left join sc on s.s# = sc.s# 
where s.s# not in 
(select s# from sc where c# = 
 (select t# from teacher  where tname = '赵嘉玉')
)

查询学过“1”并且也学过编号“2”课程的同学的学号、姓名;

select a.s#
from (select s# from sc where c#='1') a join (select s# from sc where c#='2') b 
on a.s#=b.s#

查询学过“邢玉燕”老师所教的所有课的同学的学号、姓名;

select s.s# from student s join sc on s.s# = sc.s# where sc.c# in 
(select c# from course where t# in
(select t# from teacher where tname='邢玉燕'))

查询课程编号“2”的成绩比课程编号“1”课程低的所有同学的学号、姓名;

select a.s#
from 
(select s#,score from sc where sc.c# = '1') a,
(select s#,score from sc where sc.c# = '2') b
where a.score > b.score and a.s# = b.s#


查询所有课程成绩小于60分的同学的学号;

select s#,avg(score) from sc having avg(score)<60 group by s#

10 查询没有学全所有课的同学的学号;

select s.s# from student s left join sc on s.s# = sc.s#
having count(sc.s#) < 
(select count(c#) from course) 
group by s.s#

准备数据

prompt PL/SQL Developer import file
prompt Created on 2013年11月5日 by 雷
set feedback off
set define off
prompt Creating COURSE...
create table COURSE
(
  C#    VARCHAR2(100) not null,
  CNAME VARCHAR2(100),
  T#    VARCHAR2(100)
)
;
comment on column COURSE.C#
  is '课程号';
comment on column COURSE.CNAME
  is '课程名';
comment on column COURSE.T#
  is '教工号';
alter table COURSE
  add constraint C_PK primary key (C#);

prompt Creating SC...
create table SC
(
  S#    VARCHAR2(100),
  C#    VARCHAR2(100),
  SCORE NUMBER
)
;
comment on column SC.S#
  is '学号';
comment on column SC.C#
  is '课程号';
comment on column SC.SCORE
  is '分数';

prompt Creating STUDENT...
create table STUDENT
(
  S#   VARCHAR2(100) not null,
  SAGE VARCHAR2(100),
  SSEX VARCHAR2(100)
)
;
comment on column STUDENT.S#
  is '学号';
comment on column STUDENT.SAGE
  is '学生年龄';
comment on column STUDENT.SSEX
  is '学生性别';
alter table STUDENT
  add constraint S_PK primary key (S#);

prompt Creating TEACHER...
create table TEACHER
(
  T#    VARCHAR2(100) not null,
  TNAME VARCHAR2(100)
)
;
comment on column TEACHER.T#
  is '教工号';
comment on column TEACHER.TNAME
  is '教师姓名';
alter table TEACHER
  add constraint T_PK primary key (T#);

prompt Loading COURSE...
insert into COURSE (C#, CNAME, T#)
values ('1', '英语', '1');
insert into COURSE (C#, CNAME, T#)
values ('2', '数学', '2');
insert into COURSE (C#, CNAME, T#)
values ('3', '语文', '3');
commit;
prompt 3 records loaded
prompt Loading SC...
insert into SC (S#, C#, SCORE)
values ('1', '1', '100');
insert into SC (S#, C#, SCORE)
values ('1', '2', '90');
insert into SC (S#, C#, SCORE)
values ('1', '3', '80');
insert into SC (S#, C#, SCORE)
values ('2', '1', '70');
insert into SC (S#, C#, SCORE)
values ('2', '2', '80');
insert into SC (S#, C#, SCORE)
values ('2', '3', '60');
insert into SC (S#, C#, SCORE)
values ('3', '1', '100');
insert into SC (S#, C#, SCORE)
values ('3', '2', '100');
insert into SC (S#, C#, SCORE)
values ('3', '3', '100');
insert into SC (S#, C#, SCORE)
values ('4', '1', '15');
insert into SC (S#, C#, SCORE)
values ('4', '2', '15');
insert into SC (S#, C#, SCORE)
values ('4', '3', '15');
insert into SC (S#, C#, SCORE)
values ('5', '1', '78');
insert into SC (S#, C#, SCORE)
values ('5', '2', '75');
insert into SC (S#, C#, SCORE)
values ('6', '1', '34');
insert into SC (S#, C#, SCORE)
values ('8', '1', '45');
insert into SC (S#, C#, SCORE)
values ('8', '2', '89');
insert into SC (S#, C#, SCORE)
values ('8', '3', '43');
insert into SC (S#, C#, SCORE)
values ('9', '1', '15');
insert into SC (S#, C#, SCORE)
values ('9', '2', '79');
insert into SC (S#, C#, SCORE)
values ('9', '3', '98');
commit;
prompt 21 records loaded
prompt Loading STUDENT...
insert into STUDENT (S#, SAGE, SSEX)
values ('1', 'wang', '男');
insert into STUDENT (S#, SAGE, SSEX)
values ('2', 'sun', '男');
insert into STUDENT (S#, SAGE, SSEX)
values ('3', 'li', '男');
insert into STUDENT (S#, SAGE, SSEX)
values ('4', 'zhao', '男');
insert into STUDENT (S#, SAGE, SSEX)
values ('5', 'zhang', '女');
insert into STUDENT (S#, SAGE, SSEX)
values ('6', 'qian', '女');
insert into STUDENT (S#, SAGE, SSEX)
values ('7', 'zhou', '女');
insert into STUDENT (S#, SAGE, SSEX)
values ('8', 'yang', '女');
insert into STUDENT (S#, SAGE, SSEX)
values ('9', 'lei', '女');
insert into STUDENT (S#, SAGE, SSEX)
values ('10', 'xi', '女');
commit;
prompt 10 records loaded
prompt Loading TEACHER...
insert into TEACHER (T#, TNAME)
values ('1', '郭研');
insert into TEACHER (T#, TNAME)
values ('2', '赵嘉玉');
insert into TEACHER (T#, TNAME)
values ('3', '邢玉燕');
commit;
prompt 3 records loaded
set feedback on
set define on
prompt Done.











  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值