--1.查询全部学生的姓名和所学的课程名称及成绩
创新互联公司主要从事网站设计、网站建设、网页设计、企业做网站、公司建网站等业务。立足成都服务湘桥,10年网站建设经验,价格优惠、服务专业,欢迎来电咨询建站服务:028-86922220
select s.Sname,o.Cname,c.Grade from Student s,enrolls c,Courses o where s.Sno=c.Sno and c.Cno=o.Cno
--2.找出所有学生的平均成绩和所学课程门数
select Sno,avg(grade) as '平均成绩',count(*) as '所学课程门数' from enrolls group by Sno;
--3.找出各课程的平均成绩,按课程号分组,且只选择学生超过3人的课程的成绩
select enrolls.Cno,cname,avg(grade) as '平均成绩' from enrolls,Courses where enrolls.cno=Courses.cno group by enrolls.Cno,cname having count(*)=3;
--4.找出选修了全部课程的学生的姓名
select Sname from student where sno in(select sno from enrolls group by Sno having count(sno)=(select count(cno) from Courses))
1、忍不住想说一句,因为第一题中的字段类型是 【日期型】,而各种数据库操作日期型数据有不同的方法,没有一种共通的方法,所以脱离了数据库而言没有一种共通的sql。
2、select ID,NAME,ADDRESS,PHONE,LOGDATE from T
where ID in( select ID from T group by NAME having count(*)1)
order by NAME;
3、delete from T where ID not in
(select min(id) from T group by name);
4、update T
set T.ADDRESS=(select E.ADDRESS from E where E.NAME=T.NAME),
T.PHONE=(select E.PHONE from E where E.NAME=T.NAME);
5、这个不同的数据库也有不同的处理方法,不能脱离数据库谈了。
如:SqlServer或者access可以使用 top
oracle可以使用 rownum 等
---
以上,希望对你有所帮助。
Student(s_id,s_name,s_birth,s_sex) --学生编号,学生姓名, 出生年月,学生性别
–2.课程表
Course(c_id,c_name,t_id) – --课程编号, 课程名称, 教师编号
–3.教师表
Teacher(t_id,t_name) --教师编号,教师姓名
–4.成绩表
Score(s_id,c_id,s_score) --学生编号,课程编号,分数
1、查询"01"课程比"02"课程成绩高的学生的信息及课程分数
2、查询"01"课程比"02"课程成绩低的学生的信息及课程分数
3、查询平均成绩大于等于60分的同学的学生编号和学生姓名和平均成绩
4、查询平均成绩小于60分的同学的学生编号和学生姓名和平均成绩
5、查询所有同学的学生编号、学生姓名、选课总数、所有课程的总成绩
6、查询"李"姓老师的数量
7、查询学过"张三"老师授课的同学的信息
8、查询没学过"张三"老师授课的同学的信息
9、查询学过编号为"01"并且也学过编号为"02"的课程的同学的信息
10、查询学过编号为"01"但是没有学过编号为"02"的课程的同学的信息
11、查询没有学全所有课程的同学的信息
*12、查询至少有一门课与学号为"01"的同学所学相同的同学的信息 **
13、查询和"01"号的同学学习的课程完全相同的其他同学的信息 (不会)
14、查询没学过"张三"老师讲授的任一门课程的学生姓名
-- [分析] 方法一:疯狂子查询
方法二:子查询+内联结
15、查询两门及其以上不及格课程的同学的学号,姓名及其平均成绩
16、检索"01"课程分数小于60,按分数降序排列的学生信息
17、按平均成绩从高到低显示所有学生的所有课程的成绩以及平均成绩(重要!)
-- 18.查询各科成绩最高分、最低分和平均分:以如下形式显示:课程ID,课程name,最高分,最低分,平均分,及格率,中等率,优良率,优秀率--及格为=60,中等为:70-80,优良为:80-90,优秀为:=90(重要!)
19、按各科成绩进行排序,并显示排名(涉及到TopN问题,重要!!!)
20、查询学生的总成绩并进行排名
21、查询不同老师所教不同课程平均分从高到低显示
22、查询所有课程的成绩第2名到第3名的学生信息及该课程成绩
23、统计各科成绩各分数段人数:课程编号,课程名称,[100-85],[85-70],[70-60],[0-60]及所占百分比
24、查询学生平均成绩及其名次
25、查询各科成绩前三名的记录(重要!!!!!)
26、查询每门课程被选修的学生数
27、查询出只有两门课程的全部学生的学号和姓名
28、查询男生、女生人数
29、查询名字中含有"风"字的学生信息
-- [分析] 考察字符串模糊查询,之前我的sql学习笔记中有详细记录
30、查询同名同性学生名单,并统计同名人数(重要!!!!!)
31、查询1990年出生的学生名单
32、查询每门课程的平均成绩,结果按平均成绩降序排列,平均成绩相同时,按课程编号升序排列
33、查询平均成绩大于等于85的所有学生的学号、姓名和平均成绩
34、查询课程名称为"数学",且分数低于60的学生姓名和分数
35、查询所有学生的课程及分数情况;
36、查询任何一门课程成绩在70分以上的姓名、课程名称和分数;
37、查询不及格的课程
38、查询课程编号为01且课程成绩在80分以上的学生的学号和姓名;
39、求每门课程的学生人数
40、查询选修"张三"老师所授课程的学生中,成绩最高的学生信息及其成绩
41、查询不同课程成绩相同的学生的学生编号、课程编号、学生成绩 (重要!!!!)
42、查询每门功成绩最好的前两名
43、统计每门课程的学生选修人数(超过5人的课程才统计)。要求输出课程号和选修人数,查询结果按人数降序排列,若人数相同,按课程号升序排列
44、检索至少选修两门课程的学生学号
45、查询选修了全部课程的学生信息
46、查询各学生的年龄 按照出生日期来算,当前月日 出生年月的月日则,年龄减一
47、查询本周过生日的学生
48、查询下周过生日的学生
49、查询本月过生日的学生
50、查询下月过生日的学生
1、可能会问nosql和关系型数据库的区别:
优点:
1)成本:nosql数据库简单易部署,基本都是开源软件,不需要像使用Oracle那样花费大量成本购买使用,相比关系型数据库价格便宜
2)查询速度:nosql数据库将数据存储于缓存之中,关系型数据库将数据存储在硬盘中,自然查询速度远不及nosql数据库
3)存储数据的格式:nosql的存储格式是key,value形式、文档形式、图片形式等等,所以可以存储基础类型以及对象或者是集合等各种格式,而数据库则只支持基础类型
4)扩展性:关系型数据库有类似join这样的多表查询机制的限制导致扩展很艰难
缺点:
1)维护的工具和资料有限,因为nosql是属于新的技术,不能和关系型数据库10几年的技术同日而语。
2)不提供对sql的支持,如果不支持sql这样的工业标准,将产生一定用户的学习和使用成本
3)不提供关系型数据库对事物的处理
2、介绍下redis和mongodb:
自行google。
3、应用场景:
redis:
a.主要是做热点数据缓存。
b.数据过期处理。
c.消息队列等功能。
d.计数,例如投票等。
mongodb:
mongodb的主要目标是在键/值存储方式(提供了高性能和高度伸缩性)以及传统的RDBMS系统(丰富的功能)架起一座桥梁,集两者的优势于一身。mongo适用于以下场景:
a.网站数据:mongo非常适合实时的插入,更新与查询,并具备网站实时数据存储所需的复制及高度伸缩性。
b.缓存:由于性能很高,mongo也适合作为信息基础设施的缓存层。在系统重启之后,由mongo搭建的持久化缓存可以避免下层的数据源过载。
c.大尺寸、低价值的数据:使用传统的关系数据库存储一些数据时可能会比较贵,在此之前,很多程序员往往会选择传统的文件进行存储。
d.高伸缩性的场景:mongo非常适合由数十或者数百台服务器组成的数据库。
e.用于对象及JSON数据的存储:mongo的BSON数据格式非常适合文档格式化的存储及查询。
4、支持的数据类型:
内容比较多,自行将网上的信息整理一下。