SQL经典面试题集锦

1、问题背景

(1)学生表(学号,姓名,年龄,性别)

student(S#,Sname,Sage,Ssex)

(2)课程表(课程编号,课程名称,教师编号)

course(C#,Cname,T#)

(3)成绩表(学号,课程编号,分数)

student_score(S#,C#,score)

(4)教师表(教师编号,教师名称)

teacher(T#,tname)

2、创建表

(1)学生表

Create Table

CREATE TABLE `student` (
  `S#` bigint(12) NOT NULL COMMENT ‘学号‘,
  `Sname` varchar(20) DEFAULT NULL COMMENT ‘姓名‘,
  `Sage` int(3) DEFAULT NULL COMMENT ‘年龄‘,
  `Ssex` varchar(4) DEFAULT NULL COMMENT ‘性别‘,
  PRIMARY KEY (`S#`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8

(2)课程表

Create Table

CREATE TABLE `cource` (
  `C#` bigint(12) NOT NULL COMMENT ‘课程编号‘,
  `Cname` varchar(20) DEFAULT NULL COMMENT ‘课程名称‘,
  `T#` bigint(12) DEFAULT NULL COMMENT ‘教师编号‘,
  PRIMARY KEY (`C#`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8

(3)成绩表

Create Table

CREATE TABLE `student_score` (
  `S#` bigint(12) NOT NULL COMMENT ‘学号‘,
  `C#` bigint(12) NOT NULL COMMENT ‘课程编号‘,
  `score` double DEFAULT NULL COMMENT ‘分数‘,
  PRIMARY KEY (`S#`,`C#`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8

(4)教师表

Create Table

CREATE TABLE `teacher` (
  `T#` bigint(12) NOT NULL COMMENT ‘教师编号‘,
  `tname` varchar(20) DEFAULT NULL COMMENT ‘教师名称‘,
  PRIMARY KEY (`T#`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8

3、问题

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

SELECT
  a.`S#`
FROM
  (SELECT
    sc.`S#`,
    sc.`score`
  FROM
    student_score sc
  WHERE sc.`C#` = 1) a,
  (SELECT
    sc.`S#`,
    sc.`score`
  FROM
    student_score sc `student_score`
  WHERE sc.`C#` = 2) b
WHERE a.score > b.score
  AND a.`S#` = b.`S#` ;

(2)查询平均成绩大于60分的同学的学号和平均成绩

SELECT
  sc.`S#`,
  AVG(sc.`score`)
FROM
  student_score sc
GROUP BY sc.`S#`
HAVING AVG(sc.`score`) > 60 ;

时间: 2024-12-18 13:17:52

SQL经典面试题集锦的相关文章

【笔试/面试】SQL 经典面试题

基本概念 (1)any/all,构成 where 子句的条件判断,any:表示或(or)的概念,all:则表示与(and)的概念,这两个关键字的出现是为了语句的简化: (2)先分组再做聚合,逻辑上也应当如此,聚合(取最值)之后便无分组的必要: select region, sum(population), sum(area) from bbc group by region; 1 (3)group by having,having 对分组后的数据进行筛选,这是 where 所做不到的: 1. 不

SQL经典面试题及答案

1.一道SQL语句面试题,关于group by表内容:2005-05-09 胜2005-05-09 胜2005-05-09 负2005-05-09 负2005-05-10 胜2005-05-10 负2005-05-10 负 如果要生成下列结果, 该如何写sql语句? 胜 负2005-05-09 2 22005-05-10 1 2------------------------------------------create table #tmp(rq varchar(10),shengfu nc

sql 经典面试题

如果数据库里两个日期型字段d1,d2,怎样用sql语句列出按月的所有区间,比如表结构如下localid    d1          d21         2014-1-15    2014-3-62         2014-7-15    2014-10-15 转换成localid    d1          d21         2014-1-15    2014-1-311         2014-2-1     2014-2-281         2014-3-1     2

sql经典面试题

1. 表内容: 2005-05-09 胜 2005-05-09 胜 2005-05-09 负 2005-05-09 负 2005-05-10 胜 2005-05-10 负 2005-05-10 负 如果要生成下列结果, 该如何写sql语句? 胜 负 2005-05-09 2 2 2005-05-10 1 2 answer: select a.rq,a.sheng,b.fu from (select rq,count(shengfu) as sheng from shengfu where she

SQL常见面试题2[转载]

SQL经典面试题及答案一道SQL语句面试题,关于group by表内容:2005-05-09 胜2005-05-09 胜2005-05-09 负2005-05-09 负2005-05-10 胜2005-05-10 负2005-05-10 负 如果要生成下列结果, 该如何写sql语句? 胜 负2005-05-09 2 22005-05-10 1 2------------------------------------------create table #tmp(rq varchar(10),s

数据库子查询经典面试题

数据库]SQL经典面试题 - 数据库查询 - 子查询应用二 发布于 1 年前  作者 tommy  575 次浏览  最后一次编辑是 10 个月前  来自 数据库 上节课我们通过子查询,完成了查询的最高分学生的需求,今天我们来学习子查询的分类,以及通过子查询来完成工作中经常遇到一些个性化需求. 子查询概念: 一个SELECT语句嵌套在另一个SELECT语句中,子查询也叫做内部查询,而包含子查询的语句又称为外部查询或主查询,子查询自身可以包含一个或多个子查询,一个查询语句中可以嵌套任意数量的子查询

经典的Java基础面试题集锦

经典的Java基础面试题集锦,欢迎收藏和分享 一.面向对象编程(OOP) Java是一个支持并发.基于类和面向对象的计算机编程语言.下面列出了面向对象软件开发的优点: 代码开发模块化,更易维护和修改. 代码复用. 增强代码的可靠性和灵活性. 增加代码的可理解性. 面向对象编程有很多重要的特性,比如:封装,继承,多态和抽象.下面的章节我们会逐个分析这些特性. 封装 封装给对象提供了隐藏内部特性和行为的能力.对象提供一些能被其他对象访问的方法来改变它内部的数据.在Java当中,有3种修饰符:publ

Web前端面试题集锦

Web前端面试题集锦 前端开发面试知识点大纲: 注意 转载须保留原文链接(http://www.cnblogs.com/wzhiq896/p/5927180.html )作者:wangwen896 HTML&CSS: 对Web标准的理解.浏览器内核差异.兼容性.hack.CSS基本功:布局.盒子模型.选择器优先级及使用.HTML5.CSS3.移动端适应. JavaScript: 数据类型.面向对象.继承.闭包.插件.作用域.跨域.原型链.模块化.自定义事件.内存泄漏.事件机制.异步装载回调.模板

【转】.net 经典面试题

[转].net 经典面试题 1. 简述 private. protected. public. internal 修饰符的访问权限. 答 . private : 私有成员, 在类的内部才可以访问. protected : 保护成员,该类内部和继承类中可以访问. public : 公共成员,完全公开,没有访问限制. internal: 在同一命名空间内可以访问. 2 .列举ASP.NET 页面之间传递值的几种方式. 答. 1.使用QueryString, 如....?id=1; response.