MySQL45道面试题及答案

create database  school;use school;

#学生表create table `Student`(  `Sno` varchar(20) not null COMMENT ‘人名‘,  `Sname` varchar(20) not null COMMENT ‘姓名‘,  `Ssex` varchar(20) not null COMMENT ‘性别‘,  `Sbirthday` datetime COMMENT ‘出生日期‘,  `Class` varchar(20) COMMENT ‘班级‘);#课程表create table `Course`(  `Cno` varchar(20) not null COMMENT ‘课程号‘,  `Cname` varchar(20) not null COMMENT ‘课程名称‘,  `Tno` varchar(20) not null COMMENT ‘教工编号‘);#成绩表Create table `Score` (  `Sno` varchar(20) not null COMMENT ‘学号‘,  `Cno` varchar(20) not NULL comment ‘课程号‘,  `Degree` DECIMAL(4,1) null COMMENT ‘成绩‘);#教师表create table `Teacher` (  `Tno` varchar(20) not null COMMENT ‘教工编号‘,  `Tname` varchar(20) not null COMMENT ‘教工姓名‘,  `Tsex` varchar(20) not null COMMENT ‘教工性别‘,  `Tbirthday` datetime null COMMENT ‘教工出生日期‘,  `Prof` varchar(20) null COMMENT ‘职称‘,  `Depart` varchar(20) null COMMENT ‘教工所在部门‘);

insert into `Student` value(108,‘曾华‘,‘男‘,‘1977-09-01‘,95033),(105,‘匡明‘,‘男‘,‘1975-10-02‘,95031),(107,‘王丽‘,‘女‘,‘1976-01-23‘,95033),(101,‘李军‘,‘男‘,‘1976-02-20‘,95033),(109,‘王芳‘,‘女‘,‘1975-02-10‘,95031),(103,‘陆军‘,‘男‘,‘1974-06-03‘,95031);

insert into `Course` value(3-105,‘计算机导论‘,825),(3-245,‘操作系统‘,804),(6-166,‘数字电路‘,856),(9-888,‘高等数学‘,831);

insert into `Score` value(103,3-245,86),(105,3-245,75),(109,3-245,68),(103,3-105,92),(105,3-105,88),(109,3-105,76),(101,2-105,64),(107,3-105,91),(108,3-105,78),(101,6-166,85),(107,6-166,79),(108,6-166,81);

insert into `Teacher` value(804,‘李城‘,‘男‘,‘1958-12-02‘,‘副教授‘,‘计算机系‘),(856,‘张旭‘,‘男‘,‘1969-03-12‘,‘讲师‘,‘电子工程系‘),(825,‘王萍‘,‘女‘,‘1972-05-05‘,‘助教‘,‘计算机系‘),(831,‘刘冰‘,‘女‘,‘1977-08-14‘,‘助教‘,‘电子工程系‘);

#1、 查询Student表中的所有记录的Sname、Ssex和Class列。select `Sname`,`Ssex`,`Class` from `Student`;

#2、 查询教师所有的单位即不重复的Depart列。(多练)select distinct Depart from `Teacher`;

-- 第三题 查询Student表的所有记录。select * from `Student`;

-- 第四题 查询Score表中成绩在60到80之间的所有记录。select * from `Score` where Degree >60 and Degree<80;select * from `Score` where Degree between 60 and 80;

-- 第五题 查询Score表中成绩为85,86或88的记录。select * from `Score` where Degree = 85  or Degree =  86 or  Degree =  88;select * from `Score` where Degree in(85,86,88);

-- 第六题 查询Student表中“95031”班或性别为“女”的同学记录。select * from `Student` where Class = ‘95031‘ or Ssex =‘女‘;

-- 第七题 以Class降序查询Student表的所有记录。select * from `Student` order by Class desc;

-- 第八题 以Cno升序、Degree降序查询Score表的所有记录。select * from `Score` order by Cno asc,Degree desc ;

-- 第九题 查询“95031”班的学生人数。select count(*) from `Student` where Class = ‘95031‘;

-- 第十题 查询Score表中的最高分的学生学号和课程号。(子查询或者排序)select Sno,Cno from `Score` where Degree=(select Max(Degree) from Score);select Sno,Cno from `Score` order by Degree desc;

-- 第十一题 查询每门课的平均成绩。(group by:根据Cno进行分组)select Cno,AVG(Degree) as 平均分 from `Score` group by Cno;

-- 第十二题 查询Score表中至少有5名学生选修的并以3开头的课程的平均分数。select * from `Score` where Cno like ‘3%‘ group by Cno having Count(Cno)>4;

-- 第十三题 查询分数大于70,小于90的Sno列。select Sno from `Score` where Degree>70 or Degree<90;select Sno from `Score` where Degree between 70 and 90;

-- 第十四题 查询所有学生的Sname、Cno和Degree列。select Sname,Cno from `Student` join `Score` on `Student`.Sno = `Score`.Sno;

-- 第十五题 查询所有学生的Sno、Cname和Degree列。select Sno,Cname,Degree from Score join Course on Course.Cno = Score.Cno;

-- 第十六题 查询所有学生的Sname、Cname和Degree列。select Sname,Cname,Degree from `Student` join Score on`Student`.Sno = `Score`.Sno join Course on `Course`.Cno = `Score`.Sno;

-- 第十七题 查询“95033”班学生的平均分。(子查询or条件查询)select AVG(Degree) from  `Score` where Sno in(select Sno from `Student` where Class=‘95033‘);

select Avg(Degree) from `Score`,Student where Student.Sno = Score.Sno and Class = ‘95033‘;

-- 第十八题 假设使用如下命令建立了一个grade表:create table `grede`(  `low` int   COMMENT ‘人名‘,  `upp` int not null COMMENT ‘课长‘,  `rank` varchar(20) not null COMMENT ‘等级‘);insert into `grede` values(90,100,‘A‘);insert into `grede` values(80,89,‘B‘);insert into `grede` values(70,79,‘C‘);insert into `grede` values(60,69,‘D‘);insert into `grede` values(0,59,‘E‘);

-- 现查询所有同学的Sno、Cno和rank列。(between选取两个值之间的数据范围)select Sno,Cno,Degree,rank from grede join Score on Score.Degree between    low and upp;

select Sno,Cno,Degree,rank from  Score,grede where Degree between    low and upp;

-- 第十九题 查询选修“3-105”课程的成绩高于“109”号同学成绩的所有同学的记录。select * from Student,Score where Score.Cno = ‘3-105‘ and Student.Sno = Score.Snoand Score.Degree>(select Degree from Score where Cno = ‘3-105‘ and Sno = ‘109‘);

-- 第二十题 查询score中选学多门课程的同学中分数为非最高分成绩的记录。select * from Score a where Degree<(select MAX(Degree)from  Score bwhere a.Cno = b.Cno) and Sno in(select Sno from Score group by  Sno having  count(*) > 1);

-- 第二十一题 查询成绩高于学号为“109”、课程号为“3-105”的成绩的所有记录。select * from Student,Score where Student.Sno = Score.Sno and Score.Degree>(select Degree from Score where Cno=‘3-105‘ and Sno = ‘109‘);

-- 第二十二题 查询和学号为107的同学同年出生的所有学生的Sno、Sname和Sbirthday列。select Sno,Sname,Sbirthday from student where year(Student.Sbirthday) = (    select year(Sbirthday) from student where Sno = ‘107‘    );

-- 第二十三题 查询“张旭“教师任课的学生成绩select Sno,Cno,Degree from Score where Cno in(select Cno from Course where   Tno in(select Tno from Teacher where Tname = ‘张旭‘));

-- 第二十四题 查询选修某课程的同学人数多于5人的教师姓名。select Tname from Teacher where Tno in(select Tno from Course where Cno in(select Cno from Scoregroup by Cno having Count(*)>5));

-- 第二十五题 查询95033班和95031班全体学生的记录。select * from Student where Class = ‘95033‘ or Class = ‘95031‘;

-- 第二十六题 查询存在有85分以上成绩的课程Cno.select distinct cno from Score where Degree>85;

-- 第二十七题 查询出“计算机系“教师所教课程的成绩表。select Sno,Cno,Degree from Score where Cno in(select Cno from Course where Tno in(    select tno from Teacher where Depart = ‘计算机系‘    ));

-- 第二十八题查询“计算机系”与“电子工程系“不同职称的教师的Tname和Prof。使用相关子查询select Tname,Prof from Teacher a where Prof not in(select Prof from Teacher b wherea.Depart!=b.Depart);

-- 第二十九题 查询选修编号为“3-105“课程且成绩至少高于选修编号为“3-245”课程的同学的Cno、Sno和Degree,并按Degree从高到低次序排序。select Cno,Sno,Degree from Score a where (select Degree from Score b where Cno=‘3-105‘ andb.Sno = a.Sno)>=(select Degree from Score c where Cno=‘3-245‘ and c.Sno = a.Sno)order byDegree desc ;

-- 第三十题 查询选修编号为“3-105”课程且成绩高于选修编号为“3-245”课程的同学的Cno、Sno和Degree.select Cno,Sno,Degree from Score a where (select Degree from Score b where Cno=‘3-105‘ andb.Sno=a.Sno)>(select Degree from Score c where Cno=‘3-245‘ and c.Sno=a.Sno);

-- 第三十一题 查询所有教师和同学的name、sex和birthday.select distinct Sname as name,Ssex as sex,Sbirthday as birthday from studentunionselect distinct Tname as name,Tsex as sex,Tbirthday as birthday from Teacher;

-- 第三十二题 查询所有“女”教师和“女”同学的name、sex和birthday.select distinct Sname as name,Ssex as sex,Sbirthday as birthday from student where Ssex = ‘女‘unionselect distinct Tname as name,Tsex as sex,Tbirthday as birthday from Teacher where Tsex = ‘女‘;

-- 第三十三题 查询成绩比该课程平均成绩低的同学的成绩表。select Sno,Cno,Degree from Score a where  a.Degree<(select AVG(Degree) from Score b where a.Cno = b.Cno);

-- 第三十四题 查询所有任课教师的Tname和Depart.select Tname,Depart from Teacher where Tname in(select distinct Tname from Teacher,Course,Score where Teacher.Tno = Course.Tno and Course.Cno = Score.Cno);

select Tname,Depart from Teacher where tno in (select tno from course where Cno in (select distinct Cno from Score));

-- 第三十五题 查询所有未讲课的教师的Tname和Depart.select Tname,Depart from Teacher where Tname not in(select distinct Tname from Teacher,Course,Score where Teacher.Tno=Course.Tno and Course.Cno = Score.Cno);

-- 第三十六题 查询至少有2名男生的班号。select Class from student where Ssex=‘男‘ group by Class having count(*)>1;

-- 第三十七题 查询Student表中不姓“王”的同学记录。select * from Student where Sname not like (‘王%‘);

-- 第三十八题 查询Student表中每个学生的姓名和年龄。select Sname,YEAR(GETDATE())-year(Sbirthday) from student;

-- 第三十九题 查询Student表中最大和最小的Sbirthday日期值select MAX(Sbirthday) as 最大,MIN(Sbirthday) as 最小 from student;

-- 第四十题 以班号和年龄从大到小的顺序查询Student表中的全部记录select * from Student order by Class desc ,Sbirthday asc;

-- 第四十一题 查询“男”教师及其所上的课程。select Tname,Cname from Teacher,Course where Tsex=‘男‘ and Teacher.Tno = Course.Tno;

-- 第四十二题 查询最高分同学的Sno、Cno和Degree列。select Sno,Cno,Degree from Score where Degree=(select MAX(Degree) FROM score);

-- 第四十三题 查询和“李军”同性别的所有同学的Sname.select SName from Student where Ssex=(select Ssex from Student where Sname=‘李军‘)and Snamenot in (‘李军‘);

-- 第四十四题 查询和“李军”同性别并同班的同学Snameselect Sname from Student where Ssex=(select Ssex from Student where Sname=‘李军‘)and Sname not in(‘李军‘)and Class=(select Class from Student where Sname=‘李军‘);

-- 第四十五题 查询所有选修“计算机导论”课程的“男”同学的成绩表select Sno,Degree from Score where Sno in(select Sno from Student where Ssex=‘男‘)and Cno in(select Cno from Course where Cname=‘计算机导论‘);

原文地址:https://www.cnblogs.com/cheng88/p/10585715.html

时间: 2024-07-29 22:10:35

MySQL45道面试题及答案的相关文章

经典71道Android试题及答案

本文为开发者奉献了70道经典Android面试题加答案--重要知识点几乎都涉及到了,你还等啥,赶紧收藏吧!! 1. 下列哪些语句关于内存回收的说明是正确的? (b) A. 程序员必须创建一个线程来释放内存 B. 内存回收程序负责释放无用内存 C. 内存回收程序允许程序员直接释放内存 D. 内存回收程序可以在指定的时间释放内存对象 2. 下面异常是属于Runtime Exception 的是(abcd)(多选) A.ArithmeticException B.IllegalArgumentExce

招人已了,招人心得跟47道面试题加答案放出来

人才济济的iOS开发者,你凭什么脱颖而出? 与岗位要求相去甚远,如何挑战极限? 想去心怡公司,如何马到成功? 那么,你的绝招是什么呢? 在这个iOS岗位供不应求的市场,对iOS开发者对要求日益增长,小编分享一下最近对招人心得,放出47道面试题+答案,供广大iOS开发者参考 底层:1.runloop和线程有什么关系? 2.你是否接触过OC中的反射机制?简单聊一下概念和使用 3.objc中的类方法和实例方法有什么本质区别和联系? 4.runloop的mode作用是什么? 5.1runloop是什么/

招人已了,招人心得跟 47 道面试题加答案放出来

人才济济的 iOS 开发者,你凭什么脱颖而出? 与岗位要求相去甚远,如何挑战极限? 想去心怡公司,如何马到成功? 那么,你的绝招是什么呢? 在这个 iOS 岗位供不应求的市场,对 iOS 开发者对要求日益增长,小编分享一下最近对招人心得,放出 47 道面试题+答案,供广大 iOS 开发者参考 底层: 1.runloop 和线程有什么关系? 2.你是否接触过 OC 中的反射机制?简单聊一下概念和使用 3.objc 中的类方法和实例方法有什么本质区别和联系? 4.runloop 的 mode 作用是

为Java程序员金三银四精心挑选的五十道面试题与答案

1.面向对象的特征有哪些方面? [基础] 答:面向对象的特征主要有以下几个方面: 1)抽象:抽象就是忽略一个主题中与当前目标无关的那些方面,以便更充分地注意与当前目标有关的方面.抽象并不打算了解全部问题,而只是选择其中的一部分,暂时不用部分细节.抽象包括两个方面,一是过程抽象,二是数据抽象. 2)继承:继承是一种联结类的层次模型,并且允许和鼓励类的重用,它提供了一种明确表述共性的方法.对象的一个新类可以从现有的类中派生,这个过程称为类继承.新类继承了原始类的特性,新类称为原始类的派生类(子类),

208道面试题,答案

---恢复内容开始--- 一.Java 基础 1.JDK 和 JRE 有什么区别? 答:JRE是java运行时环境,包含了java虚拟机,java基础类库.是使用java语言编写的程序运行所需要的软件环境,是提供给想运行java程序的用户使用的. JDK是java开发工具包,是程序员使用java语言编写java程序所需的开发工具包,是提供给程序员使用的 2.== 和 equals 的区别是什么? 答:==是比较两个对象的地址,equals是比较连个对象的内容 3.两个对象的 hashCode()

面试题收集-java面试题及答案(基础题122道,代码题19道)

JAVA相关基础知识1.面向对象的特征有哪些方面?1.抽象:抽象就是忽略一个主题中与当前目标无关的那些方面,以便更充分地注意与当前目标有关的方面.抽象并不打算了解全部问题,而只是选择其中的一部分,暂时不用部分细节.抽象包括两个方面,一是过程抽象,二是数据抽象.2.继承:继承是一种联结类的层次模型,并且允许和鼓励类的重用,它提供了一种明确表述共性的方法.对象的一个新类可以从现有的类中派生,这个过程称为类继承.新类继承了原始类的特性,新类称为原始类的派生类(子类),而原始类称为新类的基类(父类).派

面试(4)-spring-Spring面试题和答案

1:69道Spring面试题和答案 转自:http://ifeve.com/spring-interview-questions-and-answers/ 目录 Spring 概述 依赖注入 Spring beans Spring注解 Spring数据访问 Spring面向切面编程(AOP) Spring MVC Spring 概述 1. 什么是spring? Spring 是个java企业级应用的开源开发框架.Spring主要用来开发Java应用,但是有些扩展是针对构建J2EE平台的web应用

java面试题及答案java面试题及答案

java面试题及答案(基础题122道,代码题19道) JAVA相关基础知识1.面向对象的特征有哪些方面 1.抽象:抽象就是忽略一个主题中与当前目标无关的那些方面,以便更充分地注意与当前目标有关的方面.抽象并不打算了解全部问题,而只是选择其中的一部分,暂时不用部分细节.抽象包括两个方面,一是过程抽象,二是数据抽象.2.继承:继承是一种联结类的层次模型,并且允许和鼓励类的重用,它提供了一种明确表述共性的方法.对象的一个新类可以从现有的类中派生,这个过程称为类继承.新类继承了原始类的特性,新类称为原始

Redis面试题及答案

在网上看到有关Redis的50道面试题目,但是没有给出答案,之前我也在寻找这份试题的答案,特地把答案分享出来.有需要的可以看看咯 花了大量时间整理了这套Redis面试题 首发50题,绝无仅有,从入门到精通 从基础,高级知识点,再到集群,运维,方案- 弄明白了这些题可以说可以成为面霸了 面试官都得折服,Redis学得怎么样,都来检验下吧 前面部分是转发来自某篇推文的内容,给大家检索使用 --------------------------------------------------------