SQL不完全手册(三):函数

本文涉及的产品
RDS SQL Server Serverless,2-4RCU 50GB 3个月
推荐场景:
云数据库 RDS SQL Server,基础系列 2核4GB
简介: SQL不完全手册(三):函数

原博主博客地址:https://blog.csdn.net/qq21497936

本文章博客地址:https://blog.csdn.net/qq21497936/article/details/80262309

 

SQL不完全手册(三):函数

 

SQL系列

SQL不完全手册(一):概念和基础语句》:

                        https://blog.csdn.net/qq21497936/article/details/80207610

SQL不完全手册(二):高级语句》:

                         https://blog.csdn.net/qq21497936/article/details/80242112

SQL不完全手册(三):函数》:

                         https://blog.csdn.net/qq21497936/article/details/80262309

 

 

函数

1.函数说明

   SQL有计数和计算的内建函数。

   我们将使用下表进行查询,建表语句附在下面:

drop table student;
create table student (
  id int not null primary key,
  name varchar(20),
  age int,
  birthday date
)
insert into student values(1,'yang',18,'2000-01-01')
insert into student values(2,'yang2',20,'1998-02-01')
insert into student values(3,'yang5',18,'2000-03-01')
insert into student values(4,'yang4',20,'1998-04-01')
insert into student values(5,'yang3',18,'2000-05-01')
insert into student values(6,'yang7',21,'1997-04-01')
insert into student values(7,'yang6',30,'1988-05-01')
select * from student

图片.png

 

函数的语法:

 

select function(table_column) from table_name

函数的类型

   在SQL中,基本的函数类型和种类有若干种。函数的基本类型是:

 

  • Aggregate函数
  • Scalar函数

合计函数(Aggregate functions)

   Aggregate函数的操作对象是一系列的值,并返回一个单一的值。

注释:如果在select语句的项目列表中的众多其他表达式中使用select语句,则这个select必须使用group by语句!

表:SQL Server中的合计函数

函数

描述

AVG(column)

返回某列的平均值

BINARY_CHECKSUM

 

CHECKSUM

 

CHECKSUM_AGG

 

COUNT(column)

返回某列的行数(不包括NULL值)

COUNT(*)

返回被选行数

COUNT(DISTINCT column)

返回相异结果的数目

FIRST(column)

返回在指定的域中第一个记录的值

(sqlserver2000不支持)

LAST(column)

返回在指定的域中最后一个记录的值

(sqlserver2000不支持)

MAX(column)

返回某列的最大值

MIN(column)

返回某列的最小值

STDEV(column)

 

STDEVP(column)

 

SUM(column)

返回某列的综合

VAR(column)

 

VARP(column)

 

表:MS Access中的合计函数

函数

描述

AVG(column)

返回某列的平均值

COUNT(column)

返回某列的行数(不包括NULL值)

COUNT(*)

返回被选行数

FIRST(column)

返回在指定的域中第一个记录的值

LAST(column)

返回在指定的域中最后一个记录的值

MAX(column)

返回某列的最大值

MIN(column)

返回某列的最小值

STDEV(column)

 

STDEVP(column)

 

SUM(column)

返回某列的综合

VAR(column)

 

VARP(column)

 

Scalar函数

   Scalar函数的操作面向某个单一的值,并返回基于输入值的一个单一的值。

表:MS Access中的Scalar函数

函数

描述

UCASE(c)

将某个域转换为大写

LCASE(c)

将某个域转换为小写

MID(c, start[,end])

从某个文本域提取字符

LEN(c)

返回某个文本域的长度

INSTR(c,char)

返回在某个文本域中指定字符的数据值位置

LEFT(c,number_of_char)

返回某个被请求的文本域的左侧部分

RIGHT(c,number_of_char)

返回某个被请求的文本域的右侧部门

ROUND(c,decimals)

对某个数值域进行指定小数位数的四舍五入

MOD(x,y)

返回除法操作的余数

NOW()

返回当前的系统日期

FORMAT(c,format)

改变某个域的显示方式

DATEDIFF(d,date1,date2)

用于执行日期计算

2.返回列的平均值:SQL AVG()

语法

select avg(column_name) from table_name;

实例:求某列的平均值

select * from student
select avg(id) from student
select avg(age) as avgOfAge from student
select avg(name) as avgOfName from student

图片.png

实例:查询年龄大于平均值的人员记录列表

select * from student where age > (select avg(age) from student)
select * from student where age > (select avg(age) as avgOfAge from student)
select * from student where age >= (select avg(age) from student)

图片.png

 

 

 

3.返回匹配指定条件的行数:SQL COUNT()

语法1:返回指定列的值的数目(NULL不会计入)

select count(cloumn_name) from table_name

语法2:返回表中的记录数

select count(*) from table_name

语法3:返回指定列的不同值得数目

select count(distinct column_name) from table_name

实例:

附:添加一条记录(为了测试null)

insert into student(id, name) values(8,'yang')
select * from student
select count(*) from student
select count(name) from student
select count(age) from student
select count(distinct age) from student
select count(distinct birthday) from student

图片.png

 

4.返回指定的字段的第一个记录的值:SQL FIRST()

 

   可使用order by语句对记录进行排序。

语法:

select first(column_name) from table_name

实例:

图片.png

替代方法1:返回查询到的第一条记录;

图片.png

5.返回指定的字段的最后一个记录的值:SQL LAST()

图片.png

6.返回一列中的最大值:SQL MAX()

语法

select max(coulmn_name) from table_name

注意:min和max也可用于文本列,以获得按字母排序的最高或最低值

实例:

select * from student
select max(birthday) as maxBirthday from student
select min(id) as minId from student

图片.png

7.返回一列中的最小是:SQL MIN()

语法

select min(column_name) from table_name

参照6.返回一列中的最大值:SQL MAX()

8.返回一列中所有值得和:SQL SUM()

语法

select sum(column_name) from table_name

实例

图片.png

 

 

 

9.合计函数(比如sum)分组:SQL GROUP BY

语法

select coumn_name, aggregate_function(column_name) from table_name 
where column_name operator value 
group by column_name

实例

select * from student
select age, sum(id) from student group by age
select age,name, sum(id) from student group by age,name

图片.png


 

 

10.解决WHERE关键字无法与合计函数一起用:SQL HAVING()

语法:

select coulmn_name, aggregate_function(column_name)
from table_name
where coulumn_name operator value
group by column_name
having aggregate_function(column_name) operator value

实例

select * from student
select age, sum(id) from student group by age having sum(id) > 8

图片.png

 

 

 

11.返回文本字段转换为大写:SQL UCASE()/UPPER()

语法

select ucase(column_name) from table_name

sql server 2008不支持ucase,用upper替代

select * from student
select upper(name) from student

实例

图片.png

12.返回文本字段转换为小写:SQL LCASE()/LOWER()

语法

select lcase(column_name) from table_name

sql server 2008不支持lcase,用lower替代

实例

select * from student
select lower(name) from student

图片.png

13.返回文本字段中的某段字符:SQL MID()/SUBSTRING()

语法

select mid(column_name, start[,length]) from table_name

sql server 2008不支持mid,用substring替代

图片.png

14.返回文本字段中值得长度:SQL LEN()

语法

select len(name) from student

实例

select * from student
select len(name) as idd from student

图片.png

 

15.把树枝字段舍入为指定的小数位数:SQL ROUND()

 

语法

select round(column_name, decimals) from table_name

实例:先添加新的一列为float

alter table student add height float
update student set height = 1.33333
update student set height = 1.37777 where id between 1 and 3
select * from student
select round(height, 2) from student

图片.png

 

16.返回当前的日期和时间:SQL NOW()/GETDATE()

 

语法

select now() from table_name

sql server 2008不支持改函数,使用getdate替代

select *,getdate() as now from student

图片.png

17.对字段的现实进行格式化:SQL FORMAT()

语法

select format(column_name, format) from table_name

实例

select *,format(getdate(),'yy-MM-dd') as now from student

图片.png

 

《SQL不完全手册(四):多表查询》后续发布

 

原博主博客地址:https://blog.csdn.net/qq21497936

本文章博客地址:https://blog.csdn.net/qq21497936/article/details/80262309


相关实践学习
使用SQL语句管理索引
本次实验主要介绍如何在RDS-SQLServer数据库中,使用SQL语句管理索引。
SQL Server on Linux入门教程
SQL Server数据库一直只提供Windows下的版本。2016年微软宣布推出可运行在Linux系统下的SQL Server数据库,该版本目前还是早期预览版本。本课程主要介绍SQLServer On Linux的基本知识。 相关的阿里云产品:云数据库RDS SQL Server版 RDS SQL Server不仅拥有高可用架构和任意时间点的数据恢复功能,强力支撑各种企业应用,同时也包含了微软的License费用,减少额外支出。 了解产品详情: https://www.aliyun.com/product/rds/sqlserver
相关文章
|
24天前
|
SQL Oracle 关系型数据库
SQL优化-使用联合索引和函数索引
在一次例行巡检中,发现一条使用 `to_char` 函数将日期转换为字符串的 SQL 语句 CPU 利用率很高。为了优化该语句,首先分析了 where 条件中各列的选择性,并创建了不同类型的索引,包括普通索引、函数索引和虚拟列索引。通过对比不同索引的执行计划,最终确定了使用复合索引(包含函数表达式)能够显著降低查询成本,提高执行效率。
|
30天前
|
SQL 数据库 数据库管理
数据库SQL函数应用技巧与方法
在数据库管理中,SQL函数是处理和分析数据的强大工具
|
1月前
|
SQL 数据库 索引
SQL中COUNT函数结合条件使用的技巧与方法
在SQL查询中,COUNT函数是一个非常常用的聚合函数,用于计算表中满足特定条件的记录数
|
1月前
|
SQL 关系型数据库 MySQL
SQL日期函数
SQL日期函数
|
2月前
|
SQL 关系型数据库 C语言
PostgreSQL SQL扩展 ---- C语言函数(三)
可以用C(或者与C兼容,比如C++)语言编写用户自定义函数(User-defined functions)。这些函数被编译到动态可加载目标文件(也称为共享库)中并被守护进程加载到服务中。“C语言函数”与“内部函数”的区别就在于动态加载这个特性,二者的实际编码约定本质上是相同的(因此,标准的内部函数库为用户自定义C语言函数提供了丰富的示例代码)
|
3月前
|
SQL 数据处理 数据库
|
3月前
|
SQL Oracle 关系型数据库
SQL 中的大小写处理函数详解
【8月更文挑战第31天】
123 0
|
3月前
|
SQL 数据采集 数据挖掘
为什么要使用 SQL 函数?详尽分析
【8月更文挑战第31天】
47 0
|
3月前
|
SQL 存储 关系型数据库
COALESCE 函数:SQL中的空值处理利器
【8月更文挑战第31天】
342 0
|
3月前
|
SQL 关系型数据库 数据处理

热门文章

最新文章

下一篇
无影云桌面