文本纯手打,表格例子出自W3网站中!
目录
总
函数的语法是:
SELECT function(列) FROM 表
函数类型:
- Aggregate函数
- Scalar函数
合计函数(Aggregate functions)
操作面向一系列的值,并返回一个单一的值
注释:如果在 SELECT 语句的项目列表中的众多其它表达式中使用 SELECT 语句,则这个 SELECT 必须使用 GROUP BY 语句!
函数 | 描述 |
---|---|
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) |
AVG()
返回数值列的平均值。NULL值不包括在计算之内。
SELECT AVG(column_name) FROM table_name
例子:
SELECT Customer FROM Orders WHERE OrderPrice>(SELECT AVG(OrderPrice) FROM Orders)
查找高于平均值的数据
COUNT()
COUNT(column_name) 函数返回指定列的值得数目(NULL不计入)
SELECT COUNT(column_name) FROM table_name
COUNT(*)函数返回表中的记录数
SELECT COUNT(*) FROM table_name
COUNT(DISTINCT column_name)函数返回指定列的不同值的数目:
SELECT COUNT(DISTINCT column_name) FROM table_name
FIRST()
first()函数返回指定的字段第一个记录的值。(可以使用ORDER BY语句对记录进行排序)
SELECT FIRST(OrderPrice) AS FirstOrderPrice FROM Orders
LAST()
使用方法和上面的FIRST()一样,不过是指定最后一个值返回。
MAX() MIN()
max()函数返回一列中的最大值,NULL值不在计算中。(MAX、MIN也可以用于文本列)
min()函数返回一列中最小值。
SELECT MAX(column_name) FROM table_name
sum()
返回数值列的总数(总额)
SELECT SUM(column_name) FROM table_name
Scalar函数
操作面向单一的值,并返回基于输入值得一个单一的值
GROUP BY
用于结合合计函数,根据一个或者多个列对结果进行分组
SELECT column_name, aggregate_function(column_name)
FROM table_name
WHERE column_name operator value
GROUP BY column_name
他也可以用于一个以上的列
SELECT Customer,OrderDate,SUM(OrderPrice) FROM Orders
GROUP BY Customer,OrderDate
HAVING
增加HAVING子句的原因是,WHERE关键词无法与合计函数一起使用
SELECT column_name, aggregate_function(column_name)
FROM table_name
WHERE column_name operator value
GROUP BY column_name
HAVING aggregate_function(column_name) operator value
例子:
SELECT Customer,SUM(OrderPrice) FROM Orders
GROUP BY Customer
HAVING SUM(OrderPrice)<2000
现在我们希望查找客户 "Bush" 或 "Adams" 拥有超过 1500 的订单总金额。
SELECT Customer,SUM(OrderPrice) FROM Orders
WHERE Customer='Bush' OR Customer='Adams'
GROUP BY Customer
HAVING SUM(OrderPrice)>1500
UCASE() LCASE()
把字段的值转换为大写/小写。
SELECT UCASE(column_name) FROM table_name
SELECT LCASE(column_name) FROM table_name
MID()
用于从文本字符中提取字符
SELECT MID(column_name,start[,length]) FROM table_name
参数 | 描述 |
---|---|
column_name | 必需。要提取字符的字段。 |
start | 必需。规定开始位置(起始值是 1)。 |
length | 可选。要返回的字符数。如果省略,则 MID() 函数返回剩余文本。 |
现在,我们希望从 "City" 列中提取前 3 个字符。
SELECT MID(City,1,3) as SmallCity FROM Persons
LEN()
返回文本字段中值的长度
SELECT LEN(column_name) FROM table_name
我们希望取得 "City" 列中值的长度。
SELECT LEN(City) as LengthOfCity FROM Persons
LengthOfCity |
---|
6 |
8 |
7 |
ROUND()
用于把数值字段舍入为指定的小数位数
SELECT ROUND(column_name,decimals) FROM table_name
参数 | 描述 |
---|---|
column_name | 必需。要舍入的字段。 |
decimals | 必需。规定要返回的小数位数。 |
现在,我们希望把名称和价格舍入为最接近的整数。
SELECT ProductName, ROUND(UnitPrice,0) as UnitPrice FROM Products
ProductName | UnitPrice |
---|---|
gold | 32 |
silver | 12 |
copper | 7 |
NOW()
返回当前的日期和时间(如果使用的是sql server数据库,使用getdate()来获取当前时间)
SELECT NOW() FROM table_name
FORMAT()
用于对字符的显示进行格式化
SELECT FORMAT(column_name,format) FROM table_name
参数 | 描述 |
---|---|
column_name | 必需。要格式化的字段。 |
format | 必需。规定格式。 |
例如:
SELECT ProductName, UnitPrice, FORMAT(Now(),'YYYY-MM-DD') as PerDate
FROM Products
ALL()
all 父查询中的结果集大于子查询中每一个结果集中的值,则为真。
用法:SELECT * FROM T2 WHERE N>ALL (SELECT N FROM T1)
ANY() SOME()
父查询中的结果集大于子查询中任意一个结果集中的值,则为真。
SELECT * FROM T2 WHERE N>ANY(SELECT N FROM T1)
SELECT * FROM T2 WHERE N>SOME(SELECT N FROM T1)
注:=any 与 子查询in相同
SELECT * FROM T2 WHERE N=ANY (SELECT N FROM T1)
SELECT * FROM T2 WHERE N IN (SELECT N FROM T1)
<>ANY 和 OR作用差不多:父查询中的结果集不等于子查询中的a或b或c,则为真。
NOT in 和 and作用差不多,父查询不等于子查询中任意一个结果集中的值,则为真。