一、sql 基础知识、函数和子查询
MySQL 是一种流行的关系型数据库管理系统,使用 SQL 语言进行数据管理和操作。在 MySQL 中,常用的语句包括 SELECT 查询语句、WHERE 条件语句、算术表达式、函数、聚合函数、自定义函数、逻辑表达式、子查询和连接。这些语句可以帮助用户快速地进行数据查询和操作,提高工作效率。
SELECT 查询语句
SELECT 语句是 MySQL 中最常用的查询语句,用于从数据库中检索数据。SELECT 语句的基本语法如下:
sqlCopy code
SELECT column1, column2, ... FROM table_name;
其中,column1, column2, … 是要检索的列名,table_name 是要检索数据的表名。如果要检索所有列,可以使用星号(*)代替列名。例如:
WHERE 条件语句
WHERE 语句用于筛选满足指定条件的数据。WHERE 语句的基本语法如下:
其中,condition 是要筛选的条件。例如:
以上语句将检索出所有国家为美国的客户数据。
算术表达式
MySQL 中常用的算术表达式包括加法、减法、乘法和除法,使用加减乘除符号(+、-、*、/)即可进行计算。以下是一些例子:
- 加法:
sqlCopy code
SELECT 2 + 3; -- 输出结果为 5
- 减法:
sqlCopy code
SELECT 5 - 2; -- 输出结果为 3
- 乘法:
sqlCopy code
SELECT 3 * 4; -- 输出结果为 12
- 除法:
sqlCopy code
SELECT 6 / 3; -- 输出结果为 2
在使用算术表达式时,需要注意以下几点:
- 算术表达式中的数据类型应当一致,否则会产生类型转换错误。
- 除法运算可能产生精度损失,需要注意。
- 可以使用括号来改变运算顺序,例如:
sqlCopy code
SELECT (2 + 3) * 4; -- 输出结果为 20
- 可以使用各种数学函数来进行高级计算,例如:
scssCopy code
SELECT POW(2, 3); -- 输出结果为 8,表示 2 的 3 次方
逻辑表达式
MySQL 支持多种逻辑表达式,包括 AND、OR 和 NOT 等。
在SQL语句中,逻辑表达式用于连接两个或多个条件,以便在查询数据时进行过滤和筛选。在本文中,我们将探讨MySQL中常用的逻辑表达式以及它们的用法。
- AND 表达式
AND逻辑表达式用于连接两个或多个条件,只有当所有条件都为真时,AND表达式才返回TRUE。例如:
SELECT * FROM table_name WHERE column1 = 'value1' AND column2 = 'value2';
在这个例子中,查询条件需要同时满足列column1的值为’value1’和列column2的值为’value2’。
- OR 表达式
OR逻辑表达式用于连接两个或多个条件,只要有一个条件为真,OR表达式就返回TRUE。例如:
sqlCopy code
SELECT * FROM table_name WHERE column1 = 'value1' OR column2 = 'value2';
在这个例子中,查询条件需要满足列column1的值为’value1’或列column2的值为’value2’。
- NOT 表达式
NOT逻辑表达式用于反转条件的值,如果条件为真,则NOT表达式返回FALSE,如果条件为假,则NOT表达式返回TRUE。例如:
sqlCopy code
SELECT * FROM table_name WHERE NOT column1 = 'value1';
在这个例子中,查询条件需要列column1的值不为’value1’。
- IN 表达式
IN逻辑表达式用于检查列的值是否在指定的列表中。例如:
sqlCopy code
SELECT * FROM table_name WHERE column1 IN ('value1', 'value2', 'value3');
在这个例子中,查询条件需要列column1的值等于’value1’、'value2’或’value3’中的一个。
- BETWEEN 表达式
BETWEEN逻辑表达式用于检查列的值是否在指定的范围内。例如:
sqlCopy code
SELECT * FROM table_name WHERE column1 BETWEEN 'value1' AND 'value2';
在这个例子中,查询条件需要列column1的值在’value1’和’value2’之间。
- LIKE 表达式
LIKE逻辑表达式用于模糊匹配列的值。例如:
sqlCopy code
SELECT * FROM table_name WHERE column1 LIKE 'value%';
在这个例子中,查询条件需要列column1的值以’value’开头。
以上是MySQL中常用的逻辑表达式,通过它们可以快速、方便地筛选出所需的数据。在实际开发中,应根据具体的需求选用适当的逻辑表达式,以达到最佳的查询效果。
SQL函数
MySQL 支持多种函数,包括字符串函数、日期函数、数字函数等。
下面分别介绍这些函数的用法和示例:
字符串函数
- CONCAT 函数:用于将两个或多个字符串连接起来。
示例:
javaCopy code
SELECT CONCAT('Hello', ' ', 'World') AS greeting;
上面的语句会返回字符串 “Hello World”。
- SUBSTRING 函数:用于截取字符串的一部分。
示例:
sqlCopy code
SELECT SUBSTRING('Hello World', 1, 5) AS word;
上面的语句会返回字符串 “Hello”。
- LENGTH 函数:用于返回字符串的长度。
示例:
pythonCopy code
SELECT LENGTH('Hello World') AS len;
上面的语句会返回字符串长度 11。
还有许多其他的字符串函数,比如 REPLACE、UPPER、LOWER、TRIM 等,可以根据具体需求选择使用。
日期函数
- NOW 函数:用于返回当前日期和时间。
示例:
csharpCopy code
SELECT NOW() AS current_time;
上面的语句会返回当前日期和时间。
- DATE_FORMAT 函数:用于将日期格式化为指定的字符串格式。
示例:
sqlCopy code
SELECT DATE_FORMAT(NOW(), '%Y-%m-%d') AS date;
上面的语句会返回当前日期的年、月、日部分。
- DATEDIFF 函数:用于计算两个日期之间的天数。
示例:
javaCopy code
SELECT DATEDIFF('2022-03-01', '2022-02-01') AS days;
上面的语句会返回两个日期之间的天数。
除了上面的这些日期函数之外,MySQL 还支持一些其他的日期函数,比如 YEAR、MONTH、DAY 等,它们的用法可以参考 MySQL 的官方文档。
数字函数
- ABS 函数:用于返回一个数的绝对值。
示例:
scssCopy code
SELECT ABS(-10) AS num;
上面的语句会返回数值 10。
- ROUND 函数:用于对一个数进行四舍五入。
示例:
scssCopy code
SELECT ROUND(3.1415926, 2) AS num;
上面的语句会返回数值 3.14。
- RAND 函数:用于生成一个随机数。
示例:
csharpCopy code
SELECT RAND() AS random_num;
上面的语句会返回一个 0 到 1 之间的随机数。
除了上面的这些数字函数之外,MySQL 还支持一些其他的数字函数,比如 CEILING、FLOOR、SQRT 等,它们的用法可以参考 MySQL 的官方文档。
聚合函数
聚合函数是在 SELECT 语句中使用的一类函数,它们可以对某个列或表达式进行统计和计算。MySQL 中常用的聚合函数包括 SUM、MAX、MIN、AVG 和 COUNT 等。
下面分别介绍这些聚合函数的用法和示例:
- SUM 函数:用于计算某一列的数值总和。
示例:
sqlCopy code
SELECT SUM(price) FROM products;
上面的语句会返回 products 表中 price 列的数值总和。
- MAX 函数:用于取出某一列的最大值。
示例:
sqlCopy code
SELECT MAX(price) FROM products;
上面的语句会返回 products 表中 price 列的最大值。
- MIN 函数:用于取出某一列的最小值。
示例:
sqlCopy code
SELECT MIN(price) FROM products;
上面的语句会返回 products 表中 price 列的最小值。
- AVG 函数:用于计算某一列的平均值。
示例:
sqlCopy code
SELECT AVG(price) FROM products;
上面的语句会返回 products 表中 price 列的平均值。
- COUNT 函数:用于计算某一列的行数。
示例:
sqlCopy code
SELECT COUNT(*) FROM products;
上面的语句会返回 products 表中所有行的行数。
除了上面的这些聚合函数之外,MySQL 还支持一些其他的聚合函数,比如 STDDEV、GROUP_CONCAT 等,它们的用法可以参考 MySQL 的官方文档。
子查询
MySQL 中的子查询是指在一个查询中嵌套另一个查询。子查询通常用于在查询中引用其他表中的数据,或者在查询中对数据进行复杂的计算。
MySQL 中的子查询可以分为两类:关联子查询和非关联子查询。
关联子查询
关联子查询是指子查询中的结果集需要和主查询中的结果集进行关联,从而达到更精细的筛选数据的目的。
以下是一个使用关联子查询的例子:
假设我们有两张表,一张是顾客信息表 customers,包含以下列:id、name、age、gender、address;另一张是订单信息表 orders,包含以下列:id、customer_id、product、price、date。
我们想要找到每个顾客的平均订单金额,可以使用以下关联子查询:
sqlCopy code
SELECT name, (SELECT AVG(price) FROM orders WHERE customer_id = customers.id) AS avg_price FROM customers;
在这个查询中,外部查询选取了 customers 表中的 name 列,并且使用了一个子查询来计算每个顾客的平均订单金额。子查询中使用了 WHERE 子句来限定了订单表 orders 中的数据只包含该顾客的订单信息,从而保证了计算平均值的准确性。子查询中的 WHERE 子句使用了外部查询的值 customers.id 来作为条件。
这是一个关联子查询的例子,因为子查询使用了外部查询的值来限制查询的结果。
非关联子查询
假设我们有两个表:Customers(顾客)和Orders(订单),Customers 表中包含了顾客的信息,Orders 表中包含了订单的信息,包括顾客ID(customer_id)和订单金额(amount)。
现在我们想要查询订单金额最高的顾客信息,可以使用以下非关联子查询:
sqlCopy code
SELECT * FROM Customers WHERE customer_id = ( SELECT customer_id FROM Orders ORDER BY amount DESC LIMIT 1 );
这个查询首先在 Orders 表中查询订单金额最高的顾客ID,然后再在 Customers 表中查询该顾客的信息。
注意到这个查询中的子查询是在 WHERE 子句中使用的,而且返回的结果只有一个值,因此它是一个非关联子查询。
当然,实际业务场景中的查询可能更加复杂,需要使用更多的关联和条件查询,但是以上的例子可以帮助理解非关联子查询的基本概念。
相关文章:
一、sql 基础知识、函数和子查询
MySQL 是一种流行的关系型数据库管理系统,使用 SQL 语言进行数据管理和操作。在 MySQL 中,常用的语句包括 SELECT 查询语句、WHERE 条件语句、算术表达式、函数、聚合函数、自定义函数、逻辑表达式、子查询和连接。这些语句可以帮助用户快速地进行数据查…...
产品射频认证笔记
文章目录1. 射频监管认证的目的:1.1 确保 RF 产品在其预期环境中按预期运行1.2 确保射频产品不会干扰其他电子或射频设备2. 射频认证地区规范3. FCC简介4. FCC认证需要准备的内容:5. 射频监管测量会话期间测量以下射频属性:6. 调整射频参数6.…...
做了个springboot接口参数解密的工具,我给它命名为万能钥匙(已上传maven中央仓库,附详细使用说明)
前言:之前工作中做过两个功能,就是之前写的这两篇博客,最近几天有个想法,给它做成一个springboot的start启动器,直接引入依赖,写好配置就能用了 springboot使用自定义注解实现接口参数解密,普通…...
【Flutter从入门到入坑】Flutter 知识体系
学习 Flutter 需要掌握哪些知识? 终端设备越来越碎片化,需要支持的操作系统越来越多,从研发效率和维护成本综合考虑,跨平台开发一定是未来大前端的趋势,我们应该拥抱变化。而 Flutter 提供了一套彻底的移动跨平台方案…...
顺序表的基本操作
目录 一.什么是顺序表 二.顺序表的基本操作 1.初始化 2.增容 3.尾插 4.头插 5.尾删 6.头删 7.指定位置插入 8.指定位置删除 9.打印 10.查找 11.销毁 一.什么是顺序表 顺序表是用一段物理地址连续的存储单元依次存储数据元素的线性结构,一般情况下采用数组…...
设计模式——创建型模型——单列模式(8种实现)
前言: 👏作者简介:我是笑霸final,一名热爱技术的在校学生。 📝个人主页:个人主页1 || 笑霸final的主页2 📕系列专栏:计算机基础专栏 📧如果文章知识点有错误的地方&#…...
【软考中级】软件设计师笔记
计算机系统的性能一般包括两个方面:一方面是它的可用性,也就是计算机系统能正常工作的时间,其指标可以是能够持续工作的时间长度,也可以是在一段时间内,能正常工作的时间所占的百分比 另一方面是处理能力,又…...
包教包会的ES6
自学参考:http://es6.ruanyifeng.com/ 一、ECMAScript 6 简介 ECMAScript 6.0(以下简称 ES6)是 JavaScript 语言的下一代标准,已经在 2015 年 6 月正式发布了。它的目标,是使得 JavaScript 语言可以用来编写复杂的大…...
python学习——【第四弹】
前言 上一篇文章 python学习——【第三弹】 中学习了python中的流程控制语句,这篇文章我们接着学习python中的序列。先给大家介绍不可变序列 字符串和可变序列 列表,下一篇文章接着补充元组,集合和字典。 序列 指的是一块可以存放多个值的…...
Web3中文|无聊猿Otherside元宇宙启动第二次旅行
3月9日消息,无聊猿Bored Ape Yacht Club母公司Yuga Labs公布了其Otherside元宇宙游戏平台第二次测试的最新细节。Yuga Labs公司称,“第二次旅行”将于3月25日举行,由四位Otherside团队长带领完成近两小时的游戏故事。本次旅行对Otherdeed NFT…...
SpringCloud-7_OpenFeign服务调用
OpenFeign介绍OpenFeign是什么1.OpenFeign是个声明式WebService客户端,使用OpenFeign让编写Web Service客户端更简单2.它的使用方法是定义一个服务接口然后在上面添加注解3.OpenFeign也支持可拔插式的编码器和解码器4.Spring Cloud对OpenFeign进行了封装使其支持了S…...
解决docker容器之间网络互通
docker容器之间相互访问 1.查看当前的网络 Copy [roothost ~]# docker network ls NETWORK ID NAME DRIVER SCOPE 3dd4643bb158 bridge bridge local 748b765aca52 host host …...
测试微服务:快速入门指南
在过去几年中,应用程序已经发展到拥有数百万用户并产生大量数据。使用这些应用程序的人期望快速响应和 24/7 可用性。为了使应用程序快速可用,它们必须快速响应增加的负载。 一种方法是使用微服务架构,因为在单体应用程序中,主要…...
MySQL Show Profile分析
6 Show Profile分析(重点) Show Profile是mysql提供可以用来分析当前会话中语句执行的资源消耗情况。可以用于SQL的调优的测量 官网文档 默认情况下,参数处于关闭状态,并保存最近15次的运行结果 分析步骤: 1、是否…...
基于Docker快速搭建蜜罐Dionaea(30)
实验目的 1. 快速搭建Dionaea蜜罐 2. 使用Nmap扫描测试Dionaea蜜罐预备知识1. 初步认识Dionaea dionaea,中文的意思即捕蝇草,是否形容蜜罐很形象?dionaea是nepenthes(猪笼草)的发展和后续,更加容易被部署和…...
WP_Query 的所有参数及其讲解和实用案例
WP_Query 是 WordPress 提供的一个强大的查询工具,用于获取与当前页面或文章相关的内容。下面是 WP_Query 的所有参数及其讲解:author: 查询特定作者的文章。可以是作者 ID、作者登录名或作者昵称。实用案例:查询作者为 "John Smith&quo…...
100个网络运维工作者必须知道的小知识!(上)
1)什么是链接? 链接是指两个设备之间的连接。它包括用于一个设备能够与另一个设备通信的电缆类型和协议。 2)OSI参考模型的层次是什么? 有7个OSI层:物理层,数据链路层,网络层,传输…...
Python如何获取大量电影影评,做可视化演示
前言 《保你平安》今天上映诶,有朋友看过吗,咋样啊 这是我最近比较想看的电影了,不过不知道这影评怎么样,上周末的点映应该是有蛮多人看的吧,可以采集采集评论看过的朋友发出来的评论,分析分析 这周刚好…...
【C语言】详讲qsort库函数
qsort函数介绍具体作用qsort函数是一种用于对不同类型数据进行快速排序的函数,排序算法有很多最常用的冒泡排序法仅仅只能对整形进行排序,qsort不同,排序类型不受限制,qsort函数的底层原理是一种快速排序.基本构造qsort( void* arr, int sz, int sizeof, cmp_code);…...
SEO技术风口来了|SEO能否抓住全球约93%的网络用户?
开篇词作者/出品人 | 美洽 SEO 流量专家 白桦为什么要做一个 SEO 专栏?在一部分人眼中,SEO(搜索引擎优化)已经是老掉牙的玩意儿,在这个信息爆炸的年代,它似乎已经无法承担吸引流量的主要作用。但ÿ…...
后进先出(LIFO)详解
LIFO 是 Last In, First Out 的缩写,中文译为后进先出。这是一种数据结构的工作原则,类似于一摞盘子或一叠书本: 最后放进去的元素最先出来 -想象往筒状容器里放盘子: (1)你放进的最后一个盘子(…...
【杂谈】-递归进化:人工智能的自我改进与监管挑战
递归进化:人工智能的自我改进与监管挑战 文章目录 递归进化:人工智能的自我改进与监管挑战1、自我改进型人工智能的崛起2、人工智能如何挑战人类监管?3、确保人工智能受控的策略4、人类在人工智能发展中的角色5、平衡自主性与控制力6、总结与…...
基于FPGA的PID算法学习———实现PID比例控制算法
基于FPGA的PID算法学习 前言一、PID算法分析二、PID仿真分析1. PID代码2.PI代码3.P代码4.顶层5.测试文件6.仿真波形 总结 前言 学习内容:参考网站: PID算法控制 PID即:Proportional(比例)、Integral(积分&…...
Go 语言接口详解
Go 语言接口详解 核心概念 接口定义 在 Go 语言中,接口是一种抽象类型,它定义了一组方法的集合: // 定义接口 type Shape interface {Area() float64Perimeter() float64 } 接口实现 Go 接口的实现是隐式的: // 矩形结构体…...
论文浅尝 | 基于判别指令微调生成式大语言模型的知识图谱补全方法(ISWC2024)
笔记整理:刘治强,浙江大学硕士生,研究方向为知识图谱表示学习,大语言模型 论文链接:http://arxiv.org/abs/2407.16127 发表会议:ISWC 2024 1. 动机 传统的知识图谱补全(KGC)模型通过…...
C# SqlSugar:依赖注入与仓储模式实践
C# SqlSugar:依赖注入与仓储模式实践 在 C# 的应用开发中,数据库操作是必不可少的环节。为了让数据访问层更加简洁、高效且易于维护,许多开发者会选择成熟的 ORM(对象关系映射)框架,SqlSugar 就是其中备受…...
Maven 概述、安装、配置、仓库、私服详解
目录 1、Maven 概述 1.1 Maven 的定义 1.2 Maven 解决的问题 1.3 Maven 的核心特性与优势 2、Maven 安装 2.1 下载 Maven 2.2 安装配置 Maven 2.3 测试安装 2.4 修改 Maven 本地仓库的默认路径 3、Maven 配置 3.1 配置本地仓库 3.2 配置 JDK 3.3 IDEA 配置本地 Ma…...
基于Java+MySQL实现(GUI)客户管理系统
客户资料管理系统的设计与实现 第一章 需求分析 1.1 需求总体介绍 本项目为了方便维护客户信息为了方便维护客户信息,对客户进行统一管理,可以把所有客户信息录入系统,进行维护和统计功能。可通过文件的方式保存相关录入数据,对…...
代码规范和架构【立芯理论一】(2025.06.08)
1、代码规范的目标 代码简洁精炼、美观,可持续性好高效率高复用,可移植性好高内聚,低耦合没有冗余规范性,代码有规可循,可以看出自己当时的思考过程特殊排版,特殊语法,特殊指令,必须…...
uniapp 实现腾讯云IM群文件上传下载功能
UniApp 集成腾讯云IM实现群文件上传下载功能全攻略 一、功能背景与技术选型 在团队协作场景中,群文件共享是核心需求之一。本文将介绍如何基于腾讯云IMCOS,在uniapp中实现: 群内文件上传/下载文件元数据管理下载进度追踪跨平台文件预览 二…...
