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

本文涉及的产品
云数据库 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
相关文章
|
5月前
|
SQL 数据库
SQL 中的 MIN 和 MAX 以及常见函数详解及示例演示
SQL中的MIN()函数和MAX()函数用于查找所选列的最小值和最大值,分别。以下是它们的用法和示例:
158 0
|
6天前
T-sql 高级查询( 5*函数 联接 分组 子查询)
T-sql 高级查询( 5*函数 联接 分组 子查询)
|
1月前
|
SQL 关系型数据库 MySQL
MYSQL数字函数实操宝典:场景化SQL语句一网打尽
本文作为MYSQL数字函数实操宝典,通过丰富的场景化SQL语句实例,一网打尽了MYSQL中常用的数字函数。我们深入探讨了ROUND函数在金额四舍五入、评分计算等场景的应用,展现了其在确保数据准确性和展示规范性方面的重要性。同时,FLOOR函数在分页处理、价格计算等实际案例中的灵活运用,也体现了其在向下取整方面的优势。此外,CEIL函数在分页处理、费用计算等方面的应用案例,充分展示了其向上取整的功能特点。这些实用案例不仅有助于读者更好地理解MYSQL数字函数的工作原理,更为开发者在实际开发中提供了有价值的参考
46 8
|
2月前
|
SQL 存储 Python
Microsoft SQL Server 编写汉字转拼音函数
Microsoft SQL Server 编写汉字转拼音函数
|
2月前
|
SQL 存储 Apache
在 Apache Flink SQL 中,并没有内置的 GROUP_CONCAT 函数
【2月更文挑战第16天】在 Apache Flink SQL 中,并没有内置的 GROUP_CONCAT 函数
212 2
|
3月前
|
SQL 存储
SQL Server基本函数
SQL Server基本函数
|
3月前
|
SQL 安全 关系型数据库
MySQL技能完整学习列表3、SQL语言基础——3、SQL运算符和函数
MySQL技能完整学习列表3、SQL语言基础——3、SQL运算符和函数
38 0
|
4月前
|
SQL Perl
PL/SQL的函数和包
PL/SQL的函数和包
28 1