数据库要做

drop table if exists Student;
create table Student (
Sid varchar(5) primary key,
Sname varchar(10),
Sage int(3),
Ssex varchar(10)
);
drop table if exists Course;
create table Course(
Cid varchar(5)  primary key,
Cname varchar(10),
Tid int(5)
);
drop table if exists SC;
create table SC(
Sid varchar(5)  primary key,
Cid varchar(5),
score double(4,1)
);
drop table if exists Teacher;
create table Teacher(
Tid varchar(5)  primary key,
Tname varchar(10)
);
十几道sql语句面试题第1部分:
Student(Sid, Sname, Sage, Ssex)学生表
Course(Cid, Cname, Tid)课程表
SC(Sid, Cid, score)成绩表
Teacher(Tid, Tname)教师表
问题:
1、查询“001”课程比“002”课程成绩高的所有学生的学号;
select a.Sid from (select Sid, score from SC where Cid = ’001′) a,
(select Sid, score from SC where Cid = ’002′) b where a.score > b.score and a.Sid = b.Sid;
2、查询平均成绩大于60分的同学的学号和平均成绩;
select  Sid,
avg(score)  from  sc  group   by  Sidhavingavg(score) > 60;
3、查询所有同学的学号、姓名、选课数、总成绩;
select Student.Sid,
Student.Sname,
count(SC.Cid),
sum(score)  from Student left Outer join SConStudent.Sid = SC.Sid group  by Student.Sid,
Sname4、查询姓“李”的老师的个数;select count(distinct(Tname))  from Teacher where Tnamelike‘李 % ’;
5、查询没学过“叶平”老师课的同学的学号、姓名;
select Student.Sid,
Student.Sname from Student
where Sid not in
        (select distinct(SC.Sid)
            from SC, Course, Teacher
            where SC.Cid = Course.Cid and Teacher.Tid = Course.Tid and Teacher.Tname = ’叶平’);
6、查询学过“001”并且也学过编号“002”课程的同学的学号、姓名;
select Student.Sid,
Student.Sname from Student,SC
where Student.Sid = SC.Sid and SC.Cid = ’001′ and exists
    (select  *  from SC   as   SC_2
        where SC_2.Sid = SC.Sid and SC_2.Cid = ’002′);
7、查询学过“叶平”老师所教的所有课的同学的学号、姓名;
select Sid,Sname
from Student
8、查询所有课程成绩小于60分的同学的学号、姓名;
select Sid,Sname
from Student
where Sid notin
        (select Student.Sid
        from Student, SC
        where S.Sid = SC.Sid and score > 60);
9、查询没有学全所有课的同学的学号、姓名;
select Student.Sid,Student.Sname
from Student,SC
where Student.Sid = SC.Sid group  by Student.Sid,Student.Sname
having count(Cid) < (select count(Cid)  from Course);
10、查询至少有一门课与学号为“1001”的同学所学相同的同学的学号和姓名;
select Sid,
Sname from Student,
SC where Student.Sid = SC.Sid and Cid in
(select Cid from SC where Sid = ‘1001‘);
11、删除学习“叶平”老师课的SC表记录;
delect  SC from course,
Teacher where Course.Cid = SC.Cid and Course.Tid = Teacher.Tid and Tname = ‘叶平‘;
12、查询各科成绩最高和最低的分:以如下形式显示:课程ID,最高分,最低分
select L.Cid课程ID,
L.score最高分,
R.score最低分 from SCL,SCR
where L.Cid = R.Cid and L.score =
    (select MAX(IL.score)
    from SCIL, StudentIM
    where IL.Cid = L.Cid and IM.Sid = IL.Sid group  by IL.Cid)  and R.Score =
        (select MIN(IR.score)  from SCIR where IR.Cid = R.Cid group  by IR.Cid);
13、查询学生平均成绩及其名次
select 1 + (select COUNT(distinct平均成绩)
from
        (select Sid, AVG(score)平均成绩
        from SC group  by Sid) T1
        where 平均成绩 > T2.平均成绩)名次,Sid学生学号,平均成绩
        from (select Sid, AVG(score)平均成绩 from SC group  by Sid) T2   order   by 平均成绩desc;
14、查询各科成绩前三名的记录: (不考虑成绩并列情况)
 select t1.Sid  as  学生ID,t1.Cid  as  课程ID,Score  as  分数
from SCt1 where scoreIN
        (select TOP3score
        from SC
        where t1.Cid = Cid   order   by scoreDESC)   order   by t1.Cid;
15、查询每门功成绩最好的前两名
select t1.Sid  as  学生ID,t1.Cid  as  课程ID,Score  as  分数
from SCt1
where scoreIN
        (select TOP2score
        from SC
        where t1.Cid = Cid  order   by scoreDESC)   order   by t1.Cid;
时间: 2024-10-07 05:31:11

数据库要做的相关文章

smarty模板调数据库并做添加删除修改和分页

smarty模板只要就是实现分离效果所以每个功能都需要两个页面一个是HTML  和 PHP  两部分组成 使用smarty模板要在main文件夹下面创建login.php文本,要用smarty模板首先引入入口文件, <?php include("../init.inc.php"); //引入入口文件 //var_dump($smarty);// $smarty->display("login.html");//用来在模板显示用户看到的内容 登录页面在sm

通过读取excel数据和mysql数据库数据做对比(二)-代码编写测试

通过上一步,环境已搭建好了. 下面开始实战, 首先,编写链接mysql的函数conn_sql.py import pymysql def sql_conn(u,pwd,h,db): conn=pymysql.connect(user=u,passwd=pwd,host=h,db=db) #print("连接数据库"+db+"成功了!!") return conn 在编写,查询数据库的语句:sql.py import pymysql import conn_sql d

xtrabackup2.4 备份Precona5.6数据库,做增量备份与还原

1.Full backuop,一定要先做:     innobackupex --defaults-file=/etc/my.cnf --user=root --password=evlink /home/mysql/backup/2.Incremental backup,可以每隔一小时或者三小时做一次:    innobackupex --defaults-file=/etc/my.cnf --user=root --password=evlink --incremental /home/my

那些可以在数据库里做的事:分页与过滤

今天有幸被召回母校给即将毕业的学弟学妹们讲我这两年的工作史,看了下母校没啥特别的变化,就是寝室都安了空调,学妹们都非常漂亮而已..好了不扯蛋了,说下今天的主题吧.这些天我在深度定制语法高亮功能的同时发现了博客园提供的一些有意思的函数,甚至有几个博客园都没用到,我也不知道怎么才能触发那些功能..打开这个js就可以看到很多好用的东西了,虽然写的不怎么样,但是至少有这些功能. ps: 推荐安装一个代码格式化的插件,否则一坨看着蛋疼.比如第一个就是 log,方便调试. www.qidian.com/Bo

通过读取excel数据和mysql数据库数据做对比(一)-win环境准备

要想操作excel和mysql首先需要安装python,然后是安装excel和mysql插件: 第一步安装python: 直接百度搜索,下载安装就可以了. 第二步安装excel插件: 首先到这个http://pypi.python.org/pypi/xlrd网址下载插件: 由于这个网站打开缓慢(国内打开国外网站的通病),可以到我这个网盘下载:下载 下载后,解压到一个固定目录,比如:我解压到d:\excel下 然后按ctrl+c打开运行cmd 进入到解压目录下(默认是c盘,进入d盘可以直接输入d:

SQL Server 第四堂课 用数据库语言while 循环做累加求和。以及数据库的备份,还原,分离,附加。以及check 约束

drop proc qiuhe create proc qiuhe --用数据库语言做累加求和 @n int as declare @sum int --相当于C#语言里定义变量 declare @i int set @sum=0 --再给变量赋值 ,相当于C#语言里的 int sum=0 set @i=1 -- 相当于for 循环里的 int i=1 (int i=1;i<=n;i++) while @i<[email protected] --for(int i=1;i<=n;i++

Key-Value数据库实现Part 2:使用已有的K-V数据库做模型

这篇文章中,我会解释为什么在项目中使用已有的模型而不是完全从零开始.我会列出一系列选择K-V数据库模型的标准.最后会概述并选择一些广为人知且符合所列标准的K-V数据库.文章将会主要涵盖: 不要重复造轮子 可供参考的模型和选择标准 被选中数据库的概要 1.不要重复造轮子 K-V数据库已经存在至少30多年了[1].其中最有纪念意义的项目是DBM,是于1979年由Kenneth Tompson为Unix version 7编写的最初的数据库管理软件[2].工程师们面对这有关这些数据库的种种情形 和问题

delphi+mysql做的图书管理系统,怎么把mysql数据库也一起打包进去?我用的是delphi的Express组件。

sqlconnection,sqlquery1这些组件,我连接数据库的时候是用对象编辑器里的属性进行连接的,在sqlconnection中指定了字符集utf8,有些人做的方法是利用代码连接的数据库,如果我用代码连接mysql数据库怎么做??使用sqlconnecion连接数据库.说清楚点的话就是怎么用代码实现连接mysql数据库,并且指定字符集utf8(不这么做的话就出现乱码). 2011-05-04 11:24提问者采纳1.下载此文件http://www.justsoftwaresolutio

利用SHELL脚本来验证Oracle数据库RMAN备份集的有效性

利用SHELL脚本来验证Oracle数据库RMAN备份集的有效性 作者:赵全文  网名:guestart 我们生产环境的Oracle数据库都做了RMAN备份,是采用了一周的RMAN备份保留策略:除了使用RMAN备份以外,我们还使用了爱数(Eisoo)备份软件来进行备份,可以说是做到了有备无患.可是,如果有一天,Oracle数据库由于主机层面硬件原因或是数据库层面的原因不能对外提供高可用服务的时候,假设数据丢了一大部分,我们只有用RMAN备份来进行恢复,再如果发现,RMAN备份失效了,那就往地缝里