MySQL经典五十道题(1-15)
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)相关推荐
- Java面试题系列【5】Mysql经典五十问
有道无术,术尚可求,有术无道,止于术. 资料整理来自网络 文章目录 数据库 1. MySQL 中有哪些不同的表格? 2. 简述在 MySQL 数据库中 MyISAM 和 InnoDB 的区别? 3. ...
- 【校招VIP】数据库基础之sql五十道题
考点介绍: 数据库在测试工程师的面试过程中也是常问的一项.面试有一定的层次性,如bat级别公司每个点都会深入,而有些公司则只会问到表层,所以每个领域都分为必须掌握和深入了解这两个部分. 本期分享的数据 ...
- MySQL灵魂五十问
1.MySQL 中有哪几种锁? 表级锁:开销小,加锁快:不会出现死锁:锁定粒度大,发生锁冲突的概率最高,并发度最低. 行级锁:开销大,加锁慢:会出现死锁:锁定粒度最小,发生锁冲突的概率最低,并发度也最 ...
- 千道Java面试真题整理系列:MySQL灵魂五十问,在遇面试也不怕.
1.MySQL 中有哪几种锁? 1.表级锁:开销小,加锁快:不会出现死锁:锁定粒度大,发生锁冲突的概率最高,并发度最低. 2.行级锁:开销大,加锁慢:会出现死锁:锁定粒度最小,发生锁冲突的概率最低,并 ...
- 千道Java面试真题整理系列:MySQL灵魂五十问,在遇面试也不怕!
1.MySQL 中有哪几种锁? 表级锁:开销小,加锁快:不会出现死锁:锁定粒度大,发生锁冲突的概率最高,并发度最低. 行级锁:开销大,加锁慢:会出现死锁:锁定粒度最小,发生锁冲突的概率最低,并发度也最 ...
- 专家推荐面渣逆袭:JVM经典五十问,这下面试稳了
1.什么是JVM? JVM--Java虚拟机,它是Java实现平台无关性的基石. Java程序运行的时候,编译器将Java文件编译成平台无关的Java字节码文件(.class),接下来对应平台JVM对 ...
- 收藏!图解JVM经典五十问,这下面试稳了!
「 关注"石杉的架构笔记",大厂架构经验倾囊相授 」 "从零开始带你成为JVM实战高手" 免费加餐啦! 点击查看 专栏目录 [文章来源][公众号:三分恶 ] 大 ...
- Java面试题系列【1】JAVA初级经典五十问
有道无术,术尚可求,有术无道,止于术. 资料整理来自网络 文章目录 1. JDK.JRE.JVM 有什么区别 2. == 和 equals 有什么区别 3. String类可以被继承吗? 4. Str ...
- JVM经典五十问,这下面试稳了
引言 1.什么是JVM? JVM--Java虚拟机,它是Java实现平台无关性的基石. Java程序运行的时候,编译器将Java文件编译成平台无关的Java字节码文件(.class),接下来对应平台J ...
最新文章
- 2022-2028年中国汽车工业行业研究及前瞻分析报告
- C语言新手写扫雷攻略3
- vue 动态生成路由菜单(从后端请求到菜单数据,生成左侧菜单栏)
- poj 1006 java_POJ 1006 Biorhythms 数论-(孙子定理)
- 机器学习:结点的实现,决策树代码实现(二)
- linux下运行yolo,Ubuntu下CPU/GPU模式YOLOv3代码运行
- android aoa 串口,沁恒股份USB Android AOA转接概述
- Keepalive工作原理
- c语言循环嵌套说课,C语言FOR循环说课稿.doc
- PAT 乙级 1042. 字符统计(20) Java版
- Exchange管理界面
- 安卓机型app的编译与反编译 apk文件的简单说明与解析
- 彻底搞懂虚拟地址翻译为物理地址的过程
- 关于 Windows 桌面图标显示为空白的解决方法
- java 时间显示毫秒_Java程序以毫秒为单位显示日期和时间
- 怎么将小程序添加到我的小程序?
- (转)少儿编程这么火, 究竟学哪一种语言最靠谱?这篇文章说透了!
- STATA面板数据模型进行Hausman检验
- 为什么你微信公众号的阅读量越来越低了?
- 三星Android Pie软件,至少在AndroidPie版本上的三星GalaxyS9现在具有缺陷检测功能