SQL函数超详细的SQL语言学习资料私人收藏.docx
- 文档编号:11739632
- 上传时间:2023-03-31
- 格式:DOCX
- 页数:24
- 大小:20.54KB
SQL函数超详细的SQL语言学习资料私人收藏.docx
《SQL函数超详细的SQL语言学习资料私人收藏.docx》由会员分享,可在线阅读,更多相关《SQL函数超详细的SQL语言学习资料私人收藏.docx(24页珍藏版)》请在冰豆网上搜索。
SQL函数超详细的SQL语言学习资料私人收藏
SQL函数
∙PreviousPage
∙NextPage
SQL拥有很多可用于计数和计算的内建函数。
函数的语法
内建SQL函数的语法是:
SELECTfunction(列)FROM表
函数的类型
在SQL中,基本的函数类型和种类有若干种。
函数的基本类型是:
∙Aggregate函数
∙Scalar函数
合计函数(Aggregatefunctions)
Aggregate函数的操作面向一系列的值,并返回一个单一的值。
注释:
如果在SELECT语句的项目列表中的众多其它表达式中使用SELECT语句,则这个SELECT必须使用GROUPBY语句!
"Persons"table(在大部分的例子中使用过)
Name
Age
Adams,John
38
Bush,George
33
Carter,Thomas
28
MSAccess中的合计函数
函数
描述
AVG(column)
返回某列的平均值
COUNT(column)
返回某列的行数(不包括NULL值)
COUNT(*)
返回被选行数
FIRST(column)
返回在指定的域中第一个记录的值
LAST(column)
返回在指定的域中最后一个记录的值
MAX(column)
返回某列的最高值
MIN(column)
返回某列的最低值
STDEV(column)
STDEVP(column)
SUM(column)
返回某列的总和
VAR(column)
VARP(column)
在SQLServer中的合计函数
函数
描述
AVG(column)
返回某列的行数
BINARY_CHECKSUM
CHECKSUM
CHECKSUM_AGG
COUNT(column)
返回某列的行数(不包括NULL值)
COUNT(*)
返回被选行数
COUNT(DISTINCTcolumn)
返回相异结果的数目
FIRST(column)
返回在指定的域中第一个记录的值(SQLServer2000不支持)
LAST(column)
返回在指定的域中最后一个记录的值(SQLServer2000不支持)
MAX(column)
返回某列的最高值
MIN(column)
返回某列的最低值
STDEV(column)
STDEVP(column)
SUM(column)
返回某列的总和
VAR(column)
VARP(column)
Scalar函数
Scalar函数的操作面向某个单一的值,并返回基于输入值的一个单一的值。
MSAccess中的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)
用于执行日期计算
SQLAVG函数
∙PreviousPage
∙NextPage
定义和用法
AVG函数返回数值列的平均值。
NULL值不包括在计算中。
SQLAVG()语法
SELECTAVG(column_name)FROMtable_name
SQLAVG()实例
我们拥有下面这个"Orders"表:
O_Id
OrderDate
OrderPrice
Customer
1
2008/12/29
1000
Bush
2
2008/11/23
1600
Carter
3
2008/10/05
700
Bush
4
2008/09/28
300
Bush
5
2008/08/06
2000
Adams
6
2008/07/21
100
Carter
例子1
现在,我们希望计算"OrderPrice"字段的平均值。
我们使用如下SQL语句:
SELECTAVG(OrderPrice)ASOrderAverageFROMOrders
结果集类似这样:
OrderAverage
950
例子2
现在,我们希望找到OrderPrice值高于OrderPrice平均值的客户。
我们使用如下SQL语句:
SELECTCustomerFROMOrders
WHEREOrderPrice>(SELECTAVG(OrderPrice)FROMOrders)
结果集类似这样:
Customer
Bush
Carter
Adams
SQLCOUNT()函数
∙PreviousPage
∙NextPage
COUNT()函数返回匹配指定条件的行数。
SQLCOUNT()语法
SQLCOUNT(column_name)语法
COUNT(column_name)函数返回指定列的值的数目(NULL不计入):
SELECTCOUNT(column_name)FROMtable_name
SQLCOUNT(*)语法
COUNT(*)函数返回表中的记录数:
SELECTCOUNT(*)FROMtable_name
SQLCOUNT(DISTINCTcolumn_name)语法
COUNT(DISTINCTcolumn_name)函数返回指定列的不同值的数目:
SELECTCOUNT(DISTINCTcolumn_name)FROMtable_name
注释:
COUNT(DISTINCT)适用于ORACLE和MicrosoftSQLServer,但是无法用于MicrosoftAccess。
SQLCOUNT(column_name)实例
我们拥有下列"Orders"表:
O_Id
OrderDate
OrderPrice
Customer
1
2008/12/29
1000
Bush
2
2008/11/23
1600
Carter
3
2008/10/05
700
Bush
4
2008/09/28
300
Bush
5
2008/08/06
2000
Adams
6
2008/07/21
100
Carter
现在,我们希望计算客户"Carter"的订单数。
我们使用如下SQL语句:
SELECTCOUNT(Customer)ASCustomerNilsenFROMOrders
WHERECustomer='Carter'
以上SQL语句的结果是2,因为客户Carter共有2个订单:
CustomerNilsen
2
SQLCOUNT(*)实例
如果我们省略WHERE子句,比如这样:
SELECTCOUNT(*)ASNumberOfOrdersFROMOrders
结果集类似这样:
NumberOfOrders
6
这是表中的总行数。
SQLCOUNT(DISTINCTcolumn_name)实例
现在,我们希望计算"Orders"表中不同客户的数目。
我们使用如下SQL语句:
SELECTCOUNT(DISTINCTCustomer)ASNumberOfCustomersFROMOrders
结果集类似这样:
NumberOfCustomers
3
这是"Orders"表中不同客户(Bush,Carter和Adams)的数目。
SQLFIRST()函数
∙PreviousPage
∙NextPage
FIRST()函数
FIRST()函数返回指定的字段中第一个记录的值。
提示:
可使用ORDERBY语句对记录进行排序。
SQLFIRST()语法
SELECTFIRST(column_name)FROMtable_name
SQLFIRST()实例
我们拥有下面这个"Orders"表:
O_Id
OrderDate
OrderPrice
Customer
1
2008/12/29
1000
Bush
2
2008/11/23
1600
Carter
3
2008/10/05
700
Bush
4
2008/09/28
300
Bush
5
2008/08/06
2000
Adams
6
2008/07/21
100
Carter
现在,我们希望查找"OrderPrice"列的第一个值。
我们使用如下SQL语句:
SELECTFIRST(OrderPrice)ASFirstOrderPriceFROMOrders
结果集类似这样:
FirstOrderPrice
1000
SQLLAST()函数
∙PreviousPage
∙NextPage
LAST()函数
LAST()函数返回指定的字段中最后一个记录的值。
提示:
可使用ORDERBY语句对记录进行排序。
SQLLAST()语法
SELECTLAST(column_name)FROMtable_name
SQLLAST()实例
我们拥有下面这个"Orders"表:
O_Id
OrderDate
OrderPrice
Customer
1
2008/12/29
1000
Bush
2
2008/11/23
1600
Carter
3
2008/10/05
700
Bush
4
2008/09/28
300
Bush
5
2008/08/06
2000
Adams
6
2008/07/21
100
Carter
现在,我们希望查找"OrderPrice"列的最后一个值。
我们使用如下SQL语句:
SELECTLAST(OrderPrice)ASLastOrderPriceFROMOrders
结果集类似这样:
LastOrderPrice
100
SQLMAX()函数
∙PreviousPage
∙NextPage
MAX()函数
MAX函数返回一列中的最大值。
NULL值不包括在计算中。
SQLMAX()语法
SELECTMAX(column_name)FROMtable_name
注释:
MIN和MAX也可用于文本列,以获得按字母顺序排列的最高或最低值。
SQLMAX()实例
我们拥有下面这个"Orders"表:
O_Id
OrderDate
OrderPrice
Customer
1
2008/12/29
1000
Bush
2
2008/11/23
1600
Carter
3
2008/10/05
700
Bush
4
2008/09/28
300
Bush
5
2008/08/06
2000
Adams
6
2008/07/21
100
Carter
现在,我们希望查找"OrderPrice"列的最大值。
我们使用如下SQL语句:
SELECTMAX(OrderPrice)ASLargestOrderPriceFROMOrders
结果集类似这样:
LargestOrderPrice
2000
SQLMIN()函数
∙PreviousPage
∙NextPage
MIN()函数
MIN函数返回一列中的最小值。
NULL值不包括在计算中。
SQLMIN()语法
SELECTMIN(column_name)FROMtable_name
注释:
MIN和MAX也可用于文本列,以获得按字母顺序排列的最高或最低值。
SQLMIN()实例
我们拥有下面这个"Orders"表:
O_Id
OrderDate
OrderPrice
Customer
1
2008/12/29
1000
Bush
2
2008/11/23
1600
Carter
3
2008/10/05
700
Bush
4
2008/09/28
300
Bush
5
2008/08/06
2000
Adams
6
2008/07/21
100
Carter
现在,我们希望查找"OrderPrice"列的最小值。
我们使用如下SQL语句:
SELECTMIN(OrderPrice)ASSmallestOrderPriceFROMOrders
结果集类似这样:
SmallestOrderPrice
100
SQLSUM()函数
∙PreviousPage
∙NextPage
SUM()函数
SUM函数返回数值列的总数(总额)。
SQLSUM()语法
SELECTSUM(column_name)FROMtable_name
SQLSUM()实例
我们拥有下面这个"Orders"表:
O_Id
OrderDate
OrderPrice
Customer
1
2008/12/29
1000
Bush
2
2008/11/23
1600
Carter
3
2008/10/05
700
Bush
4
2008/09/28
300
Bush
5
2008/08/06
2000
Adams
6
2008/07/21
100
Carter
现在,我们希望查找"OrderPrice"字段的总数。
我们使用如下SQL语句:
SELECTSUM(OrderPrice)ASOrderTotalFROMOrders
结果集类似这样:
OrderTotal
5700
SQLGROUPBY语句
∙PreviousPage
∙NextPage
合计函数(比如SUM)常常需要添加GROUPBY语句。
GROUPBY语句
GROUPBY语句用于结合合计函数,根据一个或多个列对结果集进行分组。
SQLGROUPBY语法
SELECTcolumn_name,aggregate_function(column_name)
FROMtable_name
WHEREcolumn_nameoperatorvalue
GROUPBYcolumn_name
SQLGROUPBY实例
我们拥有下面这个"Orders"表:
O_Id
OrderDate
OrderPrice
Customer
1
2008/12/29
1000
Bush
2
2008/11/23
1600
Carter
3
2008/10/05
700
Bush
4
2008/09/28
300
Bush
5
2008/08/06
2000
Adams
6
2008/07/21
100
Carter
现在,我们希望查找每个客户的总金额(总订单)。
我们想要使用GROUPBY语句对客户进行组合。
我们使用下列SQL语句:
SELECTCustomer,SUM(OrderPrice)FROMOrders
GROUPBYCustomer
结果集类似这样:
Customer
SUM(OrderPrice)
Bush
2000
Carter
1700
Adams
2000
很棒吧,对不对?
让我们看一下如果省略GROUPBY会出现什么情况:
SELECTCustomer,SUM(OrderPrice)FROMOrders
结果集类似这样:
Customer
SUM(OrderPrice)
Bush
5700
Carter
5700
Bush
5700
Bush
5700
Adams
5700
Carter
5700
上面的结果集不是我们需要的。
那么为什么不能使用上面这条SELECT语句呢?
解释如下:
上面的SELECT语句指定了两列(Customer和SUM(OrderPrice))。
"SUM(OrderPrice)"返回一个单独的值("OrderPrice"列的总计),而"Customer"返回6个值(每个值对应"Orders"表中的每一行)。
因此,我们得不到正确的结果。
不过,您已经看到了,GROUPBY语句解决了这个问题。
GROUPBY一个以上的列
我们也可以对一个以上的列应用GROUPBY语句,就像这样:
SELECTCustomer,OrderDate,SUM(OrderPrice)FROMOrders
GROUPBYCustomer,OrderDate
SQLHAVING子句
∙PreviousPage
∙NextPage
HAVING子句
在SQL中增加HAVING子句原因是,WHERE关键字无法与合计函数一起使用。
SQLHAVING语法
SELECTcolumn_name,aggregate_function(column_name)
FROMtable_name
WHEREcolumn_nameoperatorvalue
GROUPBYcolumn_name
HAVINGaggregate_function(column_name)operatorvalue
SQLHAVING实例
我们拥有下面这个"Orders"表:
O_Id
OrderDate
OrderPrice
Customer
1
2008/12/29
1000
Bush
2
2008/11/23
1600
Carter
3
2008/10/05
700
Bush
4
2008/09/28
300
Bush
5
2008/08/06
2000
Adams
6
2008/07/21
100
Carter
现在,我们希望查找订单总金额少于2000的客户。
我们使用如下SQL语句:
SELECTCustomer,SUM(OrderPrice)FROMOrders
GROUPBYCustomer
HAVINGSUM(OrderPrice)<2000
结果集类似:
Customer
SUM(OrderPrice)
Carter
1700
现在我们希望查找客户"Bush"或"Adams"拥有超过1500的订单总金额。
我们在SQL语句中增加了一个普通的WHERE子句:
SELECTCustomer,SUM(OrderPrice)FROMOrders
WHERECustomer='Bush'ORCustomer='Adams'
GROUPBYCustomer
HAVINGSUM(OrderPrice)>1500
结果集:
Customer
SUM(OrderPrice)
Bush
2000
Adams
2000
SQLUCASE()函数
∙PreviousPage
∙NextPage
UCASE()函数
UCASE函数把字段的值转换为大写。
SQLUCASE()语法
SELECTUCASE(column_name)FROMtable_name
SQLUCASE()实例
我们拥有下面这个"Persons"表:
Id
LastName
FirstName
Address
City
1
Adams
John
OxfordStreet
London
2
Bush
George
FifthAvenue
NewYork
3
Carter
Thomas
ChanganStreet
Beijing
现在,我们希望选取"LastName"和"FirstName"列的内容,然后把"LastName"列转换为大写。
我们使用如下SQL语句:
SELECTUCASE(LastName)asLastName,FirstNameFROMPersons
结果集类似这样:
LastName
FirstName
ADAMS
John
BUSH
George
CARTER
Thomas
SQLLCASE()函数
∙PreviousPage
∙NextPage
LCASE()函数
LCASE函数把字段的值转换为小写。
SQLLCASE()语法
SELECTLCASE(column_name)FROMtable_name
SQLLCASE()实例
我们拥有下面这个"Persons"表:
Id
LastName
FirstName
Address
City
1
Adams
John
OxfordStreet
London
2
Bush
George
FifthAvenue
NewYork
3
Carter
Thomas
ChanganStreet
Beijing
现在,我们希望选取"LastName"和"FirstName"列的内容,然后把"LastName"列转换为小写。
我们使用如下SQL语句:
SELECTLCASE(LastName)asLastName,FirstNameFROMPersons
结果集类似这样:
LastName
FirstName
adams
John
bush
George
carter
Thomas
SQLMID()函数
∙PreviousPage
∙NextPage
MID()函数
MID函数用于从文本字段中提取字符。
SQLMID()语法
SELECTMID(column_name,start[,length
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- SQL 函数 详细 语言 学习 资料 私人 收藏