MySQL多表查询综合练习

news2024/11/27 14:45:11

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表增加记录
向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,'计算机系', '湖南省衡阳市');
向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);

3.查询student表的所有记录

select * from student;


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

select * from student limit 1,3;


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

select id,name,department from student;


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

select * from syudent where department = '计算机系' or department = '英语系';


7.从student表中查询年龄18~22岁的学生信息

select * from student where year(now()) - birth >= 18 and year(now()) - birth <=22;


8.从student表中查询每个院系有多少人

select department as '系别',count(department) as '人数' from student group by department;


9.从score表中查询每个科目的最高分

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


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

select c.c_name 考试科目,c.grade 考试成绩 from score c,student s where c.stu_id=s.id and s.name='李四';


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

select c.*,s.* from score c inner join student s on c.stu_id=s.id;


12.计算每个学生的总成绩

select s.name 姓名,sum(grade) 总成绩 from score c inner join student s on c.stu_id=s.id group by s.name;


13.计算每个考试科目的平均成绩

select s.name 姓名,avg(grade) 平均成绩 from score c inner join student s on c.stu_id=s.id group by s.name;


14.查询计算机成绩低于95的学生信息

select s.* from score c inner join student s on c.stu_id=s.id where c.c_name='计算机' and c.grade < 95;


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

select s.* from student s,(select * from score where c_name='计算机') as s1 inner join (select * from score where c_name='英语') as s2 on s1.stu_id=s2.stu_id where s.id=s1.stu_id;

该方法思路确实牛,因为如果直接查询所有信息条件为c_name='计算机' and c_name='英语'的话结果是空什么也没有,因为数据是一条科目对应一行所以一行无法有两个科目的,若是用or虽然可以出结果但这是参加计算机或者英语考试的,与题目不符合,那么入手点就在于id每个人的id是不一样的,而同一个人的id是一样的,那么我们就可以在筛选出参与了计算机考试和英语考试的成员两个数据中去比较id,将双方id相同的比较出来再与score表中的id比较相同则选取出来,最后s.id=s1.stu_id和s.id=s2.stu_id都是一样的结果,以自身对比自身用子查询的方式呈现出来若是多科那么就继续按照该思路接着套娃就可以做出来。


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

select c.*,s.* from score c inner join student s on c.stu_id=s.id where c.c_name='计算机' order by grade desc;


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

select c.c_name,c.grade,s.* from score c inner join student s on c.stu_id=s.id;


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

select c.c_name,c.grade,s.name,s.department from score c inner join student s on c.stu_id=s.id where s.name like "张%" or s.name like "王%";


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

select c.c_name,c.grade,s.name,year(now())-s.birth as 年龄,s.department from score c inner join student s on c.stu_id=s.id where address like "%湖南%";

注意其中计算年龄我使用的是year(now())-s.birth 是因为我的birth存储类型是year,如果是年月是就要换一种写法了。

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

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

相关文章

小工具使用——瑞士军刀(nc.exe)实现远程控制终端操作

工具&#xff1a;一台服务器&#xff0c;一台本地计算机&#xff0c;nc.exe(链接&#xff1a;https://pan.baidu.com/s/1TCzjgE2GfE3qCzrIiOLYJQ?pwd5tmk 提取码&#xff1a;5tmk)

鲜奶全程冷链配送

一、概述 鲜奶会通过低温巴氏杀菌消灭有害物质同时保留活性生命物质&#xff0c;其对储存条件要求极为苛刻&#xff0c;保质期一般不超过15天&#xff0c;整个配送过程必须采用全程冷链方式&#xff08;0~4c冷藏环境&#xff09;&#xff0c;从澳洲每周直飞运往宁波或广州港&a…

2023人工智能十大关键词“Agent”智能体,继ChatGPT后成最热AI焦点

9月17日&#xff0c;在“南京人工智能产业发展大会暨可信AI大会”上&#xff0c;中国信通院人工智能创新中心&#xff08;筹&#xff09;负责人、云大所副所长魏凯正式发布并解读了“2023人工智能十大关键词”其中&#xff0c;AI Agent、生成式AI等纷纷上榜。 一、通往 AGI 的道…

智能超声波清洗机真的好用吗?这几款超声波清洗机不能错过

随着生活品质的不断提高&#xff0c;智能家居也是越来越多了&#xff0c;超声波清洗机作为近年来备受瞩目的清洁神器&#xff0c;其高效、环保、无污染的特性深受消费者喜爱。然而&#xff0c;面对市场上琳琅满目的超声波清洗机品牌和型号&#xff0c;许多人在选购时感到困惑。…

网站安全-行为式验证码

什么是行为式验证码&#xff1f; 行为式验证码是一种较为流行的验证码。从字面来理解&#xff0c;就是通过用户的操作行为来完成验证&#xff0c;而无需去读懂扭曲的图片文字。常见的有两种&#xff1a;拖动式与点触式。 例如下图即为滑块式验证码 行为式验证码优势 一&#x…

optee移植指南

关键词&#xff1a;optee移植、TEE移植、trustzone、视频课程、tee、ATF、TF-A、香橙派、开发板、armv8、armv9、arm、嵌入式、linux、内核 您是否一直在苦苦寻觅一款基于Armv8架构的开发板&#xff1f;您是否一直在追寻一款支持TF-A和optee的开发板&#xff0c;却在寻找的过程…

Bootstrap中将颜色与事件进行关联的颜色名称

primary&#xff1a;重要&#xff0c;通过醒目的彩色设计&#xff0c;比如深蓝色&#xff0c;提示浏览者注意阅读。secondary&#xff1a;次要&#xff0c;通过灰色的视觉变化进行提示。success&#xff1a;成功&#xff0c;能过积极的亮绿色表示成功或积极的动作。danger&…

Day 06 python学习笔记

常见排序算法 先简单讲解一下如何交换两个变量的值 创建临时变量直接交换&#xff08;a,b b,a&#xff09; 例&#xff1a; 临时变量&#xff1a; c a a b b c#直接交换 a , b b , a 冒泡排序 两两比较&#xff0c;找最大值换到最后,再找次大值&#xff0c;放次之 以下以…

ubuntu下yolox tensorrt模型部署

TensorRT系列教程之 Windows10下yolov8 tensorrt模型加速部署 TensorRT系列教程之 Linux下 yolov8 tensorrt模型加速部署 TensorRT系列教程之 Linux下 yolov7 tensorrt模型加速部署 TensorRT系列教程之 Linux下 yolov6 tensorrt模型加速部署 TensorRT系列教程之 Linux下 yo…

C#串口原理

串口实际有2种。主要是电压逻辑不一样。玩单片机的人指usb转TTL的串口&#xff1b;普通人指USB转DB9的串口&#xff1b;先看下他们的区别&#xff1a; https://doc.embedfire.com/module/module_tutorial/zh/latest/Module_Manual/port_class/serial_port.html 1. 串口外设总结…

具有快表的地址变换机构

1.快表&#xff08;TLB&#xff09; 快表&#xff0c;又称联想寄存器(TLB&#xff0c;translation lookaside buffer)&#xff0c; 是一种访问速度比内存快很多的高速缓存(TLB不是内存! )&#xff0c; 用来存放最近访问的页表项的副本&#xff0c;可以加速地址变换的速度。 与…

【Java】JDK动态代理实现原理

代理模式 代理模式一般包含三个角色&#xff1a; Subject&#xff1a;主题对象&#xff0c;一般是一个接口&#xff0c;定义一些业务相关的基本方法。RealSubject&#xff1a;具体的主题对象实现类&#xff0c;它会实现Subject接口中的方法。Proxy&#xff1a;代理对象&#x…

使用CSS圆锥渐变创建背景图案

本文翻译自 How to create background pattern using CSS & conic-gradient&#xff0c;作者&#xff1a; Temani Afif&#xff0c; 略有删改。 拥有一个好的背景图案可以使你的网站设计与众不同。多亏了CSS渐变&#xff0c;我们可以使用几行代码创建花哨炫酷的图案。在这篇…

品牌被侵权也可以免费维权了

构成品牌侵权的理由一般有&#xff0c;商标侵权、专利侵权、著作权侵权等&#xff0c;当这些侵权链接持续存在&#xff0c;必然会影响品牌声誉和利益&#xff0c;同时不利于品牌和谐健康的渠道环境构建&#xff0c;低价、假货、窜货也可算作侵权&#xff0c;那何种侵权可以免费…

抖音热搜榜上榜策略

热点事件是抖音热搜榜的常客&#xff0c;要想登上热搜榜&#xff0c;首先要把握住热点&#xff0c;抢占先机。关注时事新闻、娱乐圈动态、社会热点等&#xff0c;结合自己的短视频内容&#xff0c;迅速制作出相关的短视频&#xff0c;以便在话题讨论初期就吸引用户的关注。同时…

获取时间Calendar类(LocalDateTime、LocalDate、LocalTime)

1.Calendar 是一个抽象类&#xff0c;并且构造器是private 2.我们只能通过getInstance()来获取实例 3.里面包含了大量的字段和方法提供给程序员 4. Calendar 没有提供对应的格式化的类&#xff0c;因此需要程序员自己组合来输出(灵活) 5.如果我们想要使用24小时制 Calendar.Hou…

二十五、【色调调整基础】

文章目录 1、亮度/对比度a、亮度b、对比度 2、曝光度3、阈值4、色阶5、反相6、黑白7、渐变映射 1、亮度/对比度 a、亮度 亮度是指画面的明亮程度 b、对比度 对比度指的是一幅图像中&#xff0c;明暗区域最亮和最暗之间不同亮度层级的测量&#xff0c;如下图所示&#xff0…

递归最小二乘法RLS

参考&#xff1a;RLS递归最小二乘法(Recursive Least Squares)_hymwgk的博客-CSDN博客

Springboot3 + knife4j(springdoc) 框架整合

前言 kinfe4j文档地址&#xff1a;https://doc.xiaominfo.com/docs/quick-start springdoc文档地址&#xff1a;https://springdoc.org/#demos 原本使用的是springfox&#xff0c;自Springboot3开始&#xff0c;knife4j引入了springdoc。 Maven引入 <dependency><…

无线设备的天线怎么安装最好?

天线作为无线传输过程中一个必不可少的配件&#xff0c;因此天线的安装和选型对于无线传输的稳定性发挥着至关重要的作用。本文将介绍影响天线安装对于无线通信效果的影响。 一、天线的工作原理 天线是一种能量变换器&#xff0c;它把传输线上传播的导行波&#xff0c;变换成在…