笔试中的数据库题目!

问题描述

今天笔试遇到的数据库题目,大家来看看,怎么做?有student和class两个学生信息和班级信息的表,写出SQL查询语句,求各班中年龄最小的十位同学,并从小排到大。

解决方案

解决方案二:
一点思路也没有,大家有什么想法,一起讨论吧,谢谢大家!
解决方案三:
oracle用rownummysql用limit
解决方案四:
selecttop10.....fromstudenta,classbwhereb.id=a.班级IDorderbyb.agesqlserverselect...from(select...fromstudenta,classbwhereb.id=a.班级IDorderbyb.age)awhererownum<=10oracle
解决方案五:
顶欢迎加入2987841java交流群共同交流面试心得和数据库心得
解决方案六:
mysql>select*fromclass;+------+-----------+|id|name|+------+-----------+|1|信计052班||2|信计051班|+------+-----------+2rowsinset(0.00sec)mysql>select*fromstudent;+------+------+------+------+|id|name|age|cid|+------+------+------+------+|1|张1|18|1||2|张2|20|1||3|张3|17|1||4|张4|18|1||5|张5|16|1||6|张6|19|1||7|张7|15|1||8|刘1|16|2||9|刘2|19|2||10|刘3|21|2||11|刘4|20|2||12|刘5|15|2||13|刘6|17|2||14|刘7|20|2||15|刘8|21|2|+------+------+------+------+15rowsinset(0.00sec)mysql>selects.name,s.age,c.name->fromstudents,classc->wheres.cid=c.idand->6>=(selectcount(*)fromstudentst->wherest.age<=s.ageandst.cid=c.id)->orderbyc.id,s.age;+------+------+-----------+|name|age|name|+------+------+-----------+|张7|15|信计052班||张5|16|信计052班||张3|17|信计052班||张1|18|信计052班||张4|18|信计052班||张6|19|信计052班||刘5|15|信计051班||刘1|16|信计051班||刘6|17|信计051班||刘2|19|信计051班||刘4|20|信计051班||刘7|20|信计051班|+------+------+-----------+12rowsinset(0.00sec)

mysql数据库,由于测试数据没那么多,这里只算了前六位同学。
解决方案七:
排序取前十
解决方案八:
mysql>selects.name,s.age,c.name,->(selectcount(*)fromstudent->wherecid=s.cidandage<=s.age)rank->fromstudents,classc->wheres.cid=c.idand->6>=(selectcount(*)fromstudentst->wherest.age<=s.ageandst.cid=c.id)->orderbyc.id,s.age;+------+------+-----------+------+|name|age|name|rank|+------+------+-----------+------+|张7|15|信计052班|1||张5|16|信计052班|2||张3|17|信计052班|3||张1|18|信计052班|5||张4|18|信计052班|5||张6|19|信计052班|6||刘5|15|信计051班|1||刘1|16|信计051班|2||刘6|17|信计051班|3||刘2|19|信计051班|4||刘4|20|信计051班|6||刘7|20|信计051班|6|+------+------+-----------+------+12rowsinset(0.00sec)

解决方案九:
请问zhoupuyue:6>=(selectcount(*)fromstudentstwherest.age<=s.ageandst.cid=c.id)这句话怎么确定最小的前6位呢?st.age<=s.age表示自己跟自己比较吗?怎么比较的呢?谢谢!
解决方案十:
引用5楼zhoupuyue的回复:

SQLcodemysql>select*fromclass;+------+-----------+|id|name|+------+-----------+|1|信计052班||2|信计051班|+------+-----------+2rowsinset(0.00sec)mysql>select*fromstudent;+------+------+------+------+|id|name|age|cid|+------+------+------+------+|1|张1|18|1||2|张2|20|1||3|张3|17|1||4|张4|18|1||5|张5|16|1||6|张6|19|1||7|张7|15|1||8|刘1|16|2||9|刘2|19|2||10|刘3|21|2||11|刘4|20|2||12|刘5|15|2||13|刘6|17|2||14|刘7|20|2||15|刘8|21|2|+------+------+------+------+15rowsinset(0.00sec)mysql>selects.name,s.age,c.name->fromstudents,classc->wheres.cid=c.idand->6>=(selectcount(*)fromstudentst->wherest.age<=s.ageandst.cid=c.id)->orderbyc.id,s.age;+------+------+-----------+|name|age|name|+------+------+-----------+|张7|15|信计052班||张5|16|信计052班||张3|17|信计052班||张1|18|信计052班||张4|18|信计052班||张6|19|信计052班||刘5|15|信计051班||刘1|16|信计051班||刘6|17|信计051班||刘2|19|信计051班||刘4|20|信计051班||刘7|20|信计051班|+------+------+-----------+12rowsinset(0.00sec)mysql数据库,由于测试数据没那么多,这里只算了前六位同学。

哥们你信计的??哈哈!!!metoo
解决方案十一:
6>=(selectcount(*)fromstudentstwherest.age<=s.ageandst.cid=c.id)st是student表的别名,s也是student表的别名。这部分语句表示在student表中比s表中某一条记录的age小的记录的数量。
解决方案十二:
to#9哈哈!这都被你发现了?
解决方案十三:
mysql>selects.name,s.age,c.name,->(selectcount(*)+1fromstudent->wherecid=s.cidandage<s.age)rank->fromstudents,classc->wheres.cid=c.idand->6>=(selectcount(*)fromstudentst->wherest.age<=s.ageandst.cid=c.id)->orderbyc.id,s.age;+------+------+-----------+------+|name|age|name|rank|+------+------+-----------+------+|张7|15|信计052班|1||张5|16|信计052班|2||张3|17|信计052班|3||张1|18|信计052班|4||张4|18|信计052班|4||张6|19|信计052班|6||刘5|15|信计051班|1||刘1|16|信计051班|2||刘6|17|信计051班|3||刘2|19|信计051班|4||刘4|20|信计051班|5||刘7|20|信计051班|5|+------+------+-----------+------+12rowsinset(0.00sec)

修改一下。
解决方案十四:
回复zhoupuyue:mysql>selects.name,s.age,c.name,->(selectcount(*)+1fromstudent->wherecid=s.cidandage<s.age)rank->fromstudents,classc->wheres.cid=c.idand->6>=(selectcount(*)fromstudentst->wherest.age<=s.ageandst.cid=c.id)->orderbyc.id,s.age;我有点糊涂了,理一理逻辑:原表,S表,c表,st表,可不可以不要st表,换成原表跟s表比较呢?如下:wheres.cid=c.idand6>=(selectcount(*)fromstudentwhereage<=s.ageandcid=c.id)
解决方案十五:
可以。
解决方案:
MK
解决方案:
看不懂数据库的,大家都好厉害啊~
解决方案:
select*fromclass,studentwhereclass.sname=student.snameandstudent.idin//数据库的链接(selecttop10*fromstudent//去前10whereidin(select*fromstudentgroupbysage)//排序)

时间: 2024-11-05 19:40:34

笔试中的数据库题目!的相关文章

oracle数据库题目困惑

问题描述 oracle数据库题目困惑 某停车场使用远距离射频捕捉技术完成车辆泊位的采集,每10秒钟循环采集一次信息,将采集信息记录到表busparking中,busparking表结构为(泊位号parkingno,车辆自编号busno,采集时间collecttime),现在需要通过busparking表信息完成车辆进出泊位的信息表busstatus(车辆自编号busno,进出时间inouttime,进出标志inoutmark,泊位号parkingno).(编程实现,2人/3组,需要源代码及解决方

数据库异常膨胀-SQLSERVER数据同步过程中,数据库急速,异常膨胀!

问题描述 SQLSERVER数据同步过程中,数据库急速,异常膨胀! 两台服务器A,B上的sqlserver需要同步两个表的数据,B中的某两张表数据要保持和A中的一样,第三方系统会没5分钟想A中插入一些新的数据.这里我采用了快照方式在A中发布要同步的两张表的数据,没两分钟更新一次快照,在服务器B上订阅A发布的数据.数据同步看起来都是没问题的,B中会得到A的新数据,可是一个月不到,B中对应的数据库文件竟然已经从原来的1G多一点的样子达到100+G,几乎要超过磁盘的最大容量,而我看A中的数据库文件大小

在ORACLE中移动数据库文件

在ORACLE中移动数据库文件 ---- ORACLE数据库由数据文件,控制文件和联机日志文件三种文件组成.由于磁盘空间的变化,或者基于数据库磁盘I/O性能的调整等,数据库管理员可能会考虑移动数据库文件.下面以UNIX平台为例,分别讨论三种数据库文件的移动方法. ---- 一.移动数据文件: ---- 可以用ALTER DATABASE,ALTER TABLESPACE两种方法移动数据文件. ---- 1. ALTER DATABASE方法: ---- 用此方法,可以移动任何表空间的数据文件.

jsp中的数据库编程

js|编程|数据|数据库 一,SQL复习1,SQL语句分为两类:DDL(Data Definition Language)和DML(Dat Manipulation Languge,数据操作语言).前者主要是定义数据逻辑结构,包括定义表.视图和索引;DML主要是对数据库进行查询和更新操作.2,Create Table(DDL):Create Table tabName(colName1 colType1 [else],colName2 colType2 [else],...,colNamen c

在 ASP.NET 中支持数据库缓存相关性

asp.net|缓存|数据|数据库 开发人员都喜欢 ASP.NET 应用程序缓存. 一个原因是 ASP.NET 能够在放入缓存中的项与文件系统中的文件之间创建相关性. 如果相关性所针对的文件更改,ASP.NET 会自动将相关项从缓存中删除. 通过与缓存删除回叫(当缓存项删除时向所有关注方广播通知)结合,缓存相关性为开发人员提供了方便,使他们得以通过尽量减少耗时的文件访问来最大限度地提高性能,因为这使他们可以放心地允许文件数据缓存,而不必担心数据变得陈旧. 尽管缓存相关性非常实用,但是在 ASP.

SQLServer中master数据库浅析

server|sqlserver|数据|数据库 表sysdatabases:保存DBMS中数据库信息select [name] from [sysdatabases] order by [name]就能得到该DBMS中的数据库信息 表sysobjects:保存数据库中数据表信息con.ChangeDatabase(DBName)select [id],[name] from [sysobjects] where [type]='u',con就能得到该数据库的表信息 表syscolumns:保存数

JSP中SQL数据库编程技术

js|编程|数据|数据库   JSP中SQL数据库编程技术一,SQL复习 1,SQL语句分为两类:DDL(Data Definition Language)和DML(Dat Manipulation Languge,数据操作语言).前者主要是定义数据逻辑结构,包括定义表.视图和索引;DML主要是对数据库进行查询和更新操作. 2,Create Table(DDL):  Create Table tabName(   colName1 colType1 [else],   colName2 colT

解决在ASP中执行数据库查询中的特殊字符的问题

解决在ASP中执行数据库查询中的特殊字符的问题 在进行数据库的查询时,会经常遇到这样的情况: 例如想在一个用户数据库中查询他的用户名和他的密码,但恰好该用户使用的名字和密码中有特殊的字符,例如单引号,"|"号 双引号或者连字符"&". 例如他的名字是1'test,密码是A|&900 这时当你执行以下的查询语句时,肯定会报错: SQL = "SELECT * FROM SecurityLevel WHERE UID='" &

ASP中处理数据库图像的方法

数据|数据库 ---- Active Server Pages (ASP) 是服务器端的脚本编写环境,您可用它来创建动态 Web 页或生成功能强大的 Web 应用程序,ASP 使这些工作变得十分简单.ASP 页是包括 HTML 标记.文本和脚本命令的文件.ASP 页可调用 ActiveX 组件来执行任务,例如连接到数据库或进行商务计算.通过 ASP,可为您的 Web 页添加交互内容或用 HTML 页构成整个 Web 应用程序,这些应用程序使用HTML页作为您的客户的界面. ---- 在我们使用A