首页/新闻资讯/正文详情

SQL必知必会 8-9

发布时间:2026/11/2 18:59:03 来源:云帆数科 栏目:资讯中心
SQL必知必会 8-9
本文是个人学习笔记学习素材参考《SQL必知必会第5版》仅用于个人学习记录非商用。样例数据、练习思路来自该书。八.使用函数处理数据8.1函数SQL函数不可移植意味着为特定SQL实现编写的代码在其他实现中可能不能用DBMS函数的差异函数语法提取字符串的组成部分DB2,Oracle,PostgreSQL,和SQLite使用SUBSTR()MariaDB,MYSQL和SQL Server使用SUBSTRING()数据类型转换Oracle使用多个函数每种类型的转换有一种函数DB2和PostgreSQL使用CAST()MariaDB,MYSQL和SQL Server使用CONVERT()取当前日期DB2和PostgreSQL使用CURRENT_DATAMariaDB和MYSQL使用CURDATE()Oracle使用SYSDATASQL Server使用GETDATA()SQLite使用DATA()8.2使用函数8.2.1文本处理函数例UPPER()将文本转换为大写SELECT VEND_NAME,UPPER(VEND_NAME)AS VEND_NAME_UPCASEFROM VENDORSORDER BY VEND_NAME;常用的文本处理函数函数说明LEFT()返回字符串左边的字符LENGTH()返回字符串的长度LOWER()将字符串转换为小写LTRIM()去掉字符串左边的空格RIGHT()返回字符串右边的字符RTRIM()去掉字符串右边的空格SUBSTR()或SUBSTRING()提取字符串的组成部分SOUNDEX()返回字符串的SOUNDEX值UPPER()将字符串转换为大写SOUNDEX是一个将任何文本串转换为描述其语音表示的字母数字模式的算法例有个顾客联系名输入错误成Michelle Green正确的是Michael Green在不知道错误输入的联系名的情况下如何找出SELECT CUST_NAME,CUST_CONTACTFROM CUSTOMERSWHERESOUNDEX(CUST_CONTACT)SOUNDEX(Michael Green);8.2.2日期和时间处理函数在SQL Server中用DATEPART(),这个函数有两个参数分别是返回的成分和从中返回成分的日期在PostgreSQL中用DATE_PART()在Oracle中用EXTRACT()、BETWEENto_date()函数用来将两个字符串转换为日期DB2MYSQLMariaDB用户可使用名为YEAR()的函数从日期中提取年份SELECT ORDER_NUMFROM ORDERSWHEREYEAR(ORDER_DATE) 2020;8.2.3数值处理函数常用数值处理函数函数说明ABS()返回一个数的绝对值COS()返回一个角度的函数EXP()返回一个数的指数值PI()返回圆周率Π的值SIN()返回一个角度的正弦SQRT()返回一个数的平方根TAN()返回一个角度的正切九.汇总数据9.1聚集函数聚集函数:对某些行运行的函数,计算并返回一个值SQL聚集函数函数说明AVG()返回某列的平均值COUNT()返回某列的行数MAX()返回某列的最大值MIN()返回某列的最小值SUM()返回某列值之和9.1.1 AVG()函数AVG()通过对表中行数计数并计算其列值之和,求得该列的平均值例:返回Product表中所有产品的平均值SELECTAVG(PROD_PRICE)AS AVG_PRICEFROM PRODUCTS;AVG()也可以用来确定特定列或行的平均值SELECTAVG(PROD_PRICE)AS AVG_PRICEFROM PRODUCTSWHERE VEND_ID DLL01;注意:AVG()只用于单个列,想获得多个列的平均值必须使用多个AVG()函数,AVG()函数忽略列值为null的行9.1.2 COUNT()函数COUNT()确定表中行的数目或符合特定条件的行的数目COUNT(*)对表中所有行的数目进行计数COUNT(column)对特定列中具有值的行进行计数,忽略null值例:返回customers表中顾客的总数SELECTCOUNT(*)AS NUM_CUSTFROM CUSTOMERS;例:只对具有电子邮件地址的客户计数SELECTCOUNT(CUST_EMAIL)AS NUM_CUSTFROM CUSTOMERS;如果指定列名,则COUNT()函数会忽略指定列的值为NULL的行如果用的是COUNT(*)则不忽略9.1.3 MAX()函数MAX()返回指定列中的最大值,MAX()要求指定列名SELECTMAX(PROD_PRICE)AS MAX_PRICEFROM PRODUCTS;提示:在用于非数值的文本数据时,MAX()返回按改列排序后的最后一行,MAX()函数忽略列值为NULL的行9.1.4 MIN()函数MIN()返回指定列的最小值,要求指定列名SELECTMIN(PROD_PRICE)AS MIN_PRICEFROM PRODUCTS;提示:在用于非数值的文本数据时,MIN()返回该列排序后最前面的行MIN()函数忽略列值为NULL的行9.1.5 SUN()函数SUM()用来返回指定列值的和SELECTSUM(QUANTITY)AS ITEM_ORDEREDFROM ORDERITEMSWHERE ORDER_NUM 20005;提示:所有聚集函数都可用来执行多个列上的计算SUM()函数忽略列值为NULL的行9.2 聚集不同值以上5个聚集函数都可以如下使用对所有行执行计算,指定ALL参数或不指定参数(因为ALL是默认行为)只包含不同值,指定DISTINCT参数例:使用AVG()函数返回特定供应商提供的产品的平均价格SELECT AVG(DISTINCTPROD_PRICE) AS AVG_PRICEFROM PRODUCTSWHERE VEND_ID DLL01;注意:DISTINCT不能用于COUNT(*),DISTINCT必须使用列名,不能用于计算或表达式9.3 组合聚集函数SELECT COUNT(*) AS NUM_ITEMS,MIN(PROD_PRICE) AS PRICE_MIN,MAX(PROD_PRICE) AS PRICE_MAX,AVG(PROD_PRICE) AS PRICE_AVGFROM PRODUCTS;#别忘了逗号,

相关推荐

RAG 答错先别换模型:从证据到答案的五项检查
RAG 答错先别换模型:从证据到答案的五项检查

RAG 答错先别换模型:从证据到答案的五项检查一个 RAG 助手回答“退货申请需要在五天内送达”,但当前规则其实是“完整申请收到后,三个工作日内送达”。错误可能来自过期文档、分块丢失条件,也可能来自模型误读。只看最终答案&… · 2026/11/2 18:57:56

工业车辆BMS通信协议分析实战(一):RS485抓包、Modbus解析与CAN适配
工业车辆BMS通信协议分析实战(一):RS485抓包、Modbus解析与CAN适配

文章目录一、项目背景:从两根未知通信线开始二、通信协议分析串口参数(⭐)主要寄存器定义读取主参数的标准命令读取时钟字段组(0x06D6)三、485转换CAN四、免责声明一、项目背景:从两根未知通信线开始 近期… · 2026/11/2 18:57:56

用 Rust 做数控加工仿真?这个库把“材料去除“这件事做透了
用 Rust 做数控加工仿真?这个库把“材料去除“这件事做透了

cutrail —— 一个用 Rust 写的材料去除仿真核心,正在悄悄补齐 CAM 开源工具链里最关键的那块拼图。先说一个老难题 做数控加工的人都知道:上机之前必须验证刀路。 一段 NC 程序写错了,轻则过切报废工件,重则撞机伤设备。所以在真… · 2026/11/2 18:56:54

生日悖论:从直觉误区到代码验证的完整拆解
生日悖论:从直觉误区到代码验证的完整拆解

生日悖论这个问题,我在面试新人的时候特别喜欢拿来当开胃题。不是因为它难,恰恰是因为它太反直觉了——很多人第一反应是“50个人里有两个同一天生日?概率应该很小吧”,然后一算发现接近97%,当场愣住。这道题表面上是概… · 2026/11/3 17:42:11

Google AI Agent手册六层架构拆解:从Agent2Agent到no-code落地实践
Google AI Agent手册六层架构拆解:从Agent2Agent到no-code落地实践

1. 为什么这份手册值得逐页拆解Google 发布的《AI Agent Handbook》在圈内流传开来之后,我第一时间通读了两遍。第一遍是当作产品介绍看的,第二遍是带着"如果我要在企业里落地一套 Agent 系统,这份手册能给我什么"的问题去读的。结… · 2026/11/3 17:42:11

AI编码代理的机密安全上下文边界设计与实践
AI编码代理的机密安全上下文边界设计与实践

1. 项目概述:为什么“AI编码代理”必须拥有“机密安全的上下文边界”最近三个月,我连续参与了4个企业级AI辅助开发落地项目,从金融风控系统的代码补全,到医疗影像平台的后端服务重构,再到工业IoT设备固件的自动化测试脚… · 2026/11/3 17:42:11

JSP在线教育平台开发实战与架构解析
JSP在线教育平台开发实战与架构解析

1. 项目概述:在线教育平台的JSP实现方案这个基于JSP技术的在线课程网站项目,是我在2013年参与开发的一个典型教育类Web应用。整套方案包含完整的程序源码、MySQL数据库设计、部署文档和开发环境配置指南,采用经典的JSPServletJavaBean架构模式… · 2026/11/3 17:42:11

AI治理、算力与模型迭代:三条热搜背后的技术选型逻辑
AI治理、算力与模型迭代:三条热搜背后的技术选型逻辑

1. 三条热搜背后的技术信号拆解 1.1 为什么这三件事值得放在一起看 2026年9月23日这一天,AI圈的信息密度高得有点离谱。安理会就AI"限速"议题召开听证会、云栖大会上真武V900芯片正式亮相、Gemini 4被曝出"幽灵模型"泄题事件——三件事分别对应… · 2026/11/3 17:42:11

网络安全架构与访问控制技术深度解析
网络安全架构与访问控制技术深度解析

1. 网络安全架构的本质认知 网络安全从来不是简单的设备堆砌或策略文档,而是一个动态演进的系统工程。从业十五年,我见过太多企业花费数百万购置高端防火墙却因默认密码被攻破的案例。真正的安全防护需要从三个维度构建:技术体系、管理流程和… · 2026/11/3 17:41:10

双极步进电机控制实战:DRV8818PWPR与PIC18F86K22驱动调试
双极步进电机控制实战:DRV8818PWPR与PIC18F86K22驱动调试

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/2 13:10:28

STM32F207ZG + DRV8818PWPR 步进电机驱动实战解析
STM32F207ZG + DRV8818PWPR 步进电机驱动实战解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/3 6:04:24

DRV8818PWPR+dsPIC30F4013工业级双极步进电机控制方案
DRV8818PWPR+dsPIC30F4013工业级双极步进电机控制方案

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/3 5:52:46

STM32F411RE与MAX14431实现SPI隔离:工业现场抗共模干扰实战
STM32F411RE与MAX14431实现SPI隔离:工业现场抗共模干扰实战

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/3 1:01:59

ESP32+大模型AI硬件开发:从Demo到产品的8个工程问题
ESP32+大模型AI硬件开发:从Demo到产品的8个工程问题

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/3 1:01:59

基于MAX14431BAEE+与PIC18F85J10的SPI隔离方案设计与实践
基于MAX14431BAEE+与PIC18F85J10的SPI隔离方案设计与实践

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/3 1:01:59

双极步进电机控制实战:DRV8818PWPR与PIC18F86K22驱动调试
双极步进电机控制实战:DRV8818PWPR与PIC18F86K22驱动调试

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/2 13:10:28

STM32F207ZG + DRV8818PWPR 步进电机驱动实战解析
STM32F207ZG + DRV8818PWPR 步进电机驱动实战解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/3 6:04:24

DRV8818PWPR+dsPIC30F4013工业级双极步进电机控制方案
DRV8818PWPR+dsPIC30F4013工业级双极步进电机控制方案

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/3 5:52:46

了解更多?预约专属演示

我们的顾问将为您一对一讲解产品与方案

企业微信二维码