当前位置: 首页 > news >正文

一、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 中常用的算术表达式包括加法、减法、乘法和除法,使用加减乘除符号(+、-、*、/)即可进行计算。以下是一些例子:

  1. 加法:
sqlCopy code
SELECT 2 + 3; -- 输出结果为 5
  1. 减法:
sqlCopy code
SELECT 5 - 2; -- 输出结果为 3
  1. 乘法:
sqlCopy code
SELECT 3 * 4; -- 输出结果为 12
  1. 除法:
sqlCopy code
SELECT 6 / 3; -- 输出结果为 2

在使用算术表达式时,需要注意以下几点:

  1. 算术表达式中的数据类型应当一致,否则会产生类型转换错误。
  2. 除法运算可能产生精度损失,需要注意。
  3. 可以使用括号来改变运算顺序,例如:
sqlCopy code
SELECT (2 + 3) * 4; -- 输出结果为 20
  1. 可以使用各种数学函数来进行高级计算,例如:
scssCopy code
SELECT POW(2, 3); -- 输出结果为 8,表示 2 的 3 次方

逻辑表达式

MySQL 支持多种逻辑表达式,包括 AND、OR 和 NOT 等。
在SQL语句中,逻辑表达式用于连接两个或多个条件,以便在查询数据时进行过滤和筛选。在本文中,我们将探讨MySQL中常用的逻辑表达式以及它们的用法。

  1. AND 表达式

AND逻辑表达式用于连接两个或多个条件,只有当所有条件都为真时,AND表达式才返回TRUE。例如:

SELECT * FROM table_name WHERE column1 = 'value1' AND column2 = 'value2';


在这个例子中,查询条件需要同时满足列column1的值为’value1’和列column2的值为’value2’。

  1. OR 表达式

OR逻辑表达式用于连接两个或多个条件,只要有一个条件为真,OR表达式就返回TRUE。例如:

sqlCopy code
SELECT * FROM table_name WHERE column1 = 'value1' OR column2 = 'value2';

在这个例子中,查询条件需要满足列column1的值为’value1’或列column2的值为’value2’。

  1. NOT 表达式

NOT逻辑表达式用于反转条件的值,如果条件为真,则NOT表达式返回FALSE,如果条件为假,则NOT表达式返回TRUE。例如:

sqlCopy code
SELECT * FROM table_name WHERE NOT column1 = 'value1';

在这个例子中,查询条件需要列column1的值不为’value1’。

  1. IN 表达式

IN逻辑表达式用于检查列的值是否在指定的列表中。例如:

sqlCopy code
SELECT * FROM table_name WHERE column1 IN ('value1', 'value2', 'value3');

在这个例子中,查询条件需要列column1的值等于’value1’、'value2’或’value3’中的一个。

  1. BETWEEN 表达式

BETWEEN逻辑表达式用于检查列的值是否在指定的范围内。例如:

sqlCopy code
SELECT * FROM table_name WHERE column1 BETWEEN 'value1' AND 'value2';

在这个例子中,查询条件需要列column1的值在’value1’和’value2’之间。

  1. 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 等。
下面分别介绍这些聚合函数的用法和示例:

  1. SUM 函数:用于计算某一列的数值总和。

示例:

sqlCopy code
SELECT SUM(price) FROM products;

上面的语句会返回 products 表中 price 列的数值总和。

  1. MAX 函数:用于取出某一列的最大值。

示例:

sqlCopy code
SELECT MAX(price) FROM products;

上面的语句会返回 products 表中 price 列的最大值。

  1. MIN 函数:用于取出某一列的最小值。

示例:

sqlCopy code
SELECT MIN(price) FROM products;

上面的语句会返回 products 表中 price 列的最小值。

  1. AVG 函数:用于计算某一列的平均值。

示例:

sqlCopy code
SELECT AVG(price) FROM products;

上面的语句会返回 products 表中 price 列的平均值。

  1. 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(搜索引擎优化)已经是老掉牙的玩意儿,在这个信息爆炸的年代,它似乎已经无法承担吸引流量的主要作用。但&#xff…...

mxnet版本与numpy,requests等都不兼容问题

简介 跟着李沐学AI时遇到的mxnet环境问题。 问题 使用pip install mxnet时会重新安装相匹配的numpy和requests,而这新安装的这两个版本不满足d2l所需的版本。 然后报错: ERROR: pips dependency resolver does not currently take into account all …...

逆向分析——壳

你脑海中的壳是什么 壳在自然界是动物的保护壳,软件同样有保护壳,为了防止破解 也许大海给贝壳下的定义是珍珠,也许时间给煤炭下的定义是钻石 ——沙与沫 壳的由来 在DOS时代,壳一般指的是磁盘加密软件中的一段加密程序 后来发展…...

为 Argo CD 应用程序指定多个来源

在 Argo CD 2.6 中引入多源功能之前,Argo CD 仅限于管理来自 单个 Git 或 Helm 存储库 的应用程序。用户必须将每个应用程序作为 Argo CD 中的单个实体进行管理,即使资源存储在多个存储库中也是如此。借助多源功能,现在可以创建一个 Argo CD 应用程序,指定存储在多个存储库…...

verilog specify语法

specify block用来描述从源点(source:input/inout port)到终点(destination:output/inout port)的路径延时(path delay),由specify开始,到endspecify结束&…...

CMake编译学习笔记

CMake学习笔记CMake编译概述CMake学习资源CMake编译项目架构cmake指令CMakeList基础准则CMakeList编写项目构建cmake_minimum_required() 和 project()set()find_package()add_executable()aux_source_directory()连接库文件include_directories()和target_include_directories…...

Day913.反向代理和网关是什么关系 -SpringBoot与K8s云原生微服务实践

反向代理和网关是什么关系 Hi,我是阿昌,今天学习记录的是关于反向代理和网关是什么关系的内容。 一、反向代理 反向代理 是一种网络技术,用于将客户端的请求转发到一个或多个服务器上,并将响应返回给客户端。与正向代理不同&am…...

IT行业就业趋势显示:二季度平均月薪超8千

我国的IT互联网行业在近些年来规模迅速扩大,技能和技术水平也明显提升,目前IT互联网行业已经成为社会发展中新型产业的重要组成部分,行业的人才队伍也在不断的发展壮大,选择进入入互联网行业工作的人也越来越多。 根据58同城前段…...

【毕业设计】基于Java的五子棋游戏的设计(源代码+论文)

简介 五子棋作为一个棋类竞技运动,在民间十分流行,为了熟悉五子棋规则及技巧,以及研究简单的人工智能,决定用Java开发五子棋游戏。主要完成了人机对战和玩家之间联网对战2个功能。网络连接部分为Socket编程应用,客户端…...

C#:Krypton控件使用方法详解(第十四讲) ——kryptonSeparator

今天介绍的Krypton控件中的kryptonSeparator。下面介绍控件的外观属性如下图所示:Cursor属性:表示鼠标移动过该控件的时候,鼠标显示的形状。属性值如下图所示:DrawMoveIndicator属性:表示确定移动分隔符时是否绘制移动…...

Java的jar包打包成exe应用

将springboot项目使用maven打出的jar包,打成windows平台下exe应用程序包(自带jre环境)。 工具:1、exe4j 2、Inno Setup 工具放到网盘,链接:https://pan.baidu.com/s/1ZHX8P7u-7GBxaC6uaIC8Ag 提取码&#x…...

背景做网站公司/nba最新交易

第三章--概率与信息论[下]3.10 常用函数的有用性质3.11 贝叶斯规则(Bayes rule)3.12 连续型变量的技术细节3.13 信息论3.14 结构化概率模型3.10 常用函数的有用性质 logistic sigmoid函数 适用于生成伯努利分布参数与逻辑回归,二者本质一样&…...

wordpress 清除草稿/企业管理培训课程网课免费

关于电脑开机提示配置windows update还原失败如果电脑开机提示配置windowsupdate还原失败怎么办呐?下面我们就一起来看看解决办法吧。1、点击电脑左下角的图标,找到“运行”,并点开它。2、点开“运行”后会弹出一个对话框,我们在弹出的.对话…...

wordpress主题字体用隶书/手机怎么制作网页

Martin Fowler是ThoughtWorks首席科学家 ThoughtWorks的业务模式,主要通过咨询,来帮助改善企业的IT组织,改进软件开发方法,以软件带动企业业务发展。 ThoughtWorks并非一家传统的软件外包行业劳动密集型企业。 而是以发展高、精…...

与网站设计相关的软件主要有/免费智能seo收录工具

环境准备: redis-4.0.7.tar.gz redis的安装包Ruby环境(集群搭建需要用ruby创建, ruby环境在2.2以上。)rubygems-2.7.4.tgz 和 redis-3.2.2.gem (后面的是redis集群需要的ruby插件,rubygems是ruby的一个包管理工具&…...

做网站要学那些东西/关键词歌词

栈Stack 1.栈是一个先进后出(first in last out)的有序列表 2.栈的插入删除只能在线性表的同一端进行,允许插入删除的一端叫栈顶,另一端固定的叫栈底。 我们先演示下通过数组实现栈 package com.study;public class TestStack {p…...

手机上怎样制作网站/成都网站建设企业

冒泡排序 冒泡排序(Bubble Sort),是一种计算机科学领域的较简单的排序算法。它重复地走访过要排序的数列,一次比较两个元素,如果他们的顺序错误就把他们交换过来。走访数列的工作是重复地进行直到没有再需要交换&#…...