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多表查询 的相关文章

  • 无法使用 Django 应用程序从容器连接到 MySQL docker 容器

    当我尝试从运行 Django 应用程序的 docker 容器连接到运行 MySQL 的容器时 出现以下错误 django db utils OperationalError 2003 Can t connect to MySQL serve
  • MySQL+子串怎么做? + 替换?

    我不太擅长 SQL 希望能够变得更好 我在尝试执行某些表操作时遇到一些麻烦 我希望能够从下面的 ProgUID 列中选择子字符串 就像是 SUBSTRING table ProgUID 3 12 这将为我提供 ProgUID P CAMVE
  • mySQL MATCH 跨多个表

    我有一组 4 个表 我想对其进行搜索 每个都有全文索引 查询可以使用每个索引吗 CREATE TABLE categories id int 5 unsigned NOT NULL auto increment display order
  • 社交应用程序的数据库设计和优化注意事项

    通常的情况 我有一个简单的应用程序 允许人们上传照片并关注其他人 因此 每个用户都会有类似 墙 或 活动源 的东西 他或她可以在其中看到他 她的朋友 他或她关注的人 上传的最新照片 大多数功能都很容易实现 然而 当涉及到这个历史活动源时 由
  • ActiveRecord3死锁重试

    Rails 3 或 ActiveRecord 3 是否有任何插件可以复制旧版本死锁重试 http agilewebdevelopment com plugins deadlock retry插入 或者 该插件仍然适用于 Rails 3 吗
  • 显示表 FULLTEXT 索引列

    我希望运行一个查询 该查询将返回表中全文索引的列列表 该表采用 MyISAM 格式 我将使用 php 来构建查询 理想情况下 我会运行查询 它会返回信息 以便我可以构造一个以逗号分隔的列字符串 例如 名 姓 电子邮箱 这在 MySQL 中可
  • Mysql innoDB 不断崩溃[关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 我的数据库 mysql 服务器不断崩溃 重新启动 我不知道该怎么办 我不断在 dbname org err 文件中收到以下内容 13120
  • 查询中列的顺序重要吗?

    当从 MySQL 表中选择列时 与表中的顺序相比 选择列的顺序是否会影响性能 不考虑可能覆盖列的索引 例如 您有一个包含行 uid name bday 的表 并且有以下查询 SELECT uid name bday FROM table M
  • mysql-如何向列申请补助?

    用户名 撤销对数据库的选择 Person I set GRANT SELECT id ON database Person TO username localhost 不是工作 gt SELECT secret FROM Person Go
  • 如何使用 MySQL 的 LOAD DATA LOCAL INFILE 在导入 CSV 时将字符串日期更改为 MySQL 日期格式

    我正在使用 MySQL 的 LOAD DATA LOCAL INFILE SQL 语句将数据从 CSV 文件加载到现有数据库表中 下面是一个 SQL 语句示例 LOAD DATA LOCAL INFILE file csv INTO TAB
  • 第三个下拉菜单不从数据库填充

    我有以下 Index php
  • 如何在Sequelize中设置查询超时?

    我想看看如何在 Sequelize 中设置查询的超时时间 我查看了 Sequelize 文档以获取一些信息 但我找不到我要找的东西 我发现的最接近的是 pools acquire 选项 但我不想设置传入连接的超时 而是设置正在进行的查询的超
  • MySQL PHP邮政编码比较具体距离

    我试图找出比较一个邮政编码 用户提供的 和一大堆其他邮政编码 现在大约有 200 个邮政编码 之间的距离的最有效方法 相对于加载时间 但它会随着时间的推移而增加 我不需要任何精确的东西 只是在球场上 我下载了整个美国的邮政编码 csv 文件
  • Laravel leftJoin 仅右表的最后一条记录

    我是 Laravel 的新手 我有两张桌子 1 产品 2 价格 products id product int p key name varchar prices id price int p key id product int
  • MySQL 查询计算上个月

    我想计算上个月的订单总额 我收到了从当前日期获取当月数据的查询 SELECT SUM goods total AS Total Amount FROM orders WHERE order placed date gt date sub c
  • 在服务器上找不到本地主机或 phpMyAdmin:如何修复?

    我按照安装说明进行操作PHP MySQL and PHPMyAdmin 但是当我尝试访问时http localhost phpmyadmin 我收到此错误 未找到 在此找不到请求的 URL phpmyadmin 服务器 然后我尝试访问loc
  • 如何将ElasticSearch与MySQL集成?

    在我的一个项目中 我计划将 ElasticSearch 与 MySQL 结合使用 我已经成功安装ElasticSearch 我可以单独管理ES中的索引 但我不知道如何用 MySQL 实现同样的功能 我读过一些文件 但我有点困惑 没有明确的想
  • 如何在 Play java 中创建数据库线程池并使用该池进行数据库查询

    我目前正在使用 play java 并使用默认线程池进行数据库查询 但了解使用数据库线程池进行数据库查询可以使我的系统更加高效 目前我的代码是 import play libs Akka import scala concurrent Ex
  • 同一配置文件上的两个不同提供程序

    我在用着实体框架 6 1 0 I have 2 家提供者 MysqlClient 和 SQLServerCE 我需要创建2个不同的DBContext 这迫使我创造2个配置类因为mysql有一些不同的东西 但是当我初始化应用程序时 Datab
  • 如何从shell脚本自动登录MySQL?

    我有一个 MySQL 服务器 其中有一个用户和密码 我想在 shell 脚本中执行一些 SQL 查询而不指定密码 如下所示 config sh MYSQL ROOT root MYSQL PASS password mysql sh sou

随机推荐

  • 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条