查询使用方法:

模糊查询:

查询某一列中内容为空的记录。

 
-- 模糊查询 (项目中尽量不要使用)
-- 张x
SELECT * FROM student WHERE student_name LIKE '张_';
-- % 不限长度的字符
-- 手机号中有 23 0或多个
SELECT * FROM student WHERE phone LIKE '%23%'
-- 名字包含'铮'的学生
SELECT * FROM student WHERE student_name LIKE '%铮%';
-- 60到80的成绩
SELECT * FROM result WHERE student_result>=60 &&student_result<=80;SELECT * FROM result WHERE student_result BETWEEN 60 AND 80;-- '阿斯达''张试''张三丰'
SELECT * FROM student WHERE student_name in('阿斯达','张试','张三丰')SELECT * FROM result WHERE subject_id not in (1,2);-- 所有不是张姓的学生信息
SELECT * FROM student WHERE student_name not LIKE '张%'-- 排序 ORDER BY 默认是升序 升序ASC
SELECT *FROM student ORDER BY birthday ASC;-- DESC
SELECT *FROM student ORDER BY birthday DESC;-- 根据多个字段经行排序
SELECT * FROM student ORDER BY birthday DESC ,sex ;-- 获取成绩前2名的信息 分页语句一定放在最后
SELECT *FROM result ORDER BY student_result DESC LIMIT 2;
通配符
一类字符,代替一个或多个真正的字符 与LIKE关键字一起使用

字符串:

字符串函数

日期函数

数学函数

-- 拼接字符串
SELECT CONCAT('糯米','啊啊啊撒','删掉');
-- 字符长度
SELECT LENGTH('asssssssggg');
-- 转大写
SELECT UPPER('asdf');
-- 转小写
SELECT LOWER('ASDFG');
-- 去除左边空格
SELECT LTRIM('  aaaasdrf  ');
-- 去除右边空格
SELECT RTRIM(' aaaasdff  ');
-- 去除两端空格
SELECT TRIM( 'asd sddsds    ');
-- 替换
SELECT REPLACE('hello word','word','世界');
-- 有条件的替换
SELECT INSERT('hello word',6,1,'世界');
-- 系统日期
SELECT CURDATE();
-- 日期的时间
SELECT now();
-- 时间
SELECT CURTIME();
-- 添加日期
SELECT DATE_ADD(NOW(),INTERVAL 5 MONTH )
-- 减少时间
SELECT DATE_SUB(NOW(),INTERVAL 5 day) 
-- 日期的格式化 y完整年 y两位数的年
SELECT DATE_FORMAT(CURDATE(),'%y年%m月%d日');SELECT DATE_FORMAT(NOW(),'%y年%m月%d日 %H点%i分%s秒')-- 返回从0到1之间的随机
SELECT RAND();
-- 取数值表达绝对值
SELECT ABS(-45);
-- 取大于或小于指定数值,表达最小整数
SELECT CEILING(43.5);
-- 取小于或者等于指定表达的最大整数、
SELECT FLOOR(43.5);
-- 取数值表达幂值
SELECT POWER(5,2);
-- 数值表达式四舍五入指定精度
SELECT ROUND(43.543,1);
-- 对于正数发回+去,对于负数返回-1
SELECT SIGN(-43);
-- 取浮点表达平方根
SELECT SQRT(9);update student set login_pwd=REPLACE(login_pwd,'o','0')-- 查询年龄超过20周岁的Y2的学生信息
SELECT * FROM student WHERE 
birthday<=DATE_ADD(CURDATE(),INTERVAL 20 YEAR);
-- 获取月份
SELECT MONTH(NOW())-- 查询1月份过生日的学生信息
SELECT * FROM student WHERE MONTH(birthday)='01';-- 今天生日的学生-- 翻转
SELECT REVERSE('123@qq.com');
-- 获取字符的位置
SELECT INSTR('moc.qq@321','.');
-- 截取字符串
SELECT RIGHT ('1234@qq.com',3);SELECT RIGHT (email,INSTR(REVERSE(email),'.')-1) FROM student
10000~99999999
SELECT  RAND()*(99999999-10000)+10000;-- 取整
SELECT FLOOR(RAND()*(99999999-10000)+10000);
-- 拼接
SELECT CONCAT(FLOOR(RAND()*(99999999-10000)+10000),'@qq.com');

聚合函数:

 聚合函数 sum,avg,max,min,count
-- 总分
SELECT Eventssum(student_result) FROM result;
SELECT student_no,SUM(student_result)FROM
result WHERE student_no='bq0010';-- 平均分 avg
SELECT AVG(student_result) FROM result;-- 最大值 max 最小值min
SELECT MAX(student_result),MIN(student_result) 
FROM result;
-- 计算 count
SELECT COUNT(*) FROM student;
SELECT COUNT(*) FROM student WHERE grade_id=1;
SELECT COUNT(*) FROM result WHERE student_result>40;-- 查询学生总人数
SELECT COUNT(*) FROM student;
-- 查询java初级的总学时
SELECT SUM(class_hour)FROM
subjects WHERE subject_name='html';
-- 学号为s1101004的学生第一期考试总成绩
SELECT student_no,SUM(student_result)FROM
result WHERE student_no='1004';SELECT SUM(student_result) FROM result WHERE 
student_no='1004' AND subject_id=1;
-- 学号为s1101004的学生第一期所有考试的平均值
SELECT AVG(student_result) FROM result WHERE student_no='1004';SELECT AVG(student_result) FROM result WHERE 
student_no='1004' AND subject_id=1;
-- 查询2013年3月22日科目“c#"语言和数据
SELECT MAX(student_result),MIN(student_result) ,AVG (student_result)FROM result WHERE examDate='2023-05-06';SELECT MAX(student_result),MIN(student_result) ,AVG (student_result)FROM result WHERE YEAR(exmdate)=2013 AND MONTH(examdate)=3 AND
DAY(examdate)=22 AND subject_id=1-- 查询2013
SELECT AVG(student_result) FROM result WHERE YEAR(exmdate)=2013 AND MONTH(examdate)=3 AND
DAY(examdate)=22 AND subject_id=1;SELECT AVG(student_result)FROM result WHERE subject_id=1;SELECT result_id,student_result
CASE
WHEN student_result<60 AND student_result>=0 THEN '不及格'
WHEN student_result>=60 AND student_result<=80 THEN ' 及格'
WHEN student_result>80 AND student_result<=100 THEN ' 优秀'
ELSE '作弊'
END AS '成绩等级'
FROM result# 分组查询
# 每个班级的学生的总人数
SELECT grade_id, COUNT(*) FROM student GROUP BY grade_id;SELECT grade_id,sex, COUNT(*)FROM student GROUP BY grade_id,sex
ORDER BY grade_id;-- 每个科目的平均分
SELECT AVG (student_result) FROM result
SELECT subject_id, AVG (student_result) FROM result GROUP BY subject_id;# 班级的学生的总人数>15的班级
SELECT grade_id,COUNT(*),sex FROM student GROUP BY grade_id,sex;SELECT grade_id,COUNT(*) FROM student GROUP BY grade_id
HAVING COUNT(*)>3;SELECT grade_id,COUNT(*) FROM student GROUP BY grade_id,sex
HAVING COUNT(*)>3 AND sex='男';SELECT grade_id,COUNT(*) FROM student WHERE sex='男'
GROUP BY grade_id HAVING COUNT(*)>3;

分组查询用法:

WHERE与HAVING对比

子查询:

子查询是一个嵌套在 SELECT、INSERT、UPDATE 或 DELETE 语句或其他子查询中的查询 子查询在WHERE语句中的一般用法.  将子查询和比较运算符联合使用,必须保证子查询返回的值不能多于一个.

IN子查询:

IN后面的子查询可以返回多条记录 常用IN替换等于(=)的子查询.

使用ANY、SOME或ALL时

用ANY或ALL关键字修改引入子查询的比较运算符,可以返回一列零值或更多值

例子:

-- 查找比蓝郎朗年龄小的学生信息
-- 1. 蓝郎朗的出生日期
SELECT birthday from student WHERE student_name='兰浪浪';
-- 2.根据日期查询剩余学生信息
SELECT *FROM student WHERE birthday>'2003-11-24';
-- 子查询 
-- 比较运算符,查询结果不能大于一
-- 查询字段只能有一个
SELECT * FROM student WHERE birthday>(
SELECT birthday FROM student WHERE student_name='兰浪浪'
);-- 查找和王月同班的学生的学号和姓名
-- 1. 王月的班级
SELECT grade_id FROM student WHERE student_name='方法非'
-- 2.根据班级编号查询学生
SELECT * FROM student WHERE grade_id=3
-- 3.合并
SELECT * FROM student WHERE grade_id=(
SELECT grade_id FROM student WHERE student_name='方法非'
) and student_name !='方法非';-- 查询参加最近一次'oop' 考试成绩最高分和最低分
-- 1.  获取oop的编号
SELECT subject_id FROM subjects WHERE subject_name='html';
-- 2. 根据结果进行查询
SELECT MAX(examDate) FROM result;SELECT MAX(student_result),MIN(student_result) FROM result
WHERE examDate=(SELECT MAX(examDate) FROM result) 
AND   subject_id=(
SELECT subject_id FROM subjects WHERE subject_name='html'
)
-- 查询'张三' 的'css' 考试成绩
SELECT * FROM result WHERE student_no='bq0010'
AND subject_id=2SELECT student_no FROM student WHERE student_name='咳咳咳'
SELECT subject_id FROM subjects WHERE subject_name='html'SELECT * FROM result WHERE student_no=(
SELECT student_no FROM student WHERE student_name='咳咳咳'
)
and subject_id=(
SELECT subject_id FROM subjects WHERE subject_name='java'
)

查询的方法有三种

联合——合并多个数据集中的行

子查询——将一个查询嵌套在另一个查询中

连接——合并多个数据表中的列 比较运算符后面的子查询只能返回单个数值。

IN子查询后面可跟随返回多条记录的子查询,用于检测某列的值是否存在于某个范围中。

在子查询中使用EXISTS子句,可以对子查询中的行是否存在进行检查。子查询可以出现在表达式出现的任何位置。

多表联查使用方法:
常用的多表连接查询:

内连接(INNER JOIN) 外连接 左外连接   (LEFT JOIN) 右外连接   (RIGHT JOIN)

内连接:

内连接使用比较运算符根据每个表的通用列中的值匹配两个表中的行。

三表内连接

内连接:等值查询 INNER JOIN 

例子:

-- 查询学生信息及所在班级信息
SELECT * FROM student s,grade g WHERE s.grade_id=g.grade_id;SELECT * FROM student s INNER JOIN grade g
on s.grade_id=g.grade_id WHERE s.student_name='咳咳咳';SELECT * FROM student s INNER JOIN result r
on s.student_no=r.student_no INNER JOIN subjects sj
on r.subject_id=sj.subject_id WHERE sj.subject_name='java'-- 一年级学生的信息及考试成绩
SELECT * FROM grade g INNER JOIN student s on g.grade_id=s.grade_id
INNER JOIN result r on r.student_no=s.student_no
WHERE g.grade_name='全栈一班'

左外连接:

 左外连接 LEFT JOIN    LEFT OUTER JOIN

-- 查询所有学生的考试成绩SELECT * FROM student s LEFT JOIN result r ON
s.student_no=r.student_no
-- 查询从未考试的科目信息
SELECT s.*FROM subjects s LEFT JOIN result r
ON s.subject_id=r.result_id WHERE r.subject_id is NULL-- 查询所有年级对应的学生信息
SELECT * FROM grade g LEFT OUTER JOIN student s
on g.grade_id=s.grade_id;

右外连接:

右外连接 right join

查询所有学生的考试成绩
SELECT * FROM result r RIGHT JOIN student s ON
s.student_no=r.student_no

自连接:

自连接:通过起别名的方式把一张表 当做多个表使用.

注释: 自连接也可以是 内连接也可以是外连接 自己与一张与自己完全一样的从表建立关系 进行连接查询.

-- 查找张三年龄大的学生
SELECT s2.* FROM student s1,student s2
WHERE s1.student_name='咳咳咳' and s1.birthday>s2.birthday-- 和张三同一天出生的学生信息
SELECT s2.* FROM student s1,student s2
WHERE s1.student_name='张试试' 
AND MONTH(s1.birthday)=MONTH(s2.birthday)
AND DAY (s1.birthday)=DAY(s2.birthday)

自然连接:

通过MySql自己的判断完成连接过程,不需要指定连接条件。 MySql会使用表内的,相同的字段,作为连接条件 自然连接分为内外之分。

-- 查看学生姓名和考试成绩
SELECT s.student_name,r.student_result FROM student s INNER JOIN result r
on s.student_no=r.student_no;SELECT s.student_name,r.student_result FROM student s 
NATURAL JOIN result r;

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

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

相关文章

数据结构与算法分析——你真的理解查找算法吗——基于散列的查找(代码详解+万字长文)

一、算法描述 前面讨论的查找算法在处理小数据量(顺序查找)或者有序的数据集合(二分查找)时才使用。我们需要更加强大的算法能够查找较大的集合,而且并不需要有序。最常使用的一个方法是使用散列函数来将目标元素的一个或者多个特征转换成一个值,这个值用来索引一个已经索引的…

密码管理工具实现

该文档详细描述了实现一个简单的密码管理工具的过程&#xff0c;工具基于PHP和MySQL构建&#xff0c;支持用户注册、密码存储、管理以及角色权限控制等核心功能。 系统架构设计 技术栈&#xff1a;PHP&#xff08;后端逻辑&#xff09;、MySQL&#xff08;数据存储&#xff09…

深度学习(七)深度强化学习:融合创新的智能之路(7/10)

一、深度强化学习的崛起 深度强化学习在人工智能领域的重要地位 深度强化学习作为一种融合了深度学习和强化学习的新技术&#xff0c;在人工智能领域占据着至关重要的地位。它结合了深度学习强大的感知能力和强化学习优秀的决策能力&#xff0c;能够处理复杂的任务和环境。例如…

基于 Java 的 Spring Boot 和 Vue 的宠物领养系统设计与实现

需要代码 vx&#xff1a;Java980320 不收取任何费用 在这个宠物领养系统中&#xff0c;我们可以设定两个角色&#xff1a;管理员和普通用户。每个角色的功能和目标略有不同&#xff0c;以下分别介绍&#xff1a; 管理员 管理员的主要职责是确保平台的高效运行&#xff0c…

PythonBase01

将理论&#xff0c;代码&#xff0c;图示三合一。 day1计算机基础结构 硬件 1944年&#xff0c;美籍匈牙利数学家冯诺依曼提出计算机基本结构。 五大组成部分&#xff1a;运算器、控制器、存储器、输入设备、输出设备。 – 运算器&#xff1a;按照程序中的指令&#xff0c…

APISQL企业版离线部署教程

针对政务、国企、医院、军工等内网物理隔离的客户&#xff0c;有时需要多次摆渡才能到达要安装软件的服务器。本教程将指导您使用Linux和Docker Compose编排服务&#xff0c;实现APISQL的离线部署。 准备 准备一台Linux(x86_64)服务器。 安装Docker Engine&#xff08;推荐版本…

【01初识】-初识 RabbitMQ

目录 学习背景1- 初识 MQ1-1 同步调用什么是同步调用&#xff1f;小结&#xff1a;同步调用优缺点 1-2 异步调用什么是异步调用&#xff1f;小结&#xff1a;异步调用的优缺点&#xff0c;什么时候使用异步调用&#xff1f; 1-3 MQ 技术选型 学习背景 异步通讯的特点&#xff…

记录一次mmpretrain训练数据并转onnx推理

目录 1.前言 2.代码 3.数据形态【分类用】 4.配置文件 5.训练 6.测试-分析-混淆矩阵等等&#xff0c;测试图片效果等 7.导出onnx 8.onnx推理 9.docker环境简单补充 1.前言 好久没有做图像分类了&#xff0c;于是想用商汤的mmclassification快速搞一波&#xff0c;发现已…

【微服务】Nacos 注册中心

<!-- nacos 依赖--><dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-alibaba-dependencies</artifactId><version>${nacos.version}</version><type>pom</type><scope>import&l…

太速科技-430-基于RFSOC的8路5G ADC和8路10G的DAC PCIe卡

430-基于RFSOC的8路5G ADC和8路10G的DAC PCIe卡 一、板卡概述 板卡使用Xilinx的第三代RFSOC系列&#xff0c;单颗芯片包含8路ADC和DAC&#xff0c;64-bit Cortex A53系列4核CPU&#xff0c;Cortex-R5F实时处理核&#xff0c;以及大容量FPGA。 对主机接口采用PCIe Gen3x…

大文件秒传,分片上传,断点续传

大文件分片上传 一 功能描述 1.文件通过web端分片多线程上传到服务端&#xff0c;然后web端发起分片合并&#xff0c;完成大文件分片上传功能 2.上传过的大文件&#xff0c;实现秒传 3.上传过程中&#xff0c;服务异常退出&#xff0c;实现断点续传 二 流程图 三 代码运行…

数据库数据恢复—Oracle ASM磁盘组掉线 ,ASM实例无法挂载的数据恢复案例

Oracle数据库数据恢复环境&故障&#xff1a; Oracle ASM磁盘组由4块磁盘组成。Oracle ASM磁盘组掉线 &#xff0c;ASM实例不能mount。 Oracle数据库故障分析&恢复方案&#xff1a; 数据库数据恢复工程师对组成ASM磁盘组的磁盘进行分析。对ASM元数据进行分析发现ASM存储…

【HarmonyOS】判断应用是否已安装

【HarmonyOS】判断应用是否已安装 前言 在鸿蒙中判断应用是否已安全&#xff0c;只是通过包名是无法判断应用安装与否。在鸿蒙里新增了一种判断应用安装的工具方法&#xff0c;即&#xff1a;canOpenLink。 使用该工具函数的前提是&#xff0c;本应用配置了查询标签querySch…

深度学习Pytorch-Tensor的属性、算术运算

深度学习Pytorch-Tensor的属性、算术运算 Tensor的属性Tensor的算术运算Pytorch中的in-place操作Pytorch中的广播机制Tensor的取整/取余运算Tensor的比较运算Tensor的取前k个大/前k小/第k小的数值及其索引Tensor判定是否为finite/inf/nan Tensor的属性 每一个Tensor对象都有以…

vue 果蔬识别系统百度AI识别vue+springboot java开发、elementui+ echarts+ vant开发

编号&#xff1a;R03-果蔬识别系统 简介&#xff1a;vuespringboot百度AI实现的果蔬识别系统 版本&#xff1a;2025版 视频介绍&#xff1a; vuespringboot百度AI实现的果蔬识别系统前后端java开发&#xff0c;百度识别&#xff0c;带H5移动端&#xff0c;mysql数据库可视化 1 …

Python(pandas库3)

函数 随机抽样 语法&#xff1a; n&#xff1a;要抽取的行数 frac&#xff1a;抽取的比例&#xff0c;比如 frac0.5&#xff0c;代表抽取总体数据的50% axis&#xff1a;示在哪个方向上抽取数据(axis1 表示列/axis0 表示行) 案例&#xff1a; 输出结果都为随机抽取。 空…

Qt/C++ 调用迅雷开放下载引擎(ThunderOpenSDK)下载数据资源

目录导读 前言ThunderOpenSDK 简介参考 xiaomi_Thunder_Cloud 示例ThunderOpenSDK 下载问题 前言 在对以前老版本的exe执行程序进行研究学习的时候&#xff0c;发现以前的软件是使用的ThunderOpenSDK这个迅雷开放下载引擎进行的项目数据下载&#xff0c;于是在网上搜索一番找到…

Flutter Row组件实战案例

In this section, we’ll continue our exploration by combining the Row and Container widgets to create more complex layouts. Let’s dive in! 在本节中&#xff0c;我们将继续探索&#xff0c;结合“Row”和“Container”小部件来创建更复杂的布局。让我们开始吧! Sc…

已解决Navicat 选择Mysql表 报错unkonow internal error: Access violation - no RTTI data

已解决Navicat 选择Mysql表 报错unkonow internal error&#xff1a; Access violation - no RTTI data 报错信息截图&#xff1a; 使用Navicat Premium15 选择sql server表时 出现大量弹窗报错&#xff0c;导致sql文件执行不了&#xff0c;右键数据库执行外部文件也失败了。弹…

Python日志系统详解:Logging模块最佳实践

Python日志系统详解&#xff1a;Logging模块最佳实践 在开发Python应用程序时&#xff0c;日志记录是排查问题、监控系统状态、优化性能的重要手段。Python标准库中提供了强大的logging模块&#xff0c;使开发者可以轻松实现灵活的日志系统。本文将详细介绍Python的logging模块…