一起来学SQL(四)

SQL函数

SQL Aggregate 函数

SQL Aggregate 函数计算从列中取得的值,返回一个单一的值。

  • AVG() - 返回平均值
  • COUNT() - 返回行数
  • FIRST() - 返回第一个记录的值
  • LAST() - 返回最后一个记录的值
  • MAX() - 返回最大值
  • MIN() - 返回最小值
  • SUM() - 返回总和

SQL Scalar 函数

SQL Scalar 函数基于输入值,返回一个单一的值。

  • UCASE() - 将某个字段转换为大写
  • LCASE() - 将某个字段转换为小写
  • MID() - 从某个文本字段提取字符
  • LEN() - 返回某个文本字段的长度
  • NOW() - 返回当前的系统日期和时间
  • FORMAT() - 格式化某个字段的显示方式

SQL Aggregate 函数

SQL AVG() 函数

AVG() 函数返回数值列的平均值。

AVG() 语法
SELECT AVG(column_name) FROM table_name

e.g.选择价格高于平均价格的 “ProductName” 和 “Price” 记录:
SELECT ProductName, Price FROM Products
WHERE Price>(SELECT AVG(Price) FROM Products);


SQL COUNT() 函数

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;

e.g.
SELECT COUNT(DISTINCT CustomerID) AS NumberOfCustomers FROM Orders;


SQL FIRST() 函数

FIRST() 函数返回指定的列中第一个记录的值。

SQL FIRST() 语法
SELECT FIRST(column_name) FROM table_name;

p.s. 只有 MS Access 支持 FIRST() 函数。

SQL Server、MySQL 和 Oracle 中的 SQL FIRST() 工作区

  • SQL Server 语法
    SELECT TOP 1 column_name FROM table_name ORDER BY column_name ASC;
  • MySQL 语法
    SELECT column_name FROM table_name ORDER BY column_name ASC LIMIT 1;
  • Oracle 语法
    SELECT column_name FROM table_name ORDER BY column_name ASC
    WHERE ROWNUM <=1;

SQL LAST() 函数

LAST() 函数返回指定的列中最后一个记录的值。

SQL LAST() 语法
SELECT LAST(column_name) FROM table_name;

p.s. 同样,只有 MS Access 支持LAST() 函数

SQL Server、MySQL 和 Oracle 中的 SQL LAST() 工作区
只需将上例中的ASC改成DESC就可以了


SQL MAX()

MAX() 函数返回指定列的最大值。

SQL MAX() 语法
SELECT MAX(column_name) FROM table_name;

e.g.SQL 语句从 “Products” 表的 “Price” 列获取最大值:
SELECT MAX(Price) AS HighestPrice FROM Products;


SQL MIN()

MIN() 函数返回指定列的最小值。

SQL MIN() 语法
SELECT MIN(column_name) FROM table_name;

e.g. SQL 语句从 “Products” 表的 “Price” 列获取最小值:
SELECT MIN(Price) AS SmallestOrderPrice FROM Products;


SQL SUM()

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

SQL SUM() 语法
SELECT SUM(column_name) FROM table_name;

e.g.SQL 语句查找 “OrderDetails” 表的 “Quantity” 字段的总数:
SELECT SUM(Quantity) AS TotalItemsOrdered FROM OrderDetails;

与SQL Aggregate 函数配合的子句

SQL GROUP BY

Aggregate 函数常常需要添加 GROUP BY 语句。

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

SQL GROUP BY 语法
SELECT column_name, aggregate_function(column_name) FROM table_name
WHERE column_name operator value GROUP BY column_name;

举个栗子
这里写图片描述

查找每个送货员配送的订单数目。下面的 SQL 语句按送货员进行订单分类统计:

SELECT Shippers.ShipperName,COUNT(Orders.OrderID) AS NumberOfOrders FROM Orders
LEFT JOIN Shippers
ON Orders.ShipperID=Shippers.ShipperID
GROUP BY ShipperName;


SQL HAVING

在 SQL 中增加 HAVING 子句原因是,WHERE 关键字无法与 Aggregate 函数一起使用。

SQL HAVING 语法
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;

再举个梨子
SQL 语句查找注册超过 10 个订单的员工:
这里写图片描述

SELECT Employees.LastName, COUNT(Orders.OrderID)
AS NumberOfOrders FROM (Orders INNER JOIN Employees
ON Orders.EmployeeID=Employees.EmployeeID)
GROUP BY LastName
HAVING COUNT(Orders.OrderID) > 10;

SQL Scalar 函数

SQL 字母大小写转换函数UPPER(s)、UCASE(s)、LOWER(s)和LCASE(s)

1、LOWER(s)函数和LCASE(s)函数
LOWER(s)或者LCASE(s)函数可以将字符串s中的字母字符全部转换成小写字母。

2、UPPER(s)函数和UCASE(s)函数
UPPER(s)或UCASE(s)函数可以将字符串s中的字母字符全部转换成大写字母。

UPPER(s)函数和UCASE(s)函数

upper()函数字母大小写转换函数,将字母转成大写 - 返回字符串str,根据当前字符集映射的所有字符更改为大写。

UPPER(str)
返回字符串str,根据当前字符集映射的所有字符更改为大写。
SELECT UPPER(‘Allah-hus-w3cschool’);

UCASE() 函数
把字段的值转换为大写。
SELECT UCASE(column_name) FROM table_name;


UPPER(s)函数和UCASE(s)函数

用法同上


MID() 函数

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

SQL MID() 语法
SELECT MID(column_name,start[,length]) FROM table_name;

参数描述
column_name必需。要提取字符的字段。
start必需。规定开始位置(起始值是 1)。
length可选。要返回的字符数。如果省略,则 MID() 函数返回剩余文本。

e.g. SQL 语句从 “Customers” 表的 “City” 列中提取前 4 个字符:
SELECT MID(City,1,4) AS ShortCity FROM Customers;

LEN() 函数

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

SQL LEN() 语法
SELECT LEN(column_name) FROM table_name;

e.g. SQL 语句从 “Customers” 表中选取 “CustomerName” 和 “Address” 列中值的长度:
SELECT CustomerName,LEN(Address) as LengthOfAddress FROM Customers;


ROUND() 函数

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

SQL ROUND() 语法
SELECT ROUND(column_name,decimals) FROM table_name;

参数描述
column_name必需。要舍入的字段。
decimals必需。规定要返回的小数位数。

e.g. SQL 语句从 “Products” 表中选取产品名称和价格舍入为最接近的整数:。提取前 4 个字符:
SELECT ProductName, ROUND(Price,0) AS RoundedPrice FROM Products;


NOW() 函数

NOW() 函数返回当前系统的日期和时间。

SQL NOW() 语法
SELECT NOW() FROM table_name;

e.g. SQL 语句从 “Products” 表中选取产品名称以及当天的价格:
SELECT ProductName, Price, Now() AS PerDate FROM Products;


FORMAT() 函数

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

SQL FORMAT() 语法
SELECT FORMAT(column_name,format) FROM table_name;

参数描述
column_name必需。要格式化的字段。
format必需。规定格式。

e.g. SQL 语句从 “Products” 表中选取产品名称以及当天(格式化为 YYYY-MM-DD)的价格:
SELECT ProductName, Price, FORMAT(Now(),’YYYY-MM-DD’) AS PerDate FROM Products;

其他

  • SQRT 函数
    SQRT 函数用于计算得出任何数值的平方根
    SELECT name, SQRT(daily_typing_pages) FROM employee_tbl;

  • RAND 函数
    用于产生 0 至 1 之间的随机数

  • CONCAT 函数
    CONCAT 函数用于将两个字符串连接为一个字符串

  • REPLACE()函数
    字符串替换函数
    把数据库表article中的所有title字段里的w3cschool字符串替换成hello。
    update article set title=replace(title,’w3cschool’,’hello’);

replace函数定义

replace(original-string,search-string,replace-string)

参数
original-string: 被搜索的字符串。可为任意长度。
search-string: 要搜索并被 replace-string 替换的字符串。该字符串的长度不应超过 255 个字节。如果 search-string 是空字符串,则按原样返回原始字符串。
replace-string: 该字符串用于替换 search-string。可为任意长度。如果 replacement-string 是空字符串,则删除出现的所有 search-string。

  • TRIM()函数
    SQL 中的 TRIM 函数是用来移除掉一个字串中的字头或字尾。最常见的用途是移除字首或字尾的空白。
    这个函数在不同的资料库中有不同的名称:
    MySQL: TRIM( ), RTRIM( ), LTRIM( )
    Oracle: RTRIM( ), LTRIM( )
    SQL Server: RTRIM( ), LTRIM( )
  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值