SQL语句练习

阅读《SQL必知必会》(第五版)然后结合往常表做的练习记录

这里使用的数据库时sqlite3,使用的工具时navicat

表资源链接https://wenku.baidu.com/view/349fb3639b6648d7c1c74652.html

表录入后如上图所示。后面如果有多张表之间的操作,在引入新的表。

1、查找当前表中所有的名字

SELECT 姓名 FROM student;

2、查找当前表中所有的名字和其对应的语文分数

SELECT 姓名,语文 FROM student;

3、查找表中的所有数据

SELECT * FROM student;

4、查找考试中出现的所有类型的语文分数

SELECT DISTINCT 语文 FROM student;

5、 查找这次考试语文的前5名

SELECT 姓名 ,语文 FROM student ORDER BY 语文 DESC LIMIT 5 ;

6、查找当前表中从第五行开始向后面数五行

SELECT * FROM student LIMIT 5 OFFSET 5 ;

7、在SQL语句中添加注释

SELECT * FROM student LIMIT 5 OFFSET 5 ;  --这是一条注释

8、查找表数据并根据语文排列

SELECT * FROM student ORDER BY 语文;

上面这段SQL语句为从小到大的顺序排列,下面展示分数从大到小的顺序排列

9、查找表并根据语文排列,分数高的在前面

SELECT * FROM student ORDER BY 语文 DESC;

10、查找表并根据语文排分,如果语文相同则数学分数高的排在前面

SELECT * FROM student ORDER BY 语文 DESC, 数学 DESC;

也可以根据语文和数学的列顺序编写SQL语句,观察上面的表,语文在第四列,数学在第五列

SELECT * FROM student ORDER BY 4 DESC, 5 DESC;

11、查找显示语文不及格的学生姓名

SELECT 姓名,语文 FROM student WHERE 语文 < 60;

上面这条语句使用了操作符< 书中给出了更多的操作符

比如查找语文分数在90到100之间的学生

SELECT 姓名,语文 FROM student WHERE 语文 BETWEEN 90 AND 100;

12、查找显示语文分数大于90并且数学分数也大于90

SELECT 姓名,语文,数学 FROM student WHERE 语文 > 90 AND 数学 > 90;

13、查找显示语文分数大于90或者数学分数大于90

SELECT 姓名,语文,数学 FROM student WHERE 语文 > 90 OR 数学 > 90;

14、查找显示语文分数大于90或者数学分数大于90并且满足前面两个条件后英语分数大于90

一开始使用如下代码查询

SELECT 姓名,语文,数学,英语 FROM student WHERE 语文 > 90 OR 数学 > 90 AND 英语 > 90;

结果如下

观察发现,89这个结果并不符合查找意图,这个是书中的一个知识点,SQL语句中也有运算优先级,AND的优先级大于OR,所以SQL语句应改为下面

SELECT 姓名,语文,数学,英语 FROM student WHERE (语文 > 90 OR 数学 > 90) AND 英语 > 90;

 使用()提高其优先级

结果如下

15、挑选语文分数等于98和100的信息

SELECT 姓名,语文,数学,英语 FROM student WHERE 语文 IN(100,98);

结果如下

16、挑选语文分数不等于100的信息

SELECT 姓名,语文 FROM student WHERE NOT 语文 = 100 ORDER BY 语文 DESC;

结果如下

上面使用NOT排除了语文分数等于100的数据

17、查找王姓的数据

SELECT 姓名,语文 FROM student WHERE 姓名 LIKE '王%';

上面使用 LIKE进行搜索,然后使用%进行模糊查询,后面可以是0-n个字符。%通配符仅能用于文本字段(字符串)的搜索。

结果如下

18、 查找语文+数学+英语的总成绩做为排序

SELECT 姓名 || '(' || (语文 + 数学 + 英语)  || ')' AS 总成绩 FROM student ORDER BY (语文+数学+英语) DESC;

       结果如下

上面操作使用了计算字段,在进行数据计算的时候使用()将其包裹起来,使用AS重命名显示

19、查找学号等于5的学生的所有信息

SELECT * FROM student WHERE 学号 = 5;

20、继续上面的操作,但是计算出其总成绩

SELECT * , (语文 + 数学 + 英语 + 信息技术 + 体育) AS 总成绩 FROM student WHERE 学号 = 5;

21、现在这次考试的成绩占比为60%,显示占比后的成绩

SELECT * , (语文 + 数学 + 英语 + 信息技术 + 体育)* 0.6 AS 折分后总成绩 FROM student WHERE 学号 = 5;

输出

22、SQL语句中使用函数

 

    

23、显示语文的平均分数

SELECT AVG(语文) AS 语文平均分 FROM student;

输出

24、查询当前表中的所有人数

SELECT COUNT(*) AS 人数 FROM student;

输出

25、返回参加语文考试的人数

下面将语文的分数设为Null表示未参加考试,然后使用SQL语句显示参加语文考试的人数

SELECT COUNT(语文) AS 人数 FROM student;

 输出:

26、返回语文分数的最大值

SELECT MAX(语文) AS 语文最高分 FROM student;

27、返回语文分数的最小值

SELECT MIN(语文) AS 语文最低分 FROM student;

 

28、返回语文这一列所有分数的总和

SELECT SUM(语文) AS 语文分数总和 FROM student;

输出

 

29、使用一条语句返回语文考试人数,语文最高分,语文最低分,语文平均分

SELECT SUM(语文) AS 语文分数总和 ,
MAX(语文) AS 语文最高分,
MIN(语文) AS 语文最低分,
AVG(语文) AS 语文平均分FROM student;

输出

上面代码使用了组合聚集函数,用单条语句执行了4个聚集计算,返回四个值

30、创建分组

以语文分数为分组,显示每种分数的人数

SELECT 语文, COUNT(*) AS 考试人数 FROM student GROUP BY 语文 ORDER BY 语文 DESC;

 输出如下

上面这段SQL语句使用了GROUP BY, “因为使用了GROUP BY,就不必指定要计算和估值的每个组,系统会自动完成。GROUP BY子句知识DBMS分组数据,然后对每个组而不是整个结果集进行聚集。”

31、使用SQL语句显示 语文,数学,英语相加的总分数,并显示各个分数的人数

SELECT (语文 + 数学 + 英语) AS 考试总分数 , COUNT(*) AS 分数总人数 FROM student GROUP BY (语文 + 数学 + 英语) ORDER BY 考试总分数 DESC;

使用了GROUP BY,所以会进行分组 ,GROUP BY使用的一些规定如下

32、过滤分组

使用HAVING子句过滤,HAVING非常类似于WHERE。唯一的差别是WHERE过滤行,HAVING过滤分组。

下面使用HAVING子句,在上面例子30的基础上挑选出分组人数 >= 2的数据。

SELECT (语文 + 数学 + 英语) AS 考试总分数 , COUNT(*) AS 分数总人数 FROM student GROUP BY (语文 + 数学 + 英语) HAVING COUNT(*) >= 2 ORDER BY 考试总分数 DESC;

33、筛选分组总分数>= 260分的总人数

SELECT (语文 + 数学 + 英语) AS 考试总分数 , COUNT(*) AS 分数总人数 FROM student WHERE 考试总分数 >= 260 GROUP BY (语文 + 数学 + 英语) HAVING COUNT(*) >= 2 ORDER BY 考试总分数 DESC;

输出如下

34、上面的查询都是基于单个表,下面开始使用多表查询

引入一张新表

学生所属的班级,表数据使用学号更严谨,因为没有重名,这里先使用姓名

需求,查询student表中语文分数为100的学生所属的班级,SQL语句如下

SELECT 姓名,班级 FROM class WHERE 姓名 IN(SELECT 姓名 FROM student WHERE 语文 = '100');

输出如下

这段sql语句使用了子查询,子查询语句是

SELECT 姓名 FROM student WHERE 语文 = '100';

 输出结果是

所以上面的语句也等效于

SELECT 姓名,班级 FROM class WHERE 姓名 IN('张平光','赵永敏');

输出结果是

 

35、查询住校的同学的语文分数

SELECT 姓名,语文 FROM student where 姓名 IN (SELECT student."姓名" FROM student INNER JOIN dormitory WHERE student."姓名" = dormitory."姓名");

输出结果如下 

36、查询student表中的姓名和dormitory表中的姓名是否相同,如果相同设为住校,如果不相同设为不住校

SELECT student."姓名",CASE WHEN EXISTS (SELECT 1 FROM dormitory WHERE dormitory."姓名" = student."姓名") THEN '住校'ELSE '不住校'END AS 住校状态
FROM student;

输出

37、只显示住校的名单

SELECT student."姓名",'住校' AS 住校状态 			--硬编码为住校,因为通过下面通过WHERE过滤过了
FROM student
WHERE EXISTS (SELECT 1 FROM dormitory WHERE dormitory."姓名" = student."姓名");

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

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

相关文章

【Python】【数据分析】深入探索 Python 数据可视化:Seaborn 可视化库详解

目录 引言一、Seaborn 简介二、安装 Seaborn三、Seaborn 的基本图形3.1 散点图&#xff08;Scatter Plot&#xff09;3.2 线图&#xff08;Line Plot&#xff09;3.3 条形图&#xff08;Bar Plot&#xff09;3.4 箱型图&#xff08;Box Plot&#xff09;3.5 小提琴图&#xff0…

input输入框的placeholder颜色修改(Shadow DOM)

placeholder颜色修改 使用参考说明 https://zh.javascript.info/shadow-dom 查看shadow tree的方法

uniApp使用腾讯地图提示未添加maps模块

uniApp使用腾讯地图&#xff0c;打包提示未添加maps模块解决方案 这是报错信息&#xff0c;在标准基座运行的时候是没问题的&#xff0c;但是打包后会提示未添加&#xff0c;可以通过在mainfest里面把地图插件上腾讯地图的key更换高德地图的key&#xff0c;定位服务可以继续用腾…

linux------vim命令

一、基本模式切换 普通模式&#xff08;Normal Mode&#xff09; 当你打开Vim时&#xff0c;默认进入普通模式。在这个模式下&#xff0c;可以使用各种命令来移动光标、删除文本、复制粘贴等操作。例如&#xff0c;使用h、j、k、l来移动光标。h是向左移动一个字符&#xff0c;j…

数据可视化-2. 条形图

目录 1. 条形图适用场景分析 1.1 比较不同类别的数据 1.2 展示数据分布 1.3 强调特定数据点 1.4 展示时间序列数据的对比 1.5 数据可视化教育 1.6 特定领域的应用 2. 条形图局限性 3. 条形图图代码实现 3.1 Python 源代码 3.2 条形图效果&#xff08;网页显示&#…

2023年下半年软考信息安全工程师案例分析及答案解析

试题一(16分) 回答问题1至问题6,将解答填入答题纸对应的解答栏内。 问题1(4分) 已知DES算法S盒如下,请补全S盒空缺的数据(1)、(2)、(3)、(4)。 【参考答案】3、13、15、0 问题2(2分) 已知S盒的输入为110011,请计算经过S盒变换之后的二进制输出。 【参考…

模型部署学习笔记——模型部署关键知识点总结

模型部署学习笔记——模型部署关键知识点总结 模型部署学习笔记——模型部署关键知识点总结1. CUDA中Grid和Block的定义是什么&#xff1f;Shared Memory的定义&#xff1f;Bank Conflict的定义&#xff1f;Stream和Event的定义&#xff1f;2. TensorRT的工作流程&#xff1f;3…

Spring Cloud Gateway 源码

Spring Cloud Gateway 架构图 按照以上架构图&#xff0c;请求的处理流程&#xff1a; 1.客户端请求发送到网关 DispatcherHandler 2.网关通过 HandlerMapping 找到相应的 WebHandler 3.WebHandler生成FilterChain过滤器链执行所有的过滤器 4.返回Response结果 自动装配类Gat…

基于Spring Boot的店铺租赁平台的设计与实现

一、项目背景 随着互联网技术的飞速发展&#xff0c;线上交易已成为商业活动的重要趋势。店铺租赁作为商业地产的核心环节&#xff0c;其传统模式面临着信息不对称、交易效率低下等问题。因此&#xff0c;开发一个高效、便捷的线上店铺租赁平台显得尤为重要。本项目利用Java S…

基于卷积神经网络(CNN)和ResNet50的水果与蔬菜图像分类系统

前言 在现代智能生活中&#xff0c;计算机视觉技术已经成为不可或缺的工具&#xff0c;特别是在食物识别领域。想象一下&#xff0c;您只需拍摄一张水果或蔬菜的照片&#xff0c;系统就能自动识别其种类并为您提供丰富的食谱建议。这项技术不仅在日常生活中极具实用性&#xf…

Tomcat部署war包项目解决404问题

问题出在了Tomcat的版本上了&#xff0c;应该先去看这个项目使用的springboot版本&#xff0c;然后去仓库里找到对应Tomcat版本。 Maven Repository: org.springframework.boot spring-boot-starter-tomcat 因此我们应该选择Tomcat9版本。 当我把Tomcat11换成Tomcat9时&…

Redis篇--常见问题篇1--缓存穿透(缓存空值,布隆过滤器,接口限流)

1、概述 缓存穿透是指客户端请求的数据既不在Redis缓存中&#xff0c;也不在数据库中。换句话说&#xff0c;缓存和数据库中都不存在该数据&#xff0c;但客户端仍然发起了查询请求。这种情况下&#xff0c;缓存无法命中&#xff0c;请求会直接穿透到数据库&#xff0c;而数据…

前端使用 Konva 实现可视化设计器(20)- 性能优化、UI 美化

这一章主要分享一下使用 Konva 遇到的性能优化问题&#xff0c;并且介绍一下 UI 美化的思路。 至少有 2 位小伙伴积极反馈&#xff0c;发现本示例有明显的性能问题&#xff0c;一是内存溢出问题&#xff0c;二是卡顿的问题&#xff0c;在这里感谢大家的提醒。 请大家动动小手&a…

BlueLM:以2.6万亿token铸就7B参数超大规模语言模型

一、介绍 BlueLM 是由 vivo AI 全球研究院自主研发的大规模预训练语言模型&#xff0c;本次发布包含 7B 基础 (base) 模型和 7B 对话 (chat) 模型&#xff0c;同时我们开源了支持 32K 的长文本基础 (base) 模型和对话 (chat) 模型。 更大量的优质数据 &#xff1a;高质量语料…

C语言基础16(文件IO)

文章目录 构造类型枚举类型typedef 文件操作(文件IO)概述文件的操作文件的打开与关闭打开文件关闭文件文件打开与关闭案例 文件的顺序读写单字符读取多字符读取单字符写入多字符写入 综合案例&#xff1a;文件拷贝判别文件结束 数据块的读写(二进制)数据块的读取数据块的写入 文…

冯诺依曼架构与哈佛架构的对比与应用

冯诺依曼架构&#xff08;Von Neumann Architecture&#xff09;&#xff0c;也称为 冯诺依曼模型&#xff0c;是由著名数学家和计算机科学家约翰冯诺依曼&#xff08;John von Neumann&#xff09;在1945年提出的。冯诺依曼架构为现代计算机奠定了基础&#xff0c;几乎所有现代…

3D造型软件solvespace在windows下的编译

3D造型软件solvespace在windows下的编译 在逛开源社区的时候发现了几款开源CAD建模软件&#xff0c;一直囿于没有合适的建模软件&#xff0c;虽然了解了很多的模拟分析软件&#xff0c;却不能使之成为整体的解决方案&#xff0c;从而无法产生价值。opencascad之流虽然可行&…

机器学习04-为什么Relu函数

机器学习0-为什么Relu函数 文章目录 机器学习0-为什么Relu函数 [toc]1-手搓神经网络步骤总结2-为什么要用Relu函数3-进行L1正则化修改后的代码解释 4-进行L2正则化解释注意事项 5-Relu激活函数多有夸张1-细数Relu函数的5宗罪2-Relu函数5宗罪详述 6-那为什么要用这个Relu函数7-文…

QScreen在Qt5.15与Qt6.8版本下的区别

简述 QScreen主要用于提供与屏幕相关的信息。它可以获取有关显示设备的分辨率、尺寸、DPI&#xff08;每英寸点数&#xff09;等信息。本文主要是介绍Qt5.15与Qt6环境下&#xff0c;QScreen的差异&#xff0c;以及如何判断高DPI设备。 属性说明 logicalDotsPerInch&#xff1…

[HNCTF 2022 Week1]你想学密码吗?

下载附件用记事本打开 把这些代码放在pytho中 # encode utf-8 # python3 # pycryptodemo 3.12.0import Crypto.PublicKey as pk from hashlib import md5 from functools import reducea sum([len(str(i)) for i in pk.__dict__]) funcs list(pk.__dict__.keys()) b reduc…