课程数据表course

SET NAMES utf8mb4;
SET FOREIGN_KEY_CHECKS = 0; -- ----------------------------
-- Table structure for course
-- ----------------------------
DROP TABLE IF EXISTS `course`;
CREATE TABLE `course` (
`cno` varchar(5) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL,
`cname` varchar(100) CHARACTER SET utf8 COLLATE utf8_bin NULL DEFAULT NULL,
`cperiod` int NULL DEFAULT NULL,
`credit` float NULL DEFAULT NULL,
`ctno` varchar(10) CHARACTER SET utf8 COLLATE utf8_bin NULL DEFAULT NULL,
PRIMARY KEY (`cno`) USING BTREE
) ENGINE = InnoDB CHARACTER SET = utf8 COLLATE = utf8_bin ROW_FORMAT = Dynamic; -- ----------------------------
-- Records of course
-- ----------------------------
INSERT INTO `course` VALUES ('c001', '文学欣赏', 40, 1.5, 't001');
INSERT INTO `course` VALUES ('c002', '中国历史文化', 60, 2, 't003');
INSERT INTO `course` VALUES ('c003', '视频编辑', 70, 2.5, 't002');
INSERT INTO `course` VALUES ('c004', '音乐欣赏', 40, 1.5, 't004'); SET FOREIGN_KEY_CHECKS = 1;

学生选课成绩表elective

SET NAMES utf8mb4;
SET FOREIGN_KEY_CHECKS = 0; -- ----------------------------
-- Table structure for elective
-- ----------------------------
DROP TABLE IF EXISTS `elective`;
CREATE TABLE `elective` (
`sno` int NULL DEFAULT NULL,
`cno` varchar(100) CHARACTER SET utf8 COLLATE utf8_bin NULL DEFAULT NULL,
`score` varchar(100) CHARACTER SET utf8 COLLATE utf8_bin NULL DEFAULT NULL
) ENGINE = InnoDB CHARACTER SET = utf8 COLLATE = utf8_bin ROW_FORMAT = Dynamic; -- ----------------------------
-- Records of elective
-- ----------------------------
INSERT INTO `elective` VALUES (4, 'c004', '80');
INSERT INTO `elective` VALUES (5, 'c002', '60');
INSERT INTO `elective` VALUES (6, 'c004', '99');
INSERT INTO `elective` VALUES (7, 'c004', '89');
INSERT INTO `elective` VALUES (8, 'c002', '59');
INSERT INTO `elective` VALUES (9, 'c002', '40');
INSERT INTO `elective` VALUES (4, 'c001', '88');
INSERT INTO `elective` VALUES (5, 'c001', '78');
INSERT INTO `elective` VALUES (1, 'c002', '88');
INSERT INTO `elective` VALUES (1, 'c003', '79');
INSERT INTO `elective` VALUES (1, 'c004', '80');
INSERT INTO `elective` VALUES (2, 'c001', '99');
INSERT INTO `elective` VALUES (2, 'c002', '97');
INSERT INTO `elective` VALUES (2, 'c003', '98');
INSERT INTO `elective` VALUES (2, 'c004', '95');
INSERT INTO `elective` VALUES (3, 'c001', '82');
INSERT INTO `elective` VALUES (3, 'c002', '87');
INSERT INTO `elective` VALUES (3, 'c003', '96');
INSERT INTO `elective` VALUES (3, 'c004', '78');
INSERT INTO `elective` VALUES (4, 'c003', '89');
INSERT INTO `elective` VALUES (4, 'c002', '67'); SET FOREIGN_KEY_CHECKS = 1;

学生表studentinfo

SET NAMES utf8mb4;
SET FOREIGN_KEY_CHECKS = 0; -- ----------------------------
-- Table structure for studentinfo
-- ----------------------------
DROP TABLE IF EXISTS `studentinfo`;
CREATE TABLE `studentinfo` (
`sno` int NOT NULL,
`sname` varchar(255) CHARACTER SET utf8 COLLATE utf8_bin NULL DEFAULT NULL,
`sgender` varchar(255) CHARACTER SET utf8 COLLATE utf8_bin NULL DEFAULT NULL,
`sbirth` date NULL DEFAULT NULL,
`sclass` varchar(255) CHARACTER SET utf8 COLLATE utf8_bin NULL DEFAULT NULL,
PRIMARY KEY (`sno`) USING BTREE
) ENGINE = InnoDB CHARACTER SET = utf8 COLLATE = utf8_bin ROW_FORMAT = Dynamic; -- ----------------------------
-- Records of studentinfo
-- ----------------------------
INSERT INTO `studentinfo` VALUES (1, '李丹', '女', '1998-07-10', '网络技术2');
INSERT INTO `studentinfo` VALUES (2, '赵蛋', '男', '1990-12-26', '电子商务2');
INSERT INTO `studentinfo` VALUES (3, '薛兆丰', '男', '1999-07-16', '软件开发1');
INSERT INTO `studentinfo` VALUES (4, '李大嘴', '男', '1995-04-08', '电子商务2');
INSERT INTO `studentinfo` VALUES (5, '李样', '女', '1998-02-04', '网络技术1');
INSERT INTO `studentinfo` VALUES (6, '王撕葱', '男', '1991-01-04', '电子商务2');
INSERT INTO `studentinfo` VALUES (7, '郑板桥', '女', '1991-08-08', '软件开发3');
INSERT INTO `studentinfo` VALUES (8, '马东', '男', '1991-08-09', '软件开发3');
INSERT INTO `studentinfo` VALUES (9, '马晓东', '男', '1991-03-04', '软件开发2'); SET FOREIGN_KEY_CHECKS = 1;

教师表teacher

SET NAMES utf8mb4;
SET FOREIGN_KEY_CHECKS = 0; -- ----------------------------
-- Table structure for teacher
-- ----------------------------
DROP TABLE IF EXISTS `teacher`;
CREATE TABLE `teacher` (
`tno` varchar(10) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL,
`tname` varchar(10) CHARACTER SET utf8 COLLATE utf8_bin NULL DEFAULT NULL,
`tgender` varchar(2) CHARACTER SET utf8 COLLATE utf8_bin NULL DEFAULT NULL,
`tedu` varchar(10) CHARACTER SET utf8 COLLATE utf8_bin NULL DEFAULT NULL,
PRIMARY KEY (`tno`) USING BTREE
) ENGINE = InnoDB CHARACTER SET = utf8 COLLATE = utf8_bin ROW_FORMAT = Dynamic; -- ----------------------------
-- Records of teacher
-- ----------------------------
INSERT INTO `teacher` VALUES ('t001', '吴亚飞', '男', '本科');
INSERT INTO `teacher` VALUES ('t002', '李琦', '男', '硕士');
INSERT INTO `teacher` VALUES ('t003', '王艳红', '女', '硕士');
INSERT INTO `teacher` VALUES ('t004', '马志超', '男', '博士');
INSERT INTO `teacher` VALUES ('t005', '万丽', '女', '硕士'); SET FOREIGN_KEY_CHECKS = 1;
-- -------------------统计查询-------------------------------------------

-- 统计男生 和女生人数
SELECT sgender,COUNT(*) AS 人数
FROM studentinfo
GROUP BY sgender
-- 查询elective表,统计并输出每个学生所选课程数目及平均分。
SELECT sno,COUNT(cno) AS 选修课程数目, AVG(score) AS 平均分 FROM elective
GROUP BY sno -- 查询elective表,统计并输出每门课程所选学生人数及最高分。
SELECT cno , COUNT(sno), MAX(score) FROM elective
GROUP BY cno -- 查询elective表中每门课成绩都在70~90分的学生的学号。
SELECT sno FROM elective GROUP BY sno HAVING MIN(score)>=70 AND MAX(score)<=90 -- 查询至少选修了三门课程的学生的学号。
SELECT sno,COUNT(*) AS 选修课程大于等于三 FROM elective GROUP BY sno HAVING COUNT(*)>=3 -- --------------多表查询---------------------------------------------
-- 交叉连接 CROSS JOIN
SELECT * FROM course CROSS JOIN teacher --
SELECT * FROM course LEFT JOIN teacher ON course.ctno = teacher.tno
-- 查询“学生选课”数据库,输出考试成绩不及格学生的学号、姓名、课程号、成绩。
SELECT st.sno,st.sname,el.cno,el.score FROM studentinfo st JOIN elective el ON st.sno = el.sno WHERE el.score < 60 ; -- 查询“学生选课”数据库,输出考试成绩不及格学生的学号、姓名、课程名、成绩。
SELECT
st.sno,
st.sname,
co.cname,
el.score
FROM
studentinfo AS st
JOIN elective AS el ON st.sno = el.sno
JOIN course AS co ON el.cno = co.cno
WHERE el.score<60 ;
-- 或者如下
SELECT
st.sno,
st.sname,
co.cname,
el.score
FROM
studentinfo AS st , elective AS el , course AS co WHERE st.sno = el.sno AND el.cno = co.cno
AND el.score<60 -- 查询“学生选课”数据库,输出所有教师教授的课程信息,没有教授课程的教师也要列出。
SELECT * FROM teacher AS t LEFT JOIN course AS c ON t.tno = c.ctno -- 查询和学号为*****的学生在同一个班级的学生的学号和姓名 SELECT s2.sno , s2.sname FROM studentinfo AS s JOIN studentinfo AS s2 ON s.sclass = s2.sclass WHERE s.sno = 8 AND
s2.sno != 8 -----------------子查询-------------------------------------------
-- 查询“学生选课”数据库,输出选修了“音乐欣赏”这门课的所有学生的学号和成绩。
SELECT e.sno,e.score FROM elective AS e WHERE e.cno = (SELECT cno FROM course WHERE cname = '音乐欣赏')
-- 查询“学生选课”数据库,输出选修了“音乐欣赏”这门课的所有学生的姓名,学号和成绩。
SELECT s.sname,e.sno,e.score FROM elective AS e
LEFT JOIN studentinfo AS s ON e.sno = s.sno
WHERE e.cno = (SELECT cno FROM course WHERE cname = '音乐欣赏') -- 查询“学生选课”数据库,输出年龄最大的学生的姓名。
SELECT MIN(sbirth) FROM studentinfo SELECT sname FROM studentinfo WHERE sbirth = ( SELECT MIN(sbirth) FROM studentinfo )
-- 查询“学生选课”数据库,输出“中国历史文化”这门课不及格的学生的姓名。
SELECT cno FROM course WHERE cname = '中国历史文化' SELECT s.sname AS 中国历史文化成绩不及格名单 FROM elective AS e
LEFT JOIN studentinfo s ON s.sno = e.sno
WHERE e.score < 60 AND e.cno = (SELECT cno FROM course WHERE cname = '中国历史文化'); -- 查询“学生选课”数据库,输出考试不及格的学生的姓名。 SELECT sname AS 考试成绩不合格 FROM studentinfo WHERE sno IN (SELECT sno FROM elective WHERE score < 60);
-- 查看“学生选课”数据库的teacher表,若不存在具有教授职称的教师,则显示所有教师的姓名和职称。
SELECT * FROM teacher WHERE NOT EXISTS(SELECT * FROM teacher WHERE tedu = '教授'); -- 查询“学生选课”数据库的elective表,如果有需要补考的,就显示所有学生的成绩信息。如果没有需要补考的,就不输出任何信息。 SELECT * FROM elective WHERE EXISTS(SELECT * FROM elective WHERE score < 60); -- ------------------------------------索引-------------------------------
-- 1.创建表的时候创建索引
-- 2.在已经存在的表上使用CREATE INDEX语句创建索引
-- CREATE [UNIQUE] [FULLTEXT] [SPATIAL] INDEX索引名 ON 表名(字段名[(长度)] [ASC | DESC]) -- 3.在已经存在的表上使用ALTER TABLE语句创建索引
-- ALTER TABLE 表名 ADD [UNIQUE] [FULLTEXT] [SPATIAL] INDEX索引名(字段名[(长度)] [ASC | DESC])
-- 给学生表 的学生姓名添加普通索引 CREATE INDEX stu_name ON studentinfo(sname); EXPLAIN SELECT sname FROM studentinfo SHOW CREATE TABLE studentinfo -- (1)使用DROP INDEX删除索引
DROP INDEX 索引名字 ON 表名 DROP INDEX stu_name ON studentinfo -- (2)使用ALETR TABLE删除索引
ALETR TABLE 表名 DROP INDEX 索引名字 ALETR TABLE studentinfo DROP INDEX stu_name; --------------------视图-------------------------------------------------------

  

mysql统计查询和索引练习的更多相关文章

  1. 【mysql】mysql统计查询count的效率优化问题

    mysql统计查询count的效率优化问题 涉及到一个问题 就是 mysql的二级索引的问题,聚簇索引和非聚簇索引 引申地址:https://www.cnblogs.com/sxdcgaq8080/p ...

  2. 关于阿里云Mysql分页查询不走索引的问题

    需要修改阿里云中的MYSQL 配置参数 : eq_range_index_dive_limit 阿里云上默认是 10 , 这个参数 表示 in 查询 条件超过 10 个 就不走索引,走全表扫描.如果我 ...

  3. MySQL高级查询之索引创建、删除、增加、修改、慢sql、explain解释sql

    day04数据库 昨日知识点回顾 1.单表操作 1.单表的操作 条件查询的优先级别: where > group by >having > order by > limit; ...

  4. mysql延迟查询, 覆盖索引使用例子

    引用自 'mysql高性能' 5.3.6章节 不能使用覆盖索引的情况 :  解决办法 : 

  5. MySQL like查询使用索引

    在使用msyql进行模糊查询的时候,很自然的会用到like语句,通常情况下,在数据量小的时候,不容易看出查询的效率,但在数据量达到百万级,千万级的时候,查询的效率就很容易显现出来.这个时候查询的效率就 ...

  6. Mysql 统计查询

    SELECT ub.telphone, SUM(IF(b.type = 1 AND b.level = 1, 1, 0)) AS type11, SUM(IF(b.type = 1 AND b.lev ...

  7. mysql 统计查询出来的数目

    select count(*) as dd from users;

  8. Mysql数据库表排序规则不一致导致联表查询,索引不起作用问题

    Mysql数据库表排序规则不一致导致联表查询,索引不起作用问题 表更描述: 将mysql数据库中的worktask表添加ishaspic字段. 具体操作:(1)数据库worktask表新添是否有图片字 ...

  9. MySQL多表查询之外键、表连接、子查询、索引

    MySQL多表查询之外键.表连接.子查询.索引 一.外键: 1.什么是外键 2.外键语法 3.外键的条件 4.添加外键 5.删除外键 1.什么是外键: 主键:是唯一标识一条记录,不能有重复的,不允许为 ...

  10. mysql统计类似SQL语句查询次数

    mysql统计类似SQL语句查询次数 vc-mysql-sniffer 工具抓取的sql分析. 1.先用shell脚本把所有enter符号替换为null,再根据语句前后的字符分隔语句 grep -Ev ...

随机推荐

  1. 【Azure Developer】Java代码访问Key Vault Secret时候的认证问题,使用 DefaultAzureCredentialBuilder 或者 ClientSecretCredentialBuilder

    问题描述 使用Java SDK获取Key Vault Secret机密信息时,需要获取授权.通常是使用AAD的注册应用(Client ID, Tenant ID, Client Secret)来获取  ...

  2. 【Azure 应用服务】Azure Function (PowerShell) 执行时报错 "out of memory"

    问题描述 在Azure Function App服务中,创建一个PowerShell脚本的函数,遇见了OOM(Out Of Memory)的异常报错: 2022-01-10T07:44:37 Welc ...

  3. ASP.NET Core 从入门到精通-资源收集导航

    ASP.NET Core 从入门到精通-资源收集导航 目录 ASP.NET Core 从入门到精通-资源收集导航 学习路线 学习路线资源导航大全 1,介绍 2,入门 3,教程 创建 Razor 页面 ...

  4. Java interface 接口 新特性

    1 package com.bytezreo.interfacetest; 2 3 public class SubClass2 { 4 public static void main(String[ ...

  5. C++ //deque容器 构造函数 //deque赋值操作 //deque大小操作 //重新指定大小 //deque没有容量概念 //deque插入和删除 //deque 容器数据存取 ////deque 排序 sotr算法

    1 //deque容器 构造函数 //deque赋值操作 //deque大小操作 //重新指定大小 2 //deque没有容量概念 //deque插入和删除 //deque 容器数据存取 3 //// ...

  6. CSV转Excel,命中关键词标红

    CSV转Excel,命中关键词标红 package com.wenwo.schedule.job.mainJob; import java.io.ByteArrayOutputStream; impo ...

  7. CF1362C Johnny and Another Rating Drop(二进制、复杂度考虑)

    看完数据范围\(n\in[1,1e18]\)就可以先猜一下要不是可以直接推公式,不能暴力去做,更不能遍历一遍,又看到这种2进制的题目,要猜是不是\(log\)级别的复杂度. 可以依次考虑每一位 \(所 ...

  8. Android学习之文件存储

    •前言 任何一个应用程序,其实说白了就是在不停地和数据打交道,我们聊QQ.看新闻.刷微博,所关心的都是里面的数据, 没有数据的应用程序就变成了一个空壳子,对用户来说没有任何实际用途. 那么这些数据都是 ...

  9. iview Input 必填不能未空 不能输入空格 v-model.trim required: true

    iview Input 必填不能未空 不能输入空格 v-model.trim required: true 需求 测试在验证必填的时候,会输入一个空格,本着空格不算内容的原则,会提一个bug 解决方案 ...

  10. InputRegZen.vue 正则Input 限制输入框输入内容

    核心内容 已经 perfect,没有用外库,原生完成 用的 iview的Input组件 封装 // InputRegZen.vue <template> <div> <I ...