SQL复试面试经典题 已实操

创表:

drop table if exists sc;
drop table if EXISTS  student ;

create table student (
sno char(13) primary key,
sname varchar(20),
ssex char(2),
sage SMALLINT
);
 
drop table if exists course;
 create table  course(
 cno char(13) PRIMARY KEY,
 cname varchar(20),
 tno char(9)
);
drop table if exists teacher;
create table teacher(
tno char(13) primary key,
tname varchar(20)
);

drop table if exists sc;
 create table sc(
 sno char(13) ,
 cno char(13),
 grade int ,
 primary key(sno,cno),
 FOREIGN KEY (sno) REFERENCES student(sno),
 FOREIGN KEY (cno) REFERENCES course(cno)
 );


 
 

插入数据:本来想用Tsql可是navicat不能执行

INSERT INTO student VALUES ( '201512215', '穆丽娜', '女', 23 );
INSERT INTO student VALUES ( '201512214', '李欣燃', '女', 22 );
INSERT INTO student VALUES ( '201512213', '李四', '男', 21 );
INSERT INTO student VALUES ( '201512212', '王五', '男', 50 );
INSERT INTO student VALUES ( '201512210', '张华', '男', 26 );
INSERT INTO student VALUES ( '201512211', '欧阳娜娜', '女', 23 );
INSERT INTO student VALUES ( '201512216', '陶茜茜', '女', 23 );
INSERT INTO student VALUES ( '201512217', '周明杰', '女', 22 );
INSERT INTO student VALUES ( '201512219', '马乐', '男', 21 );
INSERT INTO student VALUES ( '201512218', '杨晓娣', '女', 24 );
INSERT INTO student VALUES ( '201512220', '欧阳锋', '男', 26 );
INSERT INTO student VALUES ( '201512221', '赵明', '男', 25 );



INSERT INTO teacher VALUES ( '201510', '赵海萍');
INSERT INTO teacher VALUES ( '201511', '叶平');
INSERT INTO teacher VALUES ( '201512', '李四');
INSERT INTO teacher VALUES ( '201513', '王永江' );




INSERT INTO course VALUES ( '100', '数据结构','201510');
INSERT INTO course VALUES ( '101', '数据库','201510');
INSERT INTO course VALUES ( '102', '计算机网络','201511');
INSERT INTO course VALUES ( '103', '计算机操作系统' ,'201512');


INSERT INTO sc VALUES ( '201512217', '103', 98 );
INSERT INTO sc VALUES ( '201512217', '101', 90 );
INSERT INTO sc VALUES ( '201512217', '102', 89 );
INSERT INTO sc VALUES ( '201512217', '100', 80 );
INSERT INTO sc VALUES ( '201512210', '103', 88 );
INSERT INTO sc VALUES ( '201512210', '101', 99 );
INSERT INTO sc VALUES ( '201512210', '102', 100 );
INSERT INTO sc VALUES ( '201512211', '100', 53 );
INSERT INTO sc VALUES ( '201512211', '101', 67 );
INSERT INTO sc VALUES ( '201512211', '102', 80 );
INSERT INTO sc VALUES ( '201512212', '100', 53 );
INSERT INTO sc VALUES ( '201512212', '101', 50 );
INSERT INTO sc VALUES ( '201512212', '102', 20 );
INSERT INTO sc VALUES ( '201512211', '103', 53 );

查询题目:选了几道,理解一下。

/*查询所有姓李的同学*/
select * from student where sname like '李%';
/*查询所有课程小于60的同学的学号和姓名*/
select student.sno,sname from student,sc where student.sno=sc.sno group by student.sno,student.sname having max(grade)<60;
/*删除学习赵老师课的sc表的记录*/
delete sc from sc,course,teacher where sc.cno=course.cno and course.tno=teacher.tno and tname like'赵%';

/*查询所有同学的学号,姓名,选棵数,总成绩*/
select student.sno ,sname,count(cno)'选棵数',sum(grade)'总成绩' from sc,student where student.sno=sc.sno group by student.sno;   /*只是出现了选了课的同学的数据*/
select student.sno,sname,count(cno)'选棵数',sum(grade)'总成绩' from student left outer join sc on student.sno=sc.sno group by student.sno;/*满足题意*/

/*查询学生的平均成绩及其名次*/
create view T as (select sno ,avg(grade)'平均成绩' from sc group by sno);
select sno,平均成绩,1+(select count(distinct 平均成绩) from T t1 where 平均成绩>t2.平均成绩)'名次' from T t2 order by 平均成绩 desc;

 

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值