每天一SQL语句(04):SQL 语句函数篇

【开篇】SQL 语句函数篇

每天一SQL语句(04):SQL 语句函数篇_第1张图片

【1】SQL FUNCTIONS(函数)

SQL 拥有很多可用于计数和计算的内建函数。

1、函数的语法

select 函数名称(列名称) from 表名称;

2、函数的类型

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

函数的基本类型是:合计函数(Aggregate functions)、Scalar 函数

(1)Aggregate 函数

Aggregate 函数的操作面向一系列的值,并返回一个单一的值。

---- 注意 ----

如果在 select 语句的项目列表中的众多其它表达式中使用 select 语句,则这个 select 必须使用 group by 语句。

(2)Scalar 函数

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

---- 拥有如下 Orders 表 :

每天一SQL语句(04):SQL 语句函数篇_第2张图片

【2】SQL AVG() 函数

avg() 函数返回数值列的平均值,null 值不包括在计算中。

1、avg() 语法

select avg(列名称) from 表名称;

2、avg() 实例

(1)计算 "OrderPrice" 字段的平均值

SELECT AVG(OrderPrice) FROM Orders;

每天一SQL语句(04):SQL 语句函数篇_第3张图片

(2)找到 OrderPrice 值高于 OrderPrice 平均值的客户

SELECT Customer FROM Orders 

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

每天一SQL语句(04):SQL 语句函数篇_第4张图片

【3】SQL COUNT() 函数

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

1、count() 语法

(1)count(列名称) 函数返回指定列的值的数目(null 不计入):

select count(列名称) from 表名称;

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

select count(*) from 表名称;

(3)count(distinct 列名称) 函数返回指定列的不同值的数目:

select count(distinct 列名称) from 表名称;

2、count() 实例

(1)计算客户 "Carter" 的订单数

select count(Customer) from Orders where Customer = 'Carter';

每天一SQL语句(04):SQL 语句函数篇_第5张图片

(2)计算所有订单数

select count(*) from Orders;

每天一SQL语句(04):SQL 语句函数篇_第6张图片

(3)计算 "Orders" 表中不同客户的数目

select count(distinct Customer) from Orders;

每天一SQL语句(04):SQL 语句函数篇_第7张图片

【4】SQL FIRST() 函数

first() 函数返回指定的字段中第一个记录的值。可以使用 order by 语句对记录进行排序。

---- 注意 ----

MySQL 不包含 frist() 函数。

1、first() 语法

select first(列名称) from 表名称;

2、 first() 实例

查找 "OrderPrice" 列的第一个值

select first(OrderPrice) from Orders;

【5】SQL LAST() 函数

last() 函数返回指定的字段中最后一个记录的值。可以使用 order by 语句对记录进行排序。

---- 注意 ----

MySQL 不包含 last() 函数。

1、last() 语法

select last(列名称) from 表名称;

2、 last() 实例

查找 "OrderPrice" 列的最后一个值

select last(OrderPrice) from Orders;

【6】SQL MAX() 函数

max() 函数返回一列中的最大值。null 值不包括在计算中。

1、max() 语法

select max(列名称) from 表名称;

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

2、max() 实例

查找 "OrderPrice" 列的最大值

select max(OrderPrice) from Orders;

每天一SQL语句(04):SQL 语句函数篇_第8张图片

【7】SQL MIN() 函数

min() 函数返回一列中的最小值。null 值不包括在计算中。

1、min() 语法

select min(列名称) from 表名称;

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

2、min() 实例

查找 "OrderPrice" 列的最小值

select min(OrderPrice) from Orders;

每天一SQL语句(04):SQL 语句函数篇_第9张图片

【8】SQL SUM() 函数

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

1、sum() 语法

select sum(列名称) from 表名称;

2、sum() 实例

查找 "OrderPrice" 字段的总数

select sum(OrderPrice) from Orders;

每天一SQL语句(04):SQL 语句函数篇_第10张图片


【9】SQL GROUP BY 语句

group by 语句用于结合合计函数,根据一个或多个列对结果集进行分组。

1、group by 语法

select 列名称,合计函数(列名称) from 表名称

where 列名称 操作符 值

group by 列名称;

2、group by 实例

(1)查找每个客户的总金额(总订单)

select Customer,sum(OrderPrice) from Orders

group by Customers;

每天一SQL语句(04):SQL 语句函数篇_第11张图片

(2)查找每个客户每日的总金额(总订单)

select Customer,sum(OrderPrice) from Orders

group by Customer,OrderDate;

每天一SQL语句(04):SQL 语句函数篇_第12张图片

【10】SQL HAVING 子句

在 SQL 中增加 having 子句原因是:where 关键字无法与合计函数一起使用

1、having 语法

select 列名称,合计函数(列名称) from 表名称

where 列名称 操作符 值

group by 列名称

having 合计函数(列名称) 操作符 值;

2、having 实例

(1)查找订单总金额少于 2000 的客户

select Customer,sum(OrderPrice) from Orders

group by Customer

having sum(OrderPrice) < 2000;

每天一SQL语句(04):SQL 语句函数篇_第13张图片

(2)查找客户 "Bush" 或 "Adams" 拥有超过 1500 的订单总金额

select Customer,sum(OrderPrice) from Orders

where Customer = 'Bush' or Customer='Adams'

group by Customer

having sum(OrderPrice) > 1500 ;

每天一SQL语句(04):SQL 语句函数篇_第14张图片

【11】SQL UCASE() 函数

ucase() 函数把字段的值转换为大写。

1、ucase() 语法

select ucase(列名称) from 表名称;

2、ucase() 实例

选取 "LastName" 和 "FirstName" 列的内容,然后把 "LastName" 列转换为大写。

select ucase(LastName) as LastName,FirstName from Persons;

【12】SQL LCASE() 函数

lcase() 函数把字段的值转换为小写。

1、lcase() 语法

select lcase(列名称) from 表名称;

2、lcase() 实例

选取 "LastName" 和 "FirstName" 列的内容,然后把 "LastName" 列转换为小写。

select lcase(LastName) as LastName,FirstName from Persons;

【13】SQL MID() 函数

mid() 函数用于从文本字段中提取字符。

1、mid() 语法

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

---- 参数说明 ----

每天一SQL语句(04):SQL 语句函数篇_第15张图片

2、mid() 实例

从 OrderDate 列中提取 年月(7个字符):

select mid(OrderDate,1,7) from orders;

每天一SQL语句(04):SQL 语句函数篇_第16张图片

【14】SQL LEN() 函数

len() 函数返回文本字段中值的长度。

1、len() 语法

select len(列名称) from 表名称;

2、len() 实例

希望取得 Customer 列中的值的长度:

select len(Customer) from Orders;

每天一SQL语句(04):SQL 语句函数篇_第17张图片

【15】SQL ROUND() 函数

round() 函数用于把数值字段舍入为指定的小数位数。

1、round() 语法

select round(column_name,decimals) from table_name;

---- 参数说明 ----

每天一SQL语句(04):SQL 语句函数篇_第18张图片

2、round() 实例

Products 表如下:

希望把名称和价格舍入为最接近的整数

select ProductName,round(UnitPrice,0) from Products;

每天一SQL语句(04):SQL 语句函数篇_第19张图片

【16】SQL NOW() 函数

now() 函数返回当前的日期和时间。

1、now() 语法

select now() from table_name;

2、now() 实例

显示当天的日期所对应的名称和价格

select ProductName,UnitPrice,now() from Products;

每天一SQL语句(04):SQL 语句函数篇_第20张图片

【17】SQL FORMAT() 函数

format() 函数用于对字段的显示进行格式化。

1、format() 语法

select format(column_name,format) from table_name;

---- 参数说明 ----

每天一SQL语句(04):SQL 语句函数篇_第21张图片

2、format() 实例

显示每天日期所对应的的名称和价格(价格格式化为整数)

select ProductName,format(UnitPrice,0) from Products;

每天一SQL语句(04):SQL 语句函数篇_第22张图片

注释:具有四舍五入的功能。



- End -

若有错误,请随时指正。也欢迎大家一起讨论,让我们野蛮成长!

你可能感兴趣的:(每天一SQL语句(04):SQL 语句函数篇)