MySql经典五十道题

先放sql创建文件:

学生,老师,成绩,课程表:

/*
SQLyog Ultimate v12.3.1 (64 bit)
MySQL - 5.6.50 : Database - mytest
*********************************************************************
*//*!40101 SET NAMES utf8 */;/*!40101 SET SQL_MODE=''*/;/*!40014 SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0 */;
/*!40014 SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0 */;
/*!40101 SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='NO_AUTO_VALUE_ON_ZERO' */;
/*!40111 SET @OLD_SQL_NOTES=@@SQL_NOTES, SQL_NOTES=0 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/`mytest` /*!40100 DEFAULT CHARACTER SET utf8 COLLATE utf8_bin */;USE `mytest`;/*Table structure for table `course` */DROP TABLE IF EXISTS `course`;CREATE TABLE `course` (`cid` varchar(10) NOT NULL COMMENT '课程ID',`cName` varchar(10) DEFAULT NULL COMMENT '课程名称',`tid` int(20) DEFAULT NULL COMMENT '教师ID',PRIMARY KEY (`cid`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='课程表';/*Data for the table `course` */insert  into `course`(`cid`,`cName`,`tid`) values ('001','企业管理',3),('002','马克思',3),('003','UML',2),('004','数据库',1),('005','英语',1);/*Table structure for table `sc` */DROP TABLE IF EXISTS `sc`;CREATE TABLE `sc` (`sid` varchar(10) DEFAULT NULL COMMENT '学生ID',`cid` varchar(10) DEFAULT NULL COMMENT '课程ID',`score` int(10) DEFAULT NULL COMMENT '成绩'
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='成绩表';/*Data for the table `sc` */insert  into `sc`(`sid`,`cid`,`score`) values ('1001','001',80),('1001','002',60),('1001','003',75),('1002','001',85),('1002','002',70),('1003','004',100),('1003','001',90),('1003','002',55),('1004','002',65),('1003','003',60);/*Table structure for table `student` */DROP TABLE IF EXISTS `student`;CREATE TABLE `student` (`sid` varchar(10) NOT NULL COMMENT '主键`student`',`sName` varchar(20) DEFAULT NULL COMMENT '姓名',`sAge` datetime DEFAULT '1980-10-12 23:12:36' COMMENT '出生日期',`sSex` varchar(10) DEFAULT NULL COMMENT '性别',PRIMARY KEY (`sid`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='学生表';/*Data for the table `student` */insert  into `student`(`sid`,`sName`,`sAge`,`sSex`) values ('1001','张三丰','1980-10-12 23:12:36','男'),('1002','张无极','1995-10-12 23:12:36','男'),('1003','李奎','1992-10-12 23:12:36','女'),('1004','李元宝','1980-10-12 23:12:36','女'),('1005','李世明','1981-10-12 23:12:36','男'),('1006','赵六','1986-10-12 23:12:36','男'),('1007','田七','1981-10-12 23:12:36','女');/*Table structure for table `teacher` */DROP TABLE IF EXISTS `teacher`;CREATE TABLE `teacher` (`tid` int(10) DEFAULT NULL COMMENT '教师ID',`tName` varchar(10) DEFAULT NULL COMMENT '教师姓名'
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='教师表';/*Data for the table `teacher` */insert  into `teacher`(`tid`,`tName`) values (1,'李老师'),(2,'何以琛'),(3,'叶平'),(4,'李四'),(5,'李梅');/*!40101 SET SQL_MODE=@OLD_SQL_MODE */;
/*!40014 SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS */;
/*!40014 SET UNIQUE_CHECKS=@OLD_UNIQUE_CHECKS */;
/*!40111 SET SQL_NOTES=@OLD_SQL_NOTES */;

-- 1.    查询“001”课程比“002”课程成绩高的所有学生的学号;

SELECT a.SId FROM Sc a, Sc b
WHERE a.SId = b.SId
AND a.CId = '001'
AND b.CId = '002'
AND a.Score > b.Score;

-- 2.    查询平均成绩大于60分的同学的学号和平均成绩;

SELECT SId,AVG(Score)
FROM sc
GROUP BY SId HAVING AVG(Score)>60;

-- 3.    查询所有同学的学号、姓名、选课数、总成绩;

SELECT
SId, SName,
(SELECT COUNT(CId) FROM sc t1 WHERE t1.SId = s1.SId) course_count,
(SELECT SUM(Score) FROM sc t2 WHERE t2.SId = s1.SId) sum_score
FROM
student s1;

-- 4.    查询姓“李”的老师的个数;

SELECT COUNT(Tname) FROM teacher WHERE Tname LIKE '李%';

-- 5.    查询没学过“叶平”老师课的同学的学号、姓名;

SELECT
SId,
SName
FROM
student
WHERE SId NOT in(SELECT s.SId FROMteacher t,sc s,   course cWHEREt.Tname = '叶平'AND c.TId = t.TIdAND c.CId = s.CId
);

-- 6.    查询学过“001”并且也学过编号“002”课程的同学的学号、姓名;

SELECT
st.SId,
st.SName
FROM(SELECT t1.SId AS SIdFROM (SELECT s1.SId FROM sc s1 WHERE s1.CId = '001')t1,(SELECT s2.SId FROM sc s2 WHERE s2.CId = '002')t2WHEREt1.SId = t2.SId
)stu, student st
WHERE
stu.SId = st.SId

-- 7.    查询学过“叶平”老师所教的所有课的同学的学号、姓名;

SELECT st.SId, st.SName
FROM teacher t, sc s, student st, course c
WHERE t.Tname = '叶平' AND c.TId=t.TId AND c.CId=s.CId AND s.SId = st.SId

-- 8.    查询课程编号“002”的成绩比课程编号“001”课程低的所有同学的学号、姓名;

SELECT a.SId FROM Sc a, Sc b
WHERE a.SId = b.SId
AND a.CId = '001'
AND b.CId = '002'
AND a.Score < b.Score

-- 9.    查询所有课程成绩小于60分的同学的学号、姓名;

SELECT
SId, SName
FROM
student
WHERE SId NOT IN(SELECT SIdFROM scWHEREScore > 60
)

-- 10.    查询没有学全所有课的同学的学号、姓名;

SELECT stu.SId, stu.SName FROM
student stu,
(SELECT COUNT(CId) as number FROM course)t1,
(SELECT SId,COUNT(CId) as number FROM sc GROUP BY SId)t2
WHERE
t1.number > t2.number AND t2.SId = stu.SId

--11.查询至少有一门课与学号为“1001”的同学所学相同的同学的学号和姓名;

select sid,Sname
from Student,SC
where Student.sid=SC.sid and cid in (select cid from SC where sid='1001'); 

--12.把“SC”表中“叶平”老师教的课的成绩都更改为此课程的平均成绩;

update sc,(SELECT c.cid,AVG(score) avgs
from sc,course c,teacher t
where sc.cid = c.cid AND
c.tid = t.tid AND t.tName = '叶平' GROUP BY c.cid)sc_2 SET sc.score = sc_2.avgs WHERE sc.cid = sc_2.cid

--13.查询和“1002”号的同学学习的课程完全相同的其他同学学号和姓名;

select sid from SC where cid in (select cid from SC where sid='1002')
group by sid having count(*)=(select count(*) from SC where sid='1002'); 

--14.删除学习“叶平”老师课的SC表记录;

delete  from sc
where sc.cid IN (SELECT sc.cid FROM course c ,teacher t WHERE sc.cid = c.cid AND c.tid = t.tid AND t.tName = '叶平')

--15.按平均成绩从高到低显示所有学生的“数据库”、“企业管理”、“英语”三门的课程成绩,
按如下形式显示: 学生ID,,数据库,企业管理,英语,有效课程数,有效平均分;

SELECT sid as 学生ID
,(SELECT score FROM SC WHERE SC.sid=t.sid AND cid='004') AS 数据库
,(SELECT score FROM SC WHERE SC.sid=t.sid AND cid='001') AS 企业管理
,(SELECT score FROM SC WHERE SC.sid=t.sid AND cid='005') AS 英语
,COUNT(*) AS 有效课程数, AVG(t.score) AS 平均成绩
FROM SC AS t  GROUP BY sid ORDER BY avg(t.score) 

MySQL经典五十道题(1-15)相关推荐

  1. Java面试题系列【5】Mysql经典五十问

    有道无术,术尚可求,有术无道,止于术. 资料整理来自网络 文章目录 数据库 1. MySQL 中有哪些不同的表格? 2. 简述在 MySQL 数据库中 MyISAM 和 InnoDB 的区别? 3. ...

  2. 【校招VIP】数据库基础之sql五十道题

    考点介绍: 数据库在测试工程师的面试过程中也是常问的一项.面试有一定的层次性,如bat级别公司每个点都会深入,而有些公司则只会问到表层,所以每个领域都分为必须掌握和深入了解这两个部分. 本期分享的数据 ...

  3. MySQL灵魂五十问

    1.MySQL 中有哪几种锁? 表级锁:开销小,加锁快:不会出现死锁:锁定粒度大,发生锁冲突的概率最高,并发度最低. 行级锁:开销大,加锁慢:会出现死锁:锁定粒度最小,发生锁冲突的概率最低,并发度也最 ...

  4. 千道Java面试真题整理系列:MySQL灵魂五十问,在遇面试也不怕.

    1.MySQL 中有哪几种锁? 1.表级锁:开销小,加锁快:不会出现死锁:锁定粒度大,发生锁冲突的概率最高,并发度最低. 2.行级锁:开销大,加锁慢:会出现死锁:锁定粒度最小,发生锁冲突的概率最低,并 ...

  5. 千道Java面试真题整理系列:MySQL灵魂五十问,在遇面试也不怕!

    1.MySQL 中有哪几种锁? 表级锁:开销小,加锁快:不会出现死锁:锁定粒度大,发生锁冲突的概率最高,并发度最低. 行级锁:开销大,加锁慢:会出现死锁:锁定粒度最小,发生锁冲突的概率最低,并发度也最 ...

  6. 专家推荐面渣逆袭:JVM经典五十问,这下面试稳了

    1.什么是JVM? JVM--Java虚拟机,它是Java实现平台无关性的基石. Java程序运行的时候,编译器将Java文件编译成平台无关的Java字节码文件(.class),接下来对应平台JVM对 ...

  7. 收藏!图解JVM经典五十问,这下面试稳了!

    「 关注"石杉的架构笔记",大厂架构经验倾囊相授 」 "从零开始带你成为JVM实战高手" 免费加餐啦! 点击查看 专栏目录 [文章来源][公众号:三分恶 ] 大 ...

  8. Java面试题系列【1】JAVA初级经典五十问

    有道无术,术尚可求,有术无道,止于术. 资料整理来自网络 文章目录 1. JDK.JRE.JVM 有什么区别 2. == 和 equals 有什么区别 3. String类可以被继承吗? 4. Str ...

  9. JVM经典五十问,这下面试稳了

    引言 1.什么是JVM? JVM--Java虚拟机,它是Java实现平台无关性的基石. Java程序运行的时候,编译器将Java文件编译成平台无关的Java字节码文件(.class),接下来对应平台J ...

最新文章

  1. 2022-2028年中国汽车工业行业研究及前瞻分析报告
  2. C语言新手写扫雷攻略3
  3. vue 动态生成路由菜单(从后端请求到菜单数据,生成左侧菜单栏)
  4. poj 1006 java_POJ 1006 Biorhythms 数论-(孙子定理)
  5. 机器学习:结点的实现,决策树代码实现(二)
  6. linux下运行yolo,Ubuntu下CPU/GPU模式YOLOv3代码运行
  7. android aoa 串口,沁恒股份USB Android AOA转接概述
  8. Keepalive工作原理
  9. c语言循环嵌套说课,C语言FOR循环说课稿.doc
  10. PAT 乙级 1042. 字符统计(20) Java版
  11. Exchange管理界面
  12. 安卓机型app的编译与反编译 apk文件的简单说明与解析
  13. 彻底搞懂虚拟地址翻译为物理地址的过程
  14. 关于 Windows 桌面图标显示为空白的解决方法
  15. java 时间显示毫秒_Java程序以毫秒为单位显示日期和时间
  16. 怎么将小程序添加到我的小程序?
  17. (转)少儿编程这么火, 究竟学哪一种语言最靠谱?这篇文章说透了!
  18. STATA面板数据模型进行Hausman检验
  19. 为什么你微信公众号的阅读量越来越低了?
  20. 三星Android Pie软件,至少在AndroidPie版本上的三星GalaxyS9现在具有缺陷检测功能

热门文章

  1. 【艾特淘】如何才能入池淘宝“猜你喜欢”?
  2. Netty入门-第二话
  3. mapbox 分屏对比
  4. 《AUTOSAR谱系分解(ETAS工具链)》之System Info
  5. jenkins introduction
  6. 计算机中的tnr是什么函数,Noise reduction in low light -TNR算法
  7. C语言之运算符 (笔记)
  8. 揭秘连环销售的秘密,打造客户的重复购买次数
  9. ASP.NET之电子商务系统开发-2(购物车功能)
  10. Boost.Build 简明教程