MySQL查询面试题
2019独角兽企业重金招聘Python工程师标准>>>
MySQL查询面试题
MySQL查询面试题【第一部分】
[sql] view plain copy
Student(S#,Sname,Sage,Ssex) 学生表
Course(C#,Cname,T#) 课程表
SC(S#,C#,score) 成绩表
Teacher(T#,Tname) 教师表
--建表:
CREATE TABLE Student
(
S# int identity(1,1) primary key,,
Sname varchar(20),
Sage int,
Ssex varchar2(2)
)
CREATE TABLE Course
(
C# int identity(1,1) primary key,,
Cname varchar(255),
T# int
)
CREATE TABLE SC
(
S# int identity(1,1) primary key,,
C# int,
score varchar(50)
)
CREATE TABLE Teacher
(
T# int identity(1,1) primary key,,
Tname varchar(20)
)
--1、查询“001”课程比“002”课程成绩高的所有学生的学号;
select a.S#
from (select s#,score from SC where C#=’001′) a,
(select s#,score from SC where C#=’002′) b
where a.score>b.score and a.s#=b.s#;
--2、查询平均成绩大于60分的同学的学号和平均成绩;
select S#,avg(score)
from sc
group by S# having avg(score) >60;
--3、查询所有同学的学号、姓名、选课数、总成绩;
select Student.S#,Student.Sname,count(SC.C#),sum(score)
from Student left Outer join SC on Student.S#=SC.S#
group by Student.S#,Sname
--4、查询姓“李”的老师的个数;
select count(distinct(Tname))
from Teacher
where Tname like ‘李%’;
--5、查询没学过“叶平”老师课的同学的学号、姓名;
select Student.S#,Student.Sname
from Student
where S# not in (select distinct( SC.S#) from SC,Course,Teacher where SC.C#=Course.C# and Teacher.T#=Course.T# and Teacher.Tname=’叶平’);
--6、查询学过“001”并且也学过编号“002”课程的同学的学号、姓名;
select Student.S#,Student.Sname
from Student,SC
where Student.S#=SC.S# and SC.C#=’001′and exists( Select * from SC as SC_2 where SC_2.S#=SC.S# and SC_2.C#=’002′);
--7、查询学过“叶平”老师所教的所有课的同学的学号、姓名;
select S#,Sname
from Student
where S# in
(select S#
from SC ,Course ,Teacher
where SC.C#=Course.C# and Teacher.T#=Course.T# and Teacher.Tname=’叶平’ group by S# having count(SC.C#)=(select count(C#) from Course,Teacher where Teacher.T#=Course.T# and Tname=’叶平’));
--8、查询所有课程成绩小于60分的同学的学号、姓名;
select S#,Sname
from Student
where S# not in (select Student.S# from Student,SC where S.S#=SC.S# and score>60);
--9、查询没有学全所有课的同学的学号、姓名;
select Student.S#,Student.Sname
from Student,SC
where Student.S#=SC.S#
group by Student.S#,Student.Sname having count(C#) <(select count(C#) from Course);
--10、查询至少有一门课与学号为“1001”的同学所学相同的同学的学号和姓名;
select S#,Sname
from Student,SC
where Student.S#=SC.S# and C# in (select C# from SC where S#='1001');
--11、删除学习“叶平”老师课的SC表记录;
Delect SC
from course ,Teacher
where Course.C#=SC.C# and Course.T#= Teacher.T# and Tname='叶平';
--12、查询各科成绩最高和最低的分:以如下形式显示:课程ID,最高分,最低分
SELECT L.C# --课程ID,L.score 最高分,R.score 最低分
FROM SC L ,SC R
WHERE L.C# = R.C#
and
L.score = (SELECT MAX(IL.score)
FROM SC IL,Student IM
WHERE IL.C# = L.C# and IM.S#=IL.S#
GROUP BY IL.C#)
and
R.Score = (SELECT MIN(IR.score)
FROM SC IR
WHERE IR.C# = R.C#
GROUP BY IR.C# );
--13、查询学生平均成绩及其名次
SELECT 1+(SELECT COUNT( distinct 平均成绩)
FROM (SELECT S#,AVG(score) 平均成绩
FROM SC
GROUP BY S# ) T1
WHERE 平均成绩 > T2.平均成绩) 名次, S# 学生学号,平均成绩
FROM (SELECT S#,AVG(score) 平均成绩 FROM SC GROUP BY S# ) T2
ORDER BY 平均成绩 desc;
--14、查询各科成绩前三名的记录:(不考虑成绩并列情况)
SELECT t1.S# as 学生ID,t1.C# as 课程ID,Score as 分数
FROM SC t1
WHERE score IN (SELECT TOP 3 score
FROM SC
WHERE t1.C#= C#
ORDER BY score DESC)
ORDER BY t1.C#;
--15、查询每门功成绩最好的前两名
SELECT t1.S# as 学生ID,t1.C# as 课程ID,Score as 分数
FROM SC t1
WHERE score IN (SELECT TOP 2 score
FROM SC
WHERE t1.C#= C#
ORDER BY score DESC )
ORDER BY t1.C#;
--补充:
--已经知道原表
year salary
——————
2000 1000
2001 2000
2002 3000
2003 4000
--解:
select b.year,sum(a.salary)
from salary a,salary b
where a.year<=b.year
group by b.year
order by b.year;
--在面试过程中多次碰到一道SQL查询的题目,查询A(ID,Name)表中第31至40条记录,ID作为主键可能是不是连续增长的列,完整的查询语句如下:
--方法一:
select top 10 *
from A
where ID >(select max(ID) from (select top 30 ID from A order by ID ) T) order by ID
--方法二:
select top 10 *
from A
where ID not In (select top 30 ID from A order by ID)
order by ID
注意:
我们知道,在ms sql server中或access中,
若要查询前10条记录,使用top 10即可,
但在mysql中不支持这个写法,它用limit 10。
我们可以利用MySQL中SELECT支持的一个子句——LIMIT——来完成这项功能。
LIMIT可以实现top N查询,也可以实现M至N(某一段)的记录查询,具体语法如下:
- SELECT * FROM MYTABLE
- ORDER BY ID
- LIMIT offset, recnum
其中offset为从第几条(M+1)记录开始(即下标从0开始),recnum为返回的记录条数。例:
- select * from mytable
- order by afield
- limit 2, 5
即意为,从第3条记录开始的5条记录。
转载于:https://my.oschina.net/demons99/blog/1924606
MySQL查询面试题相关推荐
- java 面试题三十二 mysql查询面试题
题一: 新建学生-课程数据库的三个表: 学生表:Student(Sno,Sname,Ssex,Sage,Sdept) Sno为主码; 课程表:Course(Cno,Cname,Cpno,Credeit ...
- java mysql查询试题_java 面试题三十二 mysql查询面试题
题一: 新建学生-课程数据库的三个表: 学生表:Student(Sno,Sname,Ssex,Sage,Sdept) Sno为主码; 课程表:Course(Cno,Cname,Cpno,Credeit ...
- mysql关于时间的面试题,mysql时间设置默认值MySQL常见面试题
1.limit(选出10 到20 条) select * from students order by id limit 9,10; 2.MySQL 会使用索引的操作符号 =,>,=,betwe ...
- mysql查询解析过程_MySQL查询执行过程详解
查询是用户通过设置某些查询条件,从表或其他查询中选取全部或者部分数据,以表的形式显示数据供用户浏览.查询是一个独立的.功能强大的.具有计算功能和条件检索功能的数据库对象.MySQL数据库中,MySQL ...
- MySQL常见面试题及答案汇总1000道(春招+秋招+社招)
MySQL面试题以及答案整理[最新版]MySQL高级面试题大全(2021版),发现网上很多MySQL面试题都没有答案,所以花了很长时间搜集,本套MySQL面试题大全,汇总了大量经典的MySQL程序员面 ...
- mysql 查询语句_MySQL相关(一)- 一条查询语句是如何执行的
前言 学习一个新知识最好的方式就是上官网,所以我先把官网贴出来 MySQL官网 (点击查阅),如果大家有想了解我没有说到的东西可以直接上官网看哈~目前 MySQL 最新大版本为8.0,但是鉴于目前应用 ...
- mysql面试题sql语句_数据库MySQL经典面试题之SQL语句
数据库MySQL经典面试题之SQL语句 1.需要数据库表1.学生表 Student(SID,Sname,Sage,Ssex) --SID 学生编号,Sname 学生姓名,Sage 出生年月,Ssex ...
- 30道MySQL基础面试题
每天晚上 00:00 执行 mysql 数据备份,请写出 crontab 配置项 答案: 0 0 * * * mysqldump -uroot -p123456 --flush-logs 数据库名 & ...
- 100道MySQL数据库面试题解析
1. MySQL索引使用有哪些注意事项呢? 可以从三个维度回答这个问题:索引哪些情况会失效,索引不适合哪些场景,索引规则 索引哪些情况会失效 查询条件包含or,可能导致索引失效如何字段类型是字符串,w ...
最新文章
- 希尔排序算法实现思想个人理解
- java前台传多个id用什么接收_jsp 页面传多个id 到java后台的处理方式
- Channel的几种状态
- 三星 Nexus S刷MIUI ROM最新图文刷机教程
- SpringBoot禁用命令行参数
- microwindows位图解析
- TensorFlow 多任务学习
- git 分支查看与切换
- 社区团购真的是实体店终结者吗?
- android程序内置浏览器,Android 应用程序与浏览器
- 【指纹识别】基于matlab GUI指纹打卡系统【含Matlab源码 867期】
- uni-app获取车牌号
- 一款,整合百度翻译api跟有道翻译api的翻译君
- TypeError: Person() takes no arguments
- 讨论数据增强(data augmentation)的有效性
- 电商后台设计:权限设计
- 老鼠流和大象流:如何检测和监控周期性流量
- 微信小程序苹果iOS长按图片无法转发、发送给朋友、保存,它们无效的解决办法
- 从手机用FTP客户端下载服务器中的文件
- 什么事,是你当了领导才明白的?
热门文章
- 在windows下 格式化SD卡或U盘最快捷、安全的方法!
- java12小时制的时间转换为24小时制
- spring boot三:spring boot的hello, world
- oracle, to_char(), to_number, ORA_01722
- 点量OTT TV 点播软件模式为何受海外华人运营者喜爱?
- 给jdk写注释系列之jdk1.6容器(1):ArrayList源码解析
- CSS系列——前端进阶之路:初涉Less
- Tesseract-OCR引擎 入门
- ASP.NET MVC5 高级编程 第3章 视图
- 如何用极致业务基础平台做一个通用企业ERP系列之三启用期间管理设计