SQL 函数

SQL 函数:

数据库表:

 er图:

函数

SQL中包含以下几种类型的函数:

  1. 聚合函数:返回汇总值。
  2. 类型转换函数:将一种数据类型转换为另外一种。
  3. 日期函数:处理日期和时间。
  4. 数学函数:执行算术运算。
  5. 字符串函数:对字符串、二进制数据或表达式执行操作。
  6. 系统函数:从数据库返回在SQLSERVER中的值、对象或设置的特殊信息

A、聚合函数

它对其应用的每个行集返回一个值。

1、AVG(表达式) 返回表达式中所有的平均值。仅用于数字列并自动忽略NULL值。

返回每个产品类别的平均价格:

SQL AVG 函数:

定义和用法

AVG 函数返回数值列的平均值。NULL 值不包括在计算中。

SQL AVG() 语法:

SELECT AVG(column_name) FROM table_name

SQL AVG() 实例

我们拥有下面这个 "Orders" 表:

例子 1

现在,我们希望计算 "OrderPrice" 字段的平均值。

我们使用如下 SQL 语句:

SELECT AVG(OrderPrice) AS OrderAverage FROM Orders

结果集类似这样:

例子 2

现在,我们希望找到 OrderPrice 值高于 OrderPrice 平均值的客户。

我们使用如下 SQL 语句:

SELECT Customer FROM Orders
WHERE OrderPrice>(SELECT AVG(OrderPrice) FROM Orders)

结果集类似这样:

2、COUNT(表达式) 返回表达式中非NULL值的数量。可用于数字和字符列。

统计有多少个客户电话:

   

SQL COUNT() 函数:

COUNT() 函数返回匹配指定条件的行数。

SQL COUNT() 语法

SQL COUNT(column_name) 语法

COUNT(column_name) 函数返回指定列的值的数目(NULL 不计入):

SELECT COUNT(column_name) FROM table_name

SQL COUNT(*) 语法

COUNT(*) 函数返回表中的记录数:

SELECT COUNT(*) FROM table_name

SQL COUNT(DISTINCT column_name) 语法

COUNT(DISTINCT column_name) 函数返回指定列的不同值的数目:

SELECT COUNT(DISTINCT column_name) FROM table_name

注释:COUNT(DISTINCT) 适用于 ORACLE 和 Microsoft SQL Server,但是无法用于 Microsoft Access。

SQL COUNT(column_name) 实例

我们拥有下列 "Orders" 表:

现在,我们希望计算客户 "Carter" 的订单数。

我们使用如下 SQL 语句:

SELECT COUNT(Customer) AS CustomerNilsen FROM Orders
WHERE Customer='Carter'

以上 SQL 语句的结果是 2,因为客户 Carter 共有 2 个订单:

SQL COUNT(*) 实例 :

如果我们省略 WHERE 子句,比如这样:

SELECT COUNT(*) AS NumberOfOrders FROM Orders

结果集类似这样:

这是表中的总行数。

SQL COUNT(DISTINCT column_name) 实例

现在,我们希望计算 "Orders" 表中不同客户的数目。

我们使用如下 SQL 语句:

SELECT COUNT(DISTINCT Customer) AS NumberOfCustomers FROM Orders

结果集类似这样:

这是 "Orders" 表中不同客户(Bush, Carter 和 Adams)的数目。

3、COUNT(*)返回组中的行数(包括有NULL值的列)。

返回每个品牌和产品数量。 此外,它仅返回产品数量大于 20 的品牌:

4、MAX(表达式) 返回表达式中的最大值,忽略NULL值。可用于数字、字符和日期时间列。

以下语句获取每个品牌的品牌名称和最高价格:

SQL MAX() 函数:

MAX() 函数

MAX 函数返回一列中的最大值。NULL 值不包括在计算中。

SQL MAX() 语法

SELECT MAX(column_name) FROM table_name

注释:MIN 和 MAX 也可用于文本列,以获得按字母顺序排列的最高或最低值。

SQL MAX() 实例

我们拥有下面这个 "Orders" 表:

现在,我们希望查找 "OrderPrice" 列的最大值。

我们使用如下 SQL 语句:

SELECT MAX(OrderPrice) AS LargestOrderPrice FROM Orders

结果集类似这样:

5、MIN(表达式) 返回表达式中的最小值,忽略NULL值。可用于数字、字符和日期时间列。

获取最低价格大于 500 的产品类别。

 

SQL MIN() 函数:

MIN() 函数

MIN 函数返回一列中的最小值。NULL 值不包括在计算中。

SQL MIN() 语法

SELECT MIN(column_name) FROM table_name
​​​​​​​

注释:MIN 和 MAX 也可用于文本列,以获得按字母顺序排列的最高或最低值。

SQL MIN() 实例

我们拥有下面这个 "Orders" 表:

现在,我们希望查找 "OrderPrice" 列的最小值。

我们使用如下 SQL 语句:

SELECT MIN(OrderPrice) AS SmallestOrderPrice FROM Orders
​​​​​​​

结果集类似这样:

6、SUM(表达式) 返回表达式中所有的总和,忽略NULL值。仅用于数字列。

查找每种产品的库存,仅返回库存大于 100 的产品:

SQL SUM() 函数:

SUM() 函数

SUM 函数返回数值列的总数(总额)。

SQL SUM() 语法

SQL SUM() 实例

我们拥有下面这个 "Orders" 表:

现在,我们希望查找 "OrderPrice" 字段的总数。

我们使用如下 SQL 语句:

结果集类似这样:

null值对计算的影响,如何处理

B、转换函数

1、CONVERT(data_type[(length)], expression [, style])

2、CAST( expression AS data_type )

CastConvert的区别

  1. Cast 和Convert都是用来将一种数据类型的表达式转换为另一种数据类型的表达式。
  2. CAST 和 CONVERT 提供相似的功能,只是语法不同。
  3. 在时间转化中一般用到convert,因为它比cast多加了一个style(int类型),可以转化成不同时间的格式。 

 

   

C、日期函数

由于日期不能直接执行算术函数,所以日期函数就十分有用。

1、GETDATE() 当前的系统日期。

2、DATEADD(日期部分,number,date) 返回带有指定数字(number)的日期(date),该数字添加到指定的日期部分(datepart) 。

3、DATEDIFF(日期部分,date1,date2) 返回两个日期中指定的日期部分之间的差值。

4、DATENAME(日期部分,date) 返回日期中日期部分的字符串形式。

  

注:DATENAME 和 DATEPART 的区别,返回的值类型不同,一个是VARCHAR一个是INT,另外就是星期会用本地语言来表示。

1、DATEPART(日期部分,date) 返回日期中指定的日期部分的整数形式。

2、YEAR(date) 返回指定日期的年份数值。

3、MONTH(date)返回指定日期的月份数值。

4、DAY(date)返回指定日期的天数值。

注:当显示日期列的内容时如果只显示年月日部分,可以使用CONVERT转换函数对日期列进行转换。

SQL中日期的表示方法及有效范围,如下:

D、数字函数

对数字值执行代数运算。

1、ABS(num_expr) 返回数值表达式的绝对值。

2、FLOOR(num_expr) 返回小于或等于数值表达式的最大整数。

3、CEILING(num_expr) 返回大于或等于数值表达式的最小整数。

4、RAND([seed]) 随机返回的到0-1之间的近似浮点值,可以对seed指定为整数表达式(可选)。

  

5、ROUND(num_expr,length) 对数值表达式截取指定的整数长度,返回四舍五入后的值。

E、字符串函数

可用于binary 和varbinary数据类型列,但主要用于char和varchar数据类型。

1、Expr1+expr2 返回两个表达式的组合形式的字符串。注意int类型。

2、LEN(char_expr) 返回字符表达式的长度。

3、LOWER(char_expr) 将字符表达式全部转换为小写。

4、LTRIM(char_expr) 返回删除掉前面空格的字符表达式。

5、EVERSE(char_expr) 反转字符表达式。

6、RIGHT(char_expr,int_expr) 返回从字符表达式最右端起根据指定的字符个数得到的字符。

7、RTRIM(char_expr) 返回删除掉其后空格的字符表达式。

8、SUBSTRING(char_expr,start,length) 返回从字符表达式的指定位置开始,截取指定长度得到的字符集。

9、UPPER(char_expr) 将字符表达式全部转换为大写。

F、系统函数:

用于返回元数据或配置设置。

1、COALESCE(expr1,expr2, xprN) 返回第一个非NULL表达式。

2、DATALENGTH('expr') 返回任何数据类型的实际长度。

3、ISNULL(expr,value) 使用指定的值替换的NULL表达式。

4、NULLIF(expr1,expr2) Expr1与Expr2相等时,返回Null,否则返回第一个表达式。

5、row_number分页:

row_number的用途的非常广泛,一般可以用来实现web程序的分页,他会为查询出来的每一行记录生成一个序号,依次排序且不会 重复,注意使用row_number函数时必须要用over子句选择对某一列,或者几列进行排序才能生成序号。

 

   

以上就是我最近整理的新的知识内容,现在分享给你们,希望可以帮助到你们。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值