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.rhkb.cn/news/493495.html

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

相关文章

SAP RESTful架构和OData协议

一、RESTful架构 RESTful 架构&#xff08;Representational State Transfer&#xff09;是一种软件架构风格&#xff0c;专门用于构建基于网络的分布式系统&#xff0c;尤其是在 Web 服务中。它通过利用 HTTP 协议和一组简单的操作&#xff08;如 GET、POST、PUT、DELETE&…

基于MATLAB的图像增强

&#x1f351;个人主页&#xff1a;Jupiter. &#x1f680; 所属专栏&#xff1a;传知代码 欢迎大家点赞收藏评论&#x1f60a; 目录 一、背景及意义介绍背景图像采集过程中的局限性 意义 二、概述三、代码结构及说明&#xff08;一&#xff09;整体结构&#xff08;二&#xf…

通过阿里云 Milvus 与 PAI 搭建高效的检索增强对话系统

背景介绍 阿里云向量检索服务Milvus版&#xff08;简称阿里云Milvus&#xff09;是一款云上全托管服务&#xff0c;确保了了与开源Milvus的100%兼容性&#xff0c;并支持无缝迁移。在开源版本的基础上增强了可扩展性&#xff0c;能提供大规模 AI 向量数据的相似性检索服务。相…

滚珠花键的保养与维护方法

滚珠花键作为关键的线性运动引导装置&#xff0c;以其高精度和高刚性在众多领域发挥着举足轻重的作用。然而&#xff0c;为了保持其卓越的性能&#xff0c;保养与维护措施不可或缺。 滚珠花键的保养与维护其实就是润滑与清洁&#xff0c;以下是一些具体的保养与维护方法&#x…

Layui table不使用url属性结合laypage组件实现动态分页

从后台一次性获取所有数据赋值给 Layui table 组件的 data 属性&#xff0c;若数据量大时&#xff0c;很可能会超出浏览器字符串最大长度&#xff0c;导致渲染数据失败。Layui table 结合 laypage 组件实现动态分页可解决此问题。 HTML增加分页组件标签 在table后增加一个用于…

fastdds:idl

1使用网络收发数据的最简单方式 在学习idl之前&#xff0c;先来看一下我们在开发中&#xff0c;通过网络收发数据时&#xff0c;常常怎么实现。 struct Student {char name[32];int age;char sex;// f 男&#xff0c;m 女 };//发送侧 struct Student s1 {"xiaoming&q…

计算机网络之多路转接epoll

个人主页&#xff1a;C忠实粉丝 欢迎 点赞&#x1f44d; 收藏✨ 留言✉ 加关注&#x1f493;本文由 C忠实粉丝 原创 计算机网络之多路转接epoll 收录于专栏【计算机网络】 本专栏旨在分享学习计算机网络的一点学习笔记&#xff0c;欢迎大家在评论区交流讨论&#x1f48c; 目…

多个Echart遍历生成 / 词图云

echart官网 安装 如果版本报错推荐安装以下版本 npm install echarts4.8.0 --savenpm uninstall echarts//这个是卸载命令以下安装成功后是局部引入:多个Echart遍历生成 vue3echart单个页面多个图表循环渲染展示:<template><div class"main"><div …

Windows server 服务器网络安全管理之防火墙出站规则设置

Windows server 服务器网络安全管理之防火墙出站规则设置 创建一条出站规则 这条出站规则针对IE浏览器设置&#xff0c;指定路径 TCP协议和指定端口&#xff08;多个端口的写法要注意&#xff09; 所有IP&#xff0c;所有应用&#xff0c;都采用阻止 给这条规则进行命名…

jmeter 接口性能测试 学习笔记

目录 说明工具准备工具配置jmeter 界面汉化配置汉化步骤汉化结果图 案例1&#xff1a;测试接口接口准备线程组添加线程组配置线程组值线程数&#xff08;Number of Threads&#xff09;Ramp-Up 时间&#xff08;Ramp-Up Period&#xff09;循环次数&#xff08;Loop Count&…

Pytorch | 从零构建ResNet对CIFAR10进行分类

Pytorch | 从零构建ResNet对CIFAR10进行分类 CIFAR10数据集ResNet核心思想网络结构创新点优点应用 ResNet结构代码详解结构代码代码详解BasicBlock 类ResNet 类ResNet18、ResNet34、ResNet50、ResNet101、ResNet152函数 训练过程和测试结果代码汇总resnet.pytrain.pytest.py 前…

gpu硬件架构

1.简介 NVIDIA在视觉计算和人工智能&#xff08;AI&#xff09;领域处于领先地位&#xff1b;其旗舰GPU已成为解决包括高性能计算和人工智能在内的各个领域复杂计算挑战所不可或缺的。虽然它们的规格经常被讨论&#xff0c;但很难掌握各种组件的清晰完整的图景。 这些GPU的高性…

Java中的方法重写:深入解析与最佳实践

在Java编程中&#xff0c;方法重写&#xff08;Method Overriding&#xff09;是面向对象编程&#xff08;OOP&#xff09;的核心概念之一。它允许子类提供一个与父类中同名方法的具体实现&#xff0c;从而实现多态性&#xff08;Polymorphism&#xff09;。本文将深入探讨Java…

使用vcpkg安装opencv>=4.9后#include<opencv2/opencv.hpp>#include<opencv2/core.hpp>无效

使用vcpkg安装opencv>4.9后#include<opencv2/opencv.hpp>#include<opencv2/core.hpp>无效\无法查找或打开 至少从2024年开始&#xff0c;发布的vcpkg默认安装的opencv版本都是4.x版。4.8版本及以前&#xff0c;vcpkg编译后的opencv头文件目录是*/vcpkg/x64-win…

基于java web在线商城购物系统源码+论文

一、环境信息 开发语言&#xff1a;JAVA JDK版本&#xff1a;JDK8及以上 数据库&#xff1a;MySql5.6及以上 Maven版本&#xff1a;任意版本 操作系统&#xff1a;Windows、macOS 开发工具&#xff1a;Idea、Eclipse、MyEclipse 开发框架&#xff1a;SpringbootHTMLjQueryMysq…

基于字节大模型的论文翻译(含免费源码)

基于字节大模型的论文翻译 源代码&#xff1a; &#x1f44f; star ✨ https://github.com/boots-coder/LLM-application 展示 项目简介 本项目是一个基于大语言模型&#xff08;Large Language Model, LLM&#xff09;的论文阅读与翻译辅助工具。它通过用户界面&#xff08…

centos7下docker 容器实现redis主从同步

1.下载redis 镜像 docker pull bitnami/redis2. 文件夹授权 此文件夹是 你自己映射到宿主机上的挂载目录 chmod 777 /app/rd13.创建docker网络 docker network create mynet4.运行docker 镜像 安装redis的master -e 是设置环境变量值 docker run -d -p 6379:6379 \ -v /a…

实现 WebSocket 接入文心一言

目录 什么是 WebSocket&#xff1f; 为什么需要 WebSocket&#xff1f; HTTP 的局限性 WebSocket 的优势 总结&#xff1a;HTTP 和 WebSocket 的区别 WebSocket 的劣势 WebSocket 常见应用场景 WebSocket 握手过程 WebSocket 事件处理和生命周期 WebSocket 心跳机制 …

机动车油耗计算API集成指南

机动车油耗计算API集成指南 引言 在当今社会&#xff0c;随着机动车数量的持续增长和环保意识的不断增强&#xff0c;如何有效管理和降低车辆油耗成为了车主、车队管理者以及交通政策制定者共同关注的问题。为了帮助这些群体更好地理解和优化燃油消耗情况&#xff0c;本接口能…

前端yarn工具打包时网络连接问题排查与解决

最近线上前端打包时提示 “There appears to be trouble with your network connection”&#xff0c;以此文档记录下排查过程。 前端打包方式 docker启动临时容器打包&#xff0c;命令如下 docker run --rm -w /app -v pwd:/app alpine-node-common:v16.20-pro sh -c "…