MySQL 多表查询练习

1.创建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)
);

创建score表。SQL代码如下:

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)
);

2.为student表和score表增加记录
(1)向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,'计算机系', '湖南省衡阳市');

插入数据,查询student表,效果如图:
在这里插入图片描述

(2)向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);

插入数据后查询score表得:
在这里插入图片描述

1.查询student表的所有记录

mysql> select  * from student; 

效果如图:
在这里插入图片描述
2.查询student表的第2条到4条记录

#法一:用in范围查找
mysql> select * from student where id in(902,903,904);#法二:limit a,b;
#a表示的数字+1,b表示以数字a+1开始的b个数,
#本题中a表示行数+1,b表示记录数
mysql> select * from student limit 1,3;

效果如图:
法一:
在这里插入图片描述
法二:
在这里插入图片描述

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

mysql> select id 学号, name 姓名, department 院系 from student;

效果如图:
在这里插入图片描述
4.从student表中查询计算机系和英语系的学生的信息

 select id 学号, name 姓名, sex 性别, birth 出生日期, department 院系, address 地址 from student where department = '计算机系' or department = '英语系';

效果如图:
在这里插入图片描述
5.从student表中查询年龄18~22岁的学生信息

#使用右连接对stu1和stu2的数据进行连接查询。
#其中(select id ,2010-`birth` age from student)表示出学生的年龄和id,便于进行连接查询
mysql> select stu1.id 学号,stu1.name 姓名,stu1.sex 性别,stu1.birth,stu2.age 年龄-> from student stu1 right join-> (select id ,2010-`birth` age from student) as stu2 on-> stu1.id = stu2.id-> where stu2.age between 18 and 22;

效果如图:
在这里插入图片描述

mysql> select id 学号, 2010-`birth`  age from student;

stu2表的效果图:
在这里插入图片描述
6.从student表中查询每个院系有多少人

mysql> select department 院系,count(id) 人数 from student group by department;

效果如图:
在这里插入图片描述
7.从score表中查询每个科目的最高分

mysql> select c_name 科目, max(grade) 最高分 from score group by c_name;

效果如图:
在这里插入图片描述
8.查询李四的考试科目(c_name)和考试成绩(grade)

mysql> select sc.c_name 考试科目, sc.grade 考试成绩 from score sc-> right join student stu on-> sc.stu_id = stu.id-> where stu.name = '李四';

效果如图:
在这里插入图片描述
9.用连接的方式查询所有学生的信息和考试信息


#此处为了观感,将student表的address 的类型改为varchar(30) 
#修改的SQL语句:mysql> alter table student modify address varchar(30) ;mysql> select stu.id 学号,stu.name 姓名,stu.sex 性别, stu.birth 出生日期,stu.address 地址,sc.c_name 科目,sc.grade 分数 from student stu                                           -> inner join score sc on                                                                                                                                                     -> stu.id = sc.stu_id ; 

效果如图:
在这里插入图片描述
10.计算每个学生的总成绩

mysql> select stu.name 姓名, sum(sc.grade) 总分 from student stu inner join-> score sc on-> stu.id = sc.stu_id-> group by sc.stu_id;

效果如图:
在这里插入图片描述
11.计算每个考试科目的平均成绩

mysql> select c_name 科目, avg(grade) from score group by c_name;

效果如图:
在这里插入图片描述
12.查询计算机成绩低于95的学生信息

mysql> select stu.id 学号,stu.name 姓名, stu.sex 性别, stu.department 院系,sc.c_name 科目,sc.grade-> from student stu left join score sc on                                       -> stu.id = sc.stu_id-> where sc.c_name = '计算机' having grade < 95;

效果如图:
在这里插入图片描述
13.查询同时参加计算机和英语考试的学生的信息

mysql> select stu.id, stu.name, stu.department from student stu left join  (select * from score where c_name in ('计算机','英语')) as stu1 on stu.id = stu1.stu_id group  by  id having count(name) = 2;

效果如图:
在这里插入图片描述

#该命令查询score表中包含计算机或者英语课程的记录
mysql> select * from score where c_name in ('计算机','英语');

效果如图:
在这里插入图片描述

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

mysql> select  grade from score where c_name = '计算机' order by grade desc;

效果如图:
在这里插入图片描述
15.从student表和score表中查询出学生的学号,然后合并查询结果

mysql> select * from (-> select id from student-> union-> select stu_id from score-> ) id_tb;

效果如图:
在这里插入图片描述
16.查询姓张或者姓王的同学的姓名、院系和考试科目及成绩

mysql> select stu.name 姓名,stu.department 院系, sc.c_name 考试科目,sc.grade 成 绩 from student stu inner join score sc on-> stu.id = sc.stu_id-> where stu.name like '张%' or stu.name like '王%';

效果如图:
在这里插入图片描述
17.查询都是湖南的学生的姓名、年龄、院系和考试科目及成绩

mysql> select stu.name 姓名, stu2.age 年龄 ,stu.department 院系, stu2.c_name 考 试科目, stu2.grade 成绩 from student stu inner join-> (select stu1.id,stu1.age , sc.c_name , sc.grade  from score sc left join -> (select id,2010-`birth` as age from student) as stu1 on sc.stu_id = stu1.id )->  as stu2 on  stu.id = stu2.id-> where stu.address like '湖南%';

效果如图:
在这里插入图片描述

#用两个连接方式连接,先用左连接将score表和新查询的表相连接并改别名,赋予一个新表名;将student表用内连接和新表名进行连接。
#mysql> select id,2010-`birth` as age from student;

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/204.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

OpenCV 入门教程:Laplacian算子和Canny边缘检测

OpenCV 入门教程&#xff1a; Laplacian 算子和 Canny 边缘检测 导语一、Laplacian 算子二、Canny 边缘检测三、示例应用3.1 图像边缘检测3.2 边缘增强 总结 导语 边缘检测在图像处理和计算机视觉领域中起着重要的作用。 Laplacian 算子和 Canny 边缘检测是两种常用的边缘检测…

CAT1模块 EC800M HTTP使用总结记录

分享记录一下 CAT1 模块EC800 HTTP 协议使用流程 ...... by 矜辰所致目录 前言一、基础说明1.1 CAT1 与 4G1.2 EC800M 模块1.3 HTTP 二、开始使用2.1 硬件设计部分2.2 模块上电流程2.3 PDP 上下文2.3.1 什么是 SGSN 和 GGSN &#xff1f; 三、 HTTP 流程3.1 客户端3.1.1 PDP 上…

Ubuntu18.04 系统安装 Docker

1、首先更新软件源&#xff1a; sudo apt-get updatesudo apt-get upgrade 2、安装Docker&#xff1a; sudo apt install docker -y 3、查看安装的Docker apt list docker 4、查看docker 进程 ps -ef|grep docker 5、查看docker 版本有问题 6、开启Docker服务 systemctl…

10_SPI_Flash 连续写实验

10_SPI_Flash 连续写实验 1. 实验目标2. 连续写方法3. 操作时序4. 流程框图4.1 顶层模块4.2 连续写模块 5. 波形图6. RTL6.1 flash_seq_wr_ctrl6.2 spi_flash_seq_wr 7. Testbench 1. 实验目标 使用页写指令&#xff0c;将串口发送过来的连续不定量数据写入 Flash。本实验中&a…

Web安全——数据库mysql学习

数据库mysql基础 Web安全分享一、数据库的基本操作1、MYSQL登录与退出2、MYSQL数据库的一些解释3、MYSQL注释符有三种&#xff1a; 二、数据库的一些基本操作1、数据库的增删改查(sql语句) 三、table 表的操作1、查看表结构2、查看表的内容3、建立表4、约束条件5、修改表的操作…

网络通信原理系统的认知(NEBASE第十四课)

1 物理层 第一层 物理层&#xff1a;建立、维护、断开物理连接&#xff0c;定义了接口及介质&#xff0c;实现了比特流的传输。 1.1传输层介质分类 有线介质&#xff1a;网线 &#xff08;双绞线&#xff09;光纤 无线: 无线电 1.2 双绞线 五类线 cat5 &#xff1a;适用 10…

第二次CCF计算机软件能力认证

第一题&#xff1a;相邻数对 给定 n 个不同的整数&#xff0c;问这些数中有多少对整数&#xff0c;它们的值正好相差 1。 输出格式 输入的第一行包含一个整数 n&#xff0c;表示给定整数的个数。 第二行包含所给定的 n 个整数。 输出格式 输出一个整数&#xff0c;表示值正好相…

KMP算法

KMP KMP 算法是一个快速查找匹配串的算法&#xff0c;它的作用其实就是本题问题&#xff1a;如何快速在「原字符串」中找到「匹配字符串」。 而 KMP 算法的复杂度为 O(mn)实际上是O(N),因为O(M)不可能大于O(N) KMP 之所以能够在 O(mn)复杂度内完成查找&#xff0c;是因为其能…

巴斯夫与长三角物理研究中心开展合作,专注固态和钠离子电池领域

“巴斯夫&#xff0c;全球知名化学公司&#xff0c;宣布与长三角物理研究中心合作&#xff0c;在江苏溧阳市成立联合研究中心&#xff0c;专注于固态电池和钠离子电池的科研。” 根据巴斯夫官方微博消息&#xff0c;新成立的研究中心名为“巴斯夫–长三角物理研究中心新能源汽车…

高德地图的使用

JS API 结合 Vue 使用 高德地图 jsapi 下载、引入 npm add amap/amap-jsapi-loaderimport AMapLoader from amap/amap-jsapi-loader 使用2.0版本的loader需要在window对象下先配置 securityJsCode JS API 安全密钥使用 JS API 使用 script 标签同步加载增加代理服务器设置…

【计算机网络】网络编程套接字(二)

文章目录 网络编程套接字&#xff08;二&#xff09;简单TCP服务器实现创建套接字服务器绑定服务器监听服务器接收连接服务器处理请求 简单TCP客户端实现创建套接字客户端发起连接客户端发起请求 服务器简单测试服务器简单测评多进程版TCP服务器捕捉SIGCHLD信号孙子进程提供服务…

【RuoYi-Cloud-Plus】学习笔记 09 - Sentinel(四)熔断降级知识整理

文章目录 前言参考目录版本说明学习笔记1、包结构2、DegradeSlot3、DegradeRule4、DegradeRuleManager5、CircuitBreaker5.1 CircuitBreaker.State6、AbstractCircuitBreaker6.1、AbstractCircuitBreaker#fromCloseToOpen6.2、AbstractCircuitBreaker#fromHalfOpenToOpen6.3、A…

支付宝接入

支付宝接入 python-alipay-sdk pycryptodome一、电脑网站支付 1.1 获取支付宝密钥 沙箱网址 1.APPID 2.应用私钥 3.支付宝公钥1.2 存放密钥 在与 settings.py 的同级目录下创建 pem 文件夹pem 文件夹下创建 app_private_key.pem 和 alipay_public_key.pem app_private_key…

神经网络初谈

文章目录 简介神经网络的发展历程神经网络的初生神经网络的第一次折戟神经网络的新生&#xff0c;Hinton携BP算法登上历史舞台命途多舛&#xff0c;神经网络的第二次寒冬神经网络的重生&#xff0c;黄袍加身&#xff0c;一步封神神经网络的未来&#xff0c;众说纷纭其他时间点 …

STM32 Proteus仿真LCD12864俄罗斯方块-FZ0063

STM32 Proteus仿真LCD12864俄罗斯方块-FZ0063 Proteus仿真小实验&#xff1a; STM32 Proteus仿真LCD12864俄罗斯方块-FZ0063 功能&#xff1a; 硬件组成&#xff1a;STM32F103R6单片机 LCD12864显示器多个按键 1.标准俄罗斯方块经典游戏玩法&#xff0c;带计时&#xff0c…

Kong 服务和路由的添加

管理服务 这里参考DB-less-Mode&#xff0c;因为使用的是yaml配置文件的形式&#xff0c;所以所有的相关配置只需要往初始化的kong.yml文件中添加就可以了&#xff0c;就像nginx的配置文件 DB-less-Mode 创建服务 vim /etc/kong/kong.yml services: - name: my-service #…

MySQL---表数据高效率查询(简述)

目录 前言 一、聚合查询 &#x1f496;聚合函数 &#x1f496;GROUP BY子句 &#x1f496;HAVING 二、联合查询 &#x1f496;内连接 &#x1f496;外连接 &#x1f496;自连接 &#x1f496;子查询 &#x1f496;合并查询 &#x1f381;博主介绍&#xff1a;博客名…

Idea 修改默认 Maven 为自己的

每次我们打开新项目时,都要去配置一遍 maven,很麻烦,其实可以去修改 idea 里面默认的 maven 配置,这样后面不管是打开新项目还是老项目,就都是用的自己的 maven 了. 1.文件->新项目设置->新项目的设置 File->Other Settings -> Settings for New Project 2.然后和…

git下载源码及环境搭建之数据库(二)

学习目标&#xff1a; 数据库 新项目使用 数据库文件 的配置 及相关属性的设置 步骤&#xff1a; 数据库 下图所示为开发时所用数据库 第一步&#xff1a;新建一个数据库 注意&#xff1a; 字符集与排序规则我们应该选择utf-8 相关 选中新创建的表&#xff0c;点击备份—还…

MySQL单表查询练习题

目录 第一题 第二题 第三题 第一题 1.创建数据表pet&#xff0c;并对表进行插入、更新与删除操作&#xff0c;pet表结构如表8.3所示。 (1&#xff09;首先创建数据表pet&#xff0c;使用不同的方法将表8.4中的记录插入到pet表中。 mysql> create table pet( name varchar(…