你与写的一手好sql的大佬可能就差这一道题!

简介: 你与写的一手好sql的大佬可能就差这一道题!

你与写的一手好sql的大佬可能就差这一道题!



1:建表语句

1.1:课程表
SET FOREIGN_KEY_CHECKS=0;
-- ----------------------------
-- Table structure for `c`
-- ----------------------------
DROP TABLE IF EXISTS `c`;
CREATE TABLE `c` (
  `CNO` int(11) NOT NULL DEFAULT '0' COMMENT '课程号',
  `CNAME` varchar(11) DEFAULT NULL COMMENT '课程名称',
  `CTEACHER` varchar(11) DEFAULT NULL COMMENT '课程老师名称',
  PRIMARY KEY (`CNO`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
-- ----------------------------
-- Records of c
-- ----------------------------
INSERT INTO `c` VALUES ('1', '科学', '科学老师');
INSERT INTO `c` VALUES ('2', '编程', '编程老师');
INSERT INTO `c` VALUES ('3', '美术', '何炅老师');
1.2:学生表
SET FOREIGN_KEY_CHECKS=0;
-- ----------------------------
-- Table structure for `s`
-- ----------------------------
DROP TABLE IF EXISTS `s`;
CREATE TABLE `s` (
  `SNO` int(11) NOT NULL DEFAULT '0' COMMENT '学号',
  `SNAME` varchar(11) DEFAULT NULL,
  `AGE` int(2) DEFAULT NULL,
  `SEX` int(1) DEFAULT NULL COMMENT '0-女 1-男',
  PRIMARY KEY (`SNO`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
-- ----------------------------
-- Records of s
-- ----------------------------
INSERT INTO `s` VALUES ('1', '张三', '1', '1');
INSERT INTO `s` VALUES ('2', '李四', '2', '1');
INSERT INTO `s` VALUES ('3', '小丽', '3', '0');
INSERT INTO `s` VALUES ('4', '小花', '4', '0');
INSERT INTO `s` VALUES ('5', '王二麻子', '5', '1');
1.3:学生和课程关系表
SET FOREIGN_KEY_CHECKS=0;
-- ----------------------------
-- Table structure for `sc`
-- ----------------------------
DROP TABLE IF EXISTS `sc`;
CREATE TABLE `sc` (
  `SNO` int(11) DEFAULT NULL COMMENT '学号',
  `CNO` int(22) DEFAULT NULL COMMENT '课程号',
  `SCGRADE` decimal(11,2) DEFAULT NULL COMMENT '成绩'
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
-- ----------------------------
-- Records of sc
-- ----------------------------
INSERT INTO `sc` VALUES ('1', '1', '70.00');
INSERT INTO `sc` VALUES ('1', '2', '56.00');
INSERT INTO `sc` VALUES ('1', '3', '90.00');
INSERT INTO `sc` VALUES ('2', '1', '2.00');
INSERT INTO `sc` VALUES ('2', '3', '70.00');
INSERT INTO `sc` VALUES ('3', '3', '60.00');
INSERT INTO `sc` VALUES ('4', '3', '90.00');
INSERT INTO `sc` VALUES ('2', '2', '56.00');
INSERT INTO `sc` VALUES ('3', '1', '45.00');
INSERT INTO `sc` VALUES ('3', '2', '12.00');
INSERT INTO `sc` VALUES ('4', '1', '22.00');
INSERT INTO `sc` VALUES ('4', '2', '55.00');
1.4:学生和课程关系拓展表
SET FOREIGN_KEY_CHECKS=0;
-- ----------------------------
-- Table structure for `sc_c`
-- ----------------------------
DROP TABLE IF EXISTS `sc_c`;
CREATE TABLE `sc_c` (
  `CNO` int(11) NOT NULL DEFAULT '0',
  `CNAME` varchar(11) DEFAULT NULL,
  `AVG_GRADE` decimal(11,4) DEFAULT NULL,
  PRIMARY KEY (`CNO`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
-- ----------------------------
-- Records of sc_c
-- ----------------------------

2:题目

1:把SC表中每门课程的平均成绩插入到另外一个已经存在的表SC_C(CNO,CNAME,AVG_GRADE)中,其中AVG_GRADE表示每门课程的平均成绩
2:从SC表中把选择何炅老师的课程的女生的选课记录删除
3:查询选何炅老师的课程的女生且成绩在80分以上
4:找出没有选修过何炅老师的课程的所有学生的姓名(两种写法)
5:列出有两门以上(包含两门)不及格课程(成绩小于60分)的学生的姓名及其平均成绩(两种方式)   
6:列举出即学过1(科学)又学过2(编程)的所有学生姓名(两种方式)
7:列出1(科学)成绩比2(编程)的学生成绩高的所有学生的学号和姓名
8:列出1(科学)成绩比2(编程)的学生成绩高的所有学号及其1号课(科学)和2号课(编程)的成绩

3:参考答案

-- 1:把SC表中每门课程的平均成绩插入到另外一个已经存在的表SC_C(CNO,CNAME,AVG_GRADE)中,其中AVG_GRADE表示每门课程的平均成绩
INSERT INTO SC_C (CNO, CNAME, AVG_GRADE) SELECT
  SC.CNO,
  C.CNAME,
  AVG(SC.SCGRADE)
FROM
  `SC`
INNER JOIN C ON C.CNO = SC.CNO
GROUP BY
  SC.CNO;
-- 2:从SC表中把选择何炅老师的课程的女生的选课记录删除
DELETE
FROM
  SC,
  S,
  C
WHERE
  SC.SNO = S.SNO
AND SC.CNO = C.CNO
AND C.CTEACHER = '何炅老师'
-- 3:查询选何炅老师的课程的女生且成绩在80分以上
SELECT
  S.*
FROM
  S
INNER JOIN SC ON SC.SNO = S.SNO
INNER JOIN C ON C.CNO = SC.CNO
WHERE
  C.CTEACHER = '何炅老师'
AND SC.SCGRADE > 80
AND S.SEX = 0 
-- 4:找出没有选修过何炅老师的课程的所有学生的姓名(两种写法)
SELECT
  S.SNAME
FROM
  S
WHERE
  S.SNO NOT IN (
    SELECT
      S.SNO
    FROM
      S
    INNER JOIN SC ON SC.SNO = S.SNO
    INNER JOIN C ON C.CNO = SC.CNO
    WHERE
      C.CTEACHER = '何炅老师'
  ) 
SELECT
    SNAME
  FROM
    S
  WHERE
    NOT EXISTS (
      SELECT
        *
      FROM
        SC,
        C
      WHERE
        SC.CNO = SC.CNO
      AND SC.SNO = S.SNO
      AND C.CTEACHER = '何炅老师'
    ) 
-- 5:列出有两门以上(包含两门)不及格课程(成绩小于60分)的学生的姓名及其平均成绩(两种方式)
SELECT
  S.SNAME,
  AVG(sc.SCGRADE)
FROM
  SC
INNER JOIN S ON S.SNO = sc.SNO
WHERE
  sc.SNO IN (
    SELECT
      sc.SNO
    FROM
      SC
    WHERE
      SC.SCGRADE < 60
    GROUP BY
      sc.SNO
    HAVING
      COUNT(1)>= 2
  )
GROUP BY
  sc.SNO;
SELECT
  S.SNAME,
  AVG(sc.SCGRADE)
FROM
  s,
  sc,
  (
    SELECT
      sc.SNO
    FROM
      SC
    WHERE
      SC.SCGRADE < 60
    GROUP BY
      sc.SNO
    HAVING
      COUNT(1) >= 2
  ) A
WHERE
  A.SNO = s.SNO
AND s.SNO = sc.SNO
GROUP BY
  sc.SNO
-- 6:列举出即学过1(科学)又学过2(编程)的所有学生姓名(两种方式)
SELECT
  s.SNAME
FROM
  s,
  sc
WHERE
  s.sno = sc.SNO
AND sc.CNO = 2
AND sc.SNO IN (
  SELECT
    sc.SNO
  FROM
    sc
  WHERE
    sc.CNO = 1
) 
SELECT
    s.SNAME
  FROM
    s,
    (
      SELECT
        SNO
      FROM
        sc
      WHERE
        CNO IN (1, 2)
      GROUP BY
        SNO
      HAVING
        count(CNO) >= 2
    ) AS a
  WHERE
    s.sno = a.SNO
-- 7:列出1(科学)成绩比2(编程)的学生成绩高的所有学生的学号和姓名
SELECT
  s.sno,
  s.SNAME
FROM
  s,
  (
    SELECT
      sc.SNO,
      sc.SCGRADE
    FROM
      sc
    WHERE
      sc.CNO = 1
  ) k,
  (
    SELECT
      sc.SNO,
      sc.SCGRADE
    FROM
      sc
    WHERE
      sc.CNO = 2
  ) b
WHERE
  s.SNO = k.SNO
AND k.SNO = b.SNO
AND k.SCGRADE > b.SCGRADE
-- 8:列出1(科学)成绩比2(编程)的学生成绩高的所有学号及其1号课(科学)和2号课(编程)的成绩
SELECT
  s.sno,
  s.SNAME,
  k.SCGRADE AS "1",
  b.SCGRADE AS "2"
FROM
  s,
  (
    SELECT
      sc.SNO,
      sc.SCGRADE
    FROM
      sc
    WHERE
      sc.CNO = 1
  ) k,
  (
    SELECT
      sc.SNO,
      sc.SCGRADE
    FROM
      sc
    WHERE
      sc.CNO = 2
  ) b
WHERE
  s.SNO = k.SNO
AND k.SNO = b.SNO
AND k.SCGRADE > b.SCGRADE
目录
相关文章
|
16天前
|
Linux 开发工具 iOS开发
Codex保姆级教程(下载+安装+登录+使用,含所有版本,2026最新)
Codex是OpenAI推出的开源AI编程智能体,本地运行,可理解整个代码库,支持自然语言指令改代码、执行命令、跑测试、修Bug,兼容Win/macOS/Linux。(239字)
6873 49
|
4天前
|
JSON 前端开发 API
阿里云最新Qwen4-Max大模型介绍:模型定位、特征、能力、适用场景解析
2026 年 11 月 11 日,阿里发布第四代旗舰模型Qwen4-Max预览版,首发千问 AI 平台 Token Plan,并同步接入千问办公、Qoder 等入口。该版本聚焦知识理解、世界感知、编程与 Agentic 四项升级,主打复杂编程、专业办公、前端设计与专业软件操作。预览期至 11 月 25 日 24:00,到期后模型标识下线;限时 2 折、新用户再享 5 折,最低 1 折可体验。
|
5天前
|
云安全 人工智能 安全
|
17天前
|
JavaScript API iOS开发
DeepSeek Harness下载、安装、配置一篇搞定(2026整理,送常用插件)
DeepSeek Harness(DSH)是DeepSeek于2026年开源的MIT协议AI Agent框架,支持插件化组装模型、工具、沙箱与UI,兼容主流大模型。本文提供免Node.js的桌面端安装包(Win/macOS),含详细图文教程及热门插件推荐。
5397 63
|
11天前
|
Linux 开发工具 iOS开发
2026最新codex下载安装保姆级使用教程(下载+安装+登录+使用,含所有历史版本)
本文详解OpenAI Codex国内快速上手指南:提供Win/macOS/Linux全平台免安装包、npm/Homebrew等多方式安装、账号/API Key双登录、简体中文切换,覆盖下载、安装、汉化、使用及高频避坑(如微软商店失败、npm超时等),10分钟即可跑通。
2714 7
|
4天前
|
人工智能 前端开发 API
阿里云Qwen4-Max 大模型详解:定位、特征、能力、适用场景与相对Qwen3-Max差异解析
2026年11月11日,阿里发布第四代旗舰模型Qwen4-Max预览版,首发千问AI平台Token Plan并接入千问办公、Qoder等入口。该版本聚焦知识理解、世界感知、编程与Agentic四项升级,主打复杂编程、专业办公、前端设计与专业软件操作等真实任务。预览期为11月11日10:00至11月25日24:00,仅支持Token Plan调用,到期后模型标识下线;限时2折、新用户再享5折,最低1折可体验。
|
9天前
|
人工智能 安全 API
DeepSeek Harness下载、安装、配置一篇搞定(2026整理,送常用插件)
DeepSeek Harness(dsh)是DeepSeek AI于2026年开源的轻量级Agent运行框架,基于Cordis内核,践行“一切皆插件”理念。支持Web/桌面双端,开箱即用;内置多模型接入、丰富插件生态(超3.5万),适配编程、办公、创作等场景。(239字)
1758 1
|
1天前
|
弹性计算 人工智能 API
Codex超详细入门指南(下载·安装·登录·上手,全版本覆盖,2026最新版)
建议收藏本教程,2026 全年各版本更新随时回来查阅。如果你在搭建过程中遇到任何问题,欢迎结合 阿里云工单系统 提交技术支持请求,或在 阿里云开发者社区 搜索 Codex 相关话题交流。 祝你编码愉快,效率翻倍!
898 0
|
7天前
|
人工智能 iOS开发 开发者
2026年 Codex 下载地址更新:codexdown.cn 已更换为 codexdown.cc(附 Codex 客户端下载)
2026年Codex官方下载站已由codexdown.cn正式迁移至codexdown.cc,提供Windows/macOS最新客户端、历史版本、安装教程及配置指南,开发者可一站式获取稳定、安全、签名验证的AI编程工具资源。(239字)
1575 0