MySQL多表查询

2023-11-08

目录

1、创建class数据库

2、创建student和score表

3、向student表插入记录的INSERT语句

4、向score表插入记录的INSERT语句

5、查询student表的所有记录

6、查询student表的第2条到4条记录

7、从student表查询所有学生的学号(id)、姓名(name)和院系(department)的信息

8、从student表中查询计算机系和英语系的学生的信息

9、从student表中查询年龄30~35岁的学生信

10、从student表中查询每个院系有多少人

11、从score表中查询每个科目的最高分

12、查询李四的考试科目(c_name)和考试成绩(grade)

13、用连接的方式查询所有学生的信息和考试信息

14、计算每个学生的总成绩

15、计算每个考试科目的平均成绩

16、查询计算机成绩低于95的学生信息

17、查询同时参加计算机和英语考试的学生的信息

18、将计算机考试成绩按从高到低进行排序

19、从student表和score表中查询出学生的学号,然后合并查询结果

20、查询姓张或者姓王的同学的姓名、院系和考试科目及成绩

21、查询都是湖南的学生的姓名、年龄、院系和考试科目及成绩


1、创建class数据库

/*创建class数据库*/
CREATE DATABASE class;

执行结果:

 

 

2、创建student和score表

/*创建student和score表*/
CREATE TABLE student(
	id INT(10) NOT NULL UNIQUE PRIMARY KEY,
	NAME VARCHAR(20) NOT NULL,
	sex VARCHAR(4),
	birth YEAR,
	department VARCHAR(20),
	address VARCHAR(50)
);ENGINE=INNODB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;
CREATE TABLE score(
	id INT(10) NOT NULL UNIQUE PRIMARY KEY AUTO_INCREMENT,
	stu_id INT(10) NOT NULL,
	c_name VARCHAR(20),
	grade INT(10)
);ENGINE=INNODB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;

执行结果:

 

 

3、向student表插入记录的INSERT语句

/*向student表插入记录的INSERT语句*/
INSERT INTO student VALUES( 901,'张老大', '男',1985,'计算机系', '北京市海淀区');
INSERT INTO student VALUES( 902,'张老二', '男',1986,'中文系', '北京市昌平区');
INSERT INTO student VALUES( 903,'张三', '女',1990,'中文系', '湖南省永州市');
INSERT INTO student VALUES( 904,'李四', '男',1990,'英语系', '辽宁省阜新市');
INSERT INTO student VALUES( 905,'王五', '女',1991,'英语系', '福建省厦门市');
INSERT INTO student VALUES( 906,'王六', '男',1988,'计算机系', '湖南省衡阳市');

执行结果:

 

4、向score表插入记录的INSERT语句

/*向score表插入记录的INSERT语句*/
INSERT INTO score VALUES(NULL,901, '计算机',98);
INSERT INTO score VALUES(NULL,901, '英语', 80);
INSERT INTO score VALUES(NULL,902, '计算机',65);
INSERT INTO score VALUES(NULL,902, '中文',88);
INSERT INTO score VALUES(NULL,903, '中文',95);
INSERT INTO score VALUES(NULL,904, '计算机',70);
INSERT INTO score VALUES(NULL,904, '英语',92);
INSERT INTO score VALUES(NULL,905, '英语',94);
INSERT INTO score VALUES(NULL,906, '计算机',90);
INSERT INTO score VALUES(NULL,906, '英语',85);

执行结果:

 

5、查询student表的所有记录

/*查询student表的所有记录*/
SELECT * FROM student;

执行结果:

 

6、查询student表的第2条到4条记录

/*查询student表的第2条到4条记录*/
SELECT * FROM student LIMIT 1,3;

执行结果:

 

7、从student表查询所有学生的学号(id)、姓名(name)和院系(department)的信息

/*从student表查询所有学生的学号(id)、姓名(name)和院系(department)的信息*/
SELECT id,NAME,department FROM student;

执行结果:

 

8、从student表中查询计算机系和英语系的学生的信息

/*从student表中查询计算机系和英语系的学生的信息*/
SELECT * FROM student WHERE department='计算机系' OR department='英语系';

执行结果:

 

9、从student表中查询年龄30~35岁的学生信息

/*从student表中查询年龄30~35岁的学生信息*/
SELECT *,YEAR(NOW())-birth age FROM student WHERE (YEAR(NOW())-birth) BETWEEN 30 AND 35;

执行结果:

 

10、从student表中查询每个院系有多少人

/*从student表中查询每个院系有多少人*/
SELECT department,COUNT(id) 人数  FROM student GROUP BY department;

执行结果:

 

11、从score表中查询每个科目的最高分

/*从score表中查询每个科目的最高分*/
SELECT c_name,MAX(grade) FROM score GROUP BY c_name;

执行结果:

 

 

12、查询李四的考试科目(c_name)和考试成绩(grade)

/*查询李四的考试科目(c_name)和考试成绩(grade)*/
SELECT s.`c_name`,s.`grade` FROM score  s LEFT OUTER JOIN student  st ON s.stu_id = st.id WHERE NAME = '李四';

执行结果:

 

 

13、用连接的方式查询所有学生的信息和考试信息

/*用连接的方式查询所有学生的信息和考试信息*/
SELECT * FROM score  s LEFT OUTER JOIN student  st ON s.stu_id = st.id;

执行结果:

 

14、计算每个学生的总成绩

/*计算每个学生的总成绩*/
SELECT st.name,SUM(s.grade) AS 学生总成绩 FROM score  s LEFT JOIN student  st ON s.stu_id = st.id GROUP BY st.id;

执行结果:

 

15、计算每个考试科目的平均成绩

/*计算每个考试科目的平均成绩*/
SELECT c_name,AVG(grade) AS 科目平均成绩 FROM score GROUP BY c_name;

执行结果:

 

16、查询计算机成绩低于95的学生信息

/*查询计算机成绩低于95的学生信息*/
SELECT st.* FROM score  s LEFT JOIN student  st ON s.stu_id = st.id WHERE s.c_name='计算机' AND s.grade<95;

执行结果:

 

17、查询同时参加计算机和英语考试的学生的信息

/*查询同时参加计算机和英语考试的学生的信息*/
SELECT st.* FROM student st ,score s ,score s1 WHERE st.id=s.stu_id  AND s.c_name='计算机'  AND st.id=s1.stu_id  AND s1.c_name='英语';

执行结果:

 

18、将计算机考试成绩按从高到低进行排序

/*将计算机考试成绩按从高到低进行排序*/
SELECT grade FROM score WHERE c_name='计算机' ORDER BY grade DESC;

执行结果:

 

19、从student表和score表中查询出学生的学号,然后合并查询结果

/*从student表和score表中查询出学生的学号,然后合并查询结果*/
SELECT GROUP_CONCAT(s.`stu_id`,st.`id`) FROM score  s LEFT JOIN student  st ON s.stu_id = st.id;

执行结果:

 

20、查询姓张或者姓王的同学的姓名、院系和考试科目及成绩

/*查询姓张或者姓王的同学的姓名、院系和考试科目及成绩*/
SELECT NAME,department,c_name,grade FROM score,(SELECT * FROM student WHERE NAME LIKE '张%' OR NAME LIKE '王%')st WHERE stu_id=st.id;

执行结果:

 

21、查询都是湖南的学生的姓名、年龄、院系和考试科目及成绩

/*查询都是湖南的学生的姓名、年龄、院系和考试科目及成绩*/
SELECT NAME,(YEAR(NOW())-birth)AS'age',department,c_name,grade FROM  score,(SELECT * FROM student WHERE address LIKE'湖南%')st WHERE stu_id=st.id;

执行结果:

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

MySQL多表查询 的相关文章

  • 如何在SQL中编写连接查询[关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 问题 给定 Employee 和 AnnualReviews 表 编写一个查询以返回所有从未接受过按 HireDate 排序的评论的员
  • 最佳实践:在 PHP 中导入 mySQL 文件;分割查询

    我遇到了一种情况 我必须更新共享托管提供商上的网站 该网站有一个 CMS 使用 FTP 上传 CMS 文件非常简单 我还必须导入一个大的 相对于 PHP 脚本的范围 数据库文件 未压缩时大约 2 3 MB Mysql 已关闭 无法从外部访问
  • 将 Null 与 MySQL 触发器中的另一个值进行比较

    所以这是我的问题 我在更新表行时比较新值和旧值 但新值或旧值有时会为空 所以下面的代码不起作用 我可以解决这个问题吗 谢谢 BEFORE UPDATE ON mytable FOR EACH ROW BEGIN IF OLD assigne
  • MySQL中的字符串分割函数

    谁能告诉我如何在 mysql 中实现 split 函数 其行为类似于 Javascript split 我想要一个这样的功能 SELECT Split a b c d AS splitted 结果如下 splitted a b c d 有谁
  • MySql - 自动完成

    我正在创建一个 Ajax 自动完成应用程序 并且想知道是否有一个 SQL 查询可以用于此目的 例如 如果有人键入 p 我想检索所有以 p 开头的单词 如果他们添加 e 检索所有以 pe 开头的单词 并继续这样 有人提出了下面的查询 但我认为
  • 将 mysql 查询输出存储到 shell 变量中

    我需要一个变量来保存从数据库检索的结果 到目前为止 这基本上是我正在尝试但没有成功的事情 myvariable mysql database u user p password SELECT A B C FROM table a 正如你所看
  • MYSQL sum() 计算不同的行

    我正在寻求在 SQL 查询中使用 sum 的帮助 SELECT links id count DISTINCT stats id as clicks count DISTINCT conversions id as conversions
  • 如何将html表单中的信息写入MySQL数据库

    好吧 我正在建立一个带有表单的网站 我想将用户在表单中输入的所有信息保存到我的 MySQL 数据库中 表单的编码如下
  • 备份MySQL数据库

    我有一个大约 1 7GB 的 MySQL 数据库 我通常使用 mysqldump 进行备份 这大约需要 2 分钟 但是 我想知道以下问题的答案 mysqldump 是否阻止对数据库的读取和 或写入操作 因为在实际场景中 我不想在备份数据库时
  • 与 6 位随机字母数字代码发生冲突的概率是多少?

    我使用以下 Perl 代码生成随机字母数字字符串 仅限大写字母和数字 用作 MySQL 数据库中记录的唯一标识符 数据库的行数可能会保持在 1 000 000 行以下 但实际的绝对最大值约为 3 000 000 行 我是否有 2 条记录具有
  • 如何根据状态从父表和子表获取数据,其中外键每行具有不同的状态

    我有 2 个具有外键关系的表 情况是我有一个case and a case有很多revisions 和每个revision有自己的status 如果仅更改外键表状态的特定行 我想获取父表数据和子数据 Table Case id case n
  • Rails 3 应用程序的 MySQL Cluster (NDB) 与 MySQL Replication (InnoDB):优点/缺点?

    我们正在对当前系统进行概述 试图找出是否可以提高性能和可靠性 目前 我们运行着一堆内部 Rails 应用程序和基于 Rails 的网站 有些已经是 Rails 3 有些正在转换为 Rails 3 它们都连接到以下 MySQL 设置 mysq
  • 如何防止大型 MySQL 导入的连接超时

    在开发过程中 我们的本地 WAMP 服务器如何从测试服务器获取最新数据 即生成数据库转储 然后使用 source 命令上传该转储以加载 sql 文件 最近 在导入的最后 我们收到了有关 old 变量的错误 这些变量在更改之前存储了原始设置
  • 为什么 MySQL 将 é 与 e 视为相同?

    我使用 Django Web 应用程序将 Unicode 字符串存储在 MySQL 数据库中 我可以很好地存储 Unicode 数据 但是在查询时 我发现 and e被视为好像它们是同一个角色 In 1 User objects filte
  • sqlalchemy 中的随机 ID(pylon)

    我正在使用 pylons 和 sqlalchemy 我想知道如何将一些随机 id 作为primary key 最好的方法是使用随机生成的 UUID import uuid id uuid uuid4 uuid 数据类型在某些数据库中本机可用
  • MySQL 性能 DELETE 或 UPDATE?

    我有一个超过 10 7 行的 MyISAM 表 向其中添加数据时 我必须在最后更新 10 行 删除它们然后插入新行更快 还是更新这些行更快 应更新的数据不是索引的一部分 索引 数据碎片怎么样 UPDATE到目前为止要快得多 当你UPDATE
  • 选择每组最新的项目[重复]

    这个问题在这里已经有答案了 可能的重复 检索每组中的最后一条记录 https stackoverflow com questions 1313120 retrieving the last record in each group 我有 2
  • Delphi XE5 FireDAC 错误:无法加载供应商库 [libmysql.dll 或 libmysqld.dll]

    我在 Windows 7 64 位上使用 Delphi XE5 只是尝试 FireDAC 组件 我正在使用一个 TFDConnection 组件连接到本地 MySQL 数据库 v5 6 15 我已经将 libmysql dll 32位 v5
  • MySQL 查询中的窗口函数

    有没有办法在 SELECT 查询本身中动态地使用 MySQL 查询中的窗口函数 我知道在 PostgreSQL 中这是可能的 例如 下面是 PostgreSQL 中的等效查询 SELECT c server ip c client ip s
  • MyBatis 枚举的使用

    我知道以前有人问过这个问题 但我无法根据迄今为止找到的信息实施解决方案 所以也许有人可以向我解释一下 我有一个表 状态 它有两列 id 和 name id是PK 我不想使用 POJO Status 而是使用枚举 我创建了这样一个枚举 如下所

随机推荐

  • C++容器——list的模拟实现

    目录 一 list的基本结构 二 接下来就是对list类构造函数的设计了 三 链表数据的增加 四 接下来就是迭代器的创建了 四 简单函数的实现 五 构造与析构 六 拷贝构造和赋值重载 传统写法 现代写法 七 迭代器模板类型 一 list的基
  • sshpass工具+ssh登录方式

    自动登录 ssh工具 sshpass 一般用在sh脚本中 无须再次输入密码 本机known hosts文件中有的主机才能生效 它允许你用 p 参数指定明文密码 然后直接登录远程服务器 它支持密码从命令行 文件 环境变量中读取 yum ins
  • 基于相关性(NCC)的模板匹配Halcon

    一 原理 归一化相关性 NCC normalization cross correlation 顾名思义 就是用于归一化待匹配目标之间的相关程度 注意这里比较的是原始像素 通过在待匹配像素位置p px py 构建3 3邻域匹配窗口 与目标像
  • Leet14. 最长公共前缀

    编写一个函数来查找字符串数组中的最长公共前缀 如果不存在公共前缀 返回空字符串 示例 1 输入 strs flower flow flight 输出 fl 示例 2 输入 strs dog racecar car 输出 解释 输入不存在公共
  • 经验:初次接触全差分放大器时易犯的错误

    经验 初次接触全差分放大器时易犯的错误 更新历史 201901222 首次发布 本人当年第一次接触全差分放大器时 曾犯过一个低级的错误 导致对全差分放大器进行PSPICE仿真时 输出的波形总是不对 在后来的日子里 不止一次地看到其他人犯相同
  • GPT-3不算机器学习算法创新?2020年AI顶会最佳论文榜单引发激烈争论

    贾浩楠 发自 凹非寺 量子位 报道 公众号 QbitAI 2020年的最后一天 来回顾一下今年所有AI顶会的最佳论文吧 今年 顶会的最佳论文 既有ECCV的 2D变3D 的NeRF 当然 也有今年引起轰动的GPT 3 它来自NeurIPS
  • openGL之API学习(一七八)glsl版本功能演变

    GLSL 120 增加 1 你可以在着色器中初始化数组 如下所示 1 2 float a 5 float 5 3 4 4 2 5 0 5 2 1 1 float b 5 float 3 4 4 2 5 0 5 2 1 1 然而 即使使用GL
  • 从数据库中读取时间相差八个小时及格式不正确问题

    前端从数据库中读取时间数据的时候 需要关心的有格式问题和时间不一致问题 1 格式问题 有时读取时间数据是一长串的long类型数字 此数字表示的是自从公元年开始到现在所过的时间长度 此时在domain中 需要观察自己书写的时间对应类型是否写成
  • intel性能测试工具VTune的功能和用法介绍

    转自 https blog csdn net WY stutdy article details 79106501 https software intel com en us node 256997 1 VTune介绍 VTune可视化性
  • springboot将http改造成https

    springboot的项目天然的就是http的 但是有时候客户觉得http不安全 想要使用https的请求访问怎么处理 话不多少 上重点 https是对http进行ssl加密的一种协议 简单来说就是更安全 那么要怎么做呢 首先要生成证书 这
  • 看板的六大实践学习总结

    这次活动主要是学习看板的实践 看板的六大实践介绍如下 可视化 可视化价值项和价值流 story和它的流动 将问题和 瓶颈也在看板上可视化 可激发团队协作 限制在制品 通过限制各阶段的在实现的story 来加速流动 避免造成 交通 阻塞 考虑
  • 【C++】基础知识点回顾 中:函数重载、引用和内联函数

    前言 上篇文章我们介绍了C 基础知识中的命名空间 输入输出语句和缺省参数 上篇文章点击这里 今天 我们就来学习函数重载与引用 函数重载 定义 在编写代码时 当出现多个函数名相同的函数时 C 提供了一种方式 函数重载 使得当人们想使用哪个函数
  • CentOS7.x离线安装node及cnpm

    一 安装node 1 获取安装包放在 usr local 下面 链接 https pan baidu com s 1PuLYfZNf4stMKCh adv8zQ 提取码 z6ud 复制这段内容后打开百度网盘手机App 操作更方便哦 2 解压
  • 【JMeter03】登录接口解决方案

    个人站点 测试开发者https www devtester cn 1 解决验证码问题 在登录接口中 需要填写验证码 虽然是传统的图片型密码 可以尝试使用OCR方法识别 但对于接口测试 包括之后的UI测试 而言并不需要在验证码上大费周章 尤其
  • 毕业设计 - 基于Stm32的家庭智能监控系统 - 单片机 图像识别 人体检测 AI

    hr style border solid width 100px height 1px color 000000 size 1 quot 0 前言 这两年开始毕业设计和毕业答辩的要求和难度不断提升 传统的毕设题目缺少创新和亮点 往往达不到
  • 慕课网实战项目《WebAPP书城整站开发》笔记六:字体面板中“背景”切换的交互开发

    推荐IMOOC实战课程 WebApp书城整站开发 效果图 任务分解描述 本效果需要实现的是图中点击字体按钮后弹出一个可以设置字体颜色和大小的面板 点击面板上的 大 和 小 可以设置字体的大小 已完成 点击面板上的颜色圆圈可以切换阅读器的背景
  • Altium Designer常见问题整理(持续更新)

    Altium Designer DRC检查报告无法定位PCB具体错误位置 在AD中使用设计规则检查DRC 出具的PCB报告点击错误信息无法定位到具体错误位置 使用AD内置打开和浏览器打开均无效 原因 原理图与PCB工程文件存放路径存在中文导
  • python3.8安装tensorflow_python安装TensorFlow吐血整理

    1 安装特定版本的TensorFlow 1 pip install tensorflow gpu 1 9 0 2 pip install tensorflow gpu 必须用命令 1 才能安装想要的新版本 命令 2 只会安装TensorFl
  • element upload上传单张图片,效果同多图

    效果如图
  • MySQL多表查询

    目录 1 创建class数据库 2 创建student和score表 3 向student表插入记录的INSERT语句 4 向score表插入记录的INSERT语句 5 查询student表的所有记录 6 查询student表的第2条到4条