SQL函数教程

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

select function(列) from 表

在Sql中,函数的基本类型是:

      Aggregate函数(合计函数)

       scalar函数 

-----合计函数 :面向一系列的值,并返回一个单一的值

  如果在 SELECT 语句的项目列表中的众多其它表达式中使用 SELECT 语句,则这个 SELECT 必须使用 GROUP BY 语句!

    

平均值                                avg(列名)
某列的行数                          count(列名)
指定域中第一个记录的值                first(列名)
指定域中最后一个记录的值              last(列名)
某列最高值                            max(列名)
某列最低值                            min(列名)
返回某列总和                           sum(列名)

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)用于执行日期计算
  1.     avg() : NULL 不包括计算中
    select avg(列名) from 表名
    select avg(列名) as 别名 from 表名
    
    
    
    SELECT Customer FROM Orders
    WHERE OrderPrice>(SELECT AVG(OrderPrice) FROM Orders)

    2.count() :(NULL 不计入) 

    select count(列名) from 表名
    返回表中的记录数: select count(*) from 表名  
    返回指定列的不同值的数目 select count(distinct 列名) from 表名
    
    
    SELECT COUNT(Customer) AS CustomerNilsen FROM Orders
    WHERE Customer='Carter
    
    
    
    

    3.First() 函数 :返回第一个记录的值   可使用ORDER BY 对记录进行排序 

select first (列名) from 表名

      4  last()函数 :返回最后一个记录的值   可使用ORDER BY 对记录进行排序 

 select last(列名) as 别名 from 表名

      5.max():min() ,sum()

SELECT MAX(column_name) FROM table_name
SELECT min (column_name) FROM table_name
SELECT sum (column_name) FROM table_name

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

SELECT column_name, aggregate_function(column_name)
FROM table_name
WHERE column_name operator value
GROUP BY column_name1, column_name2

7. 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

  group by 分组后,select选列的时候肯定有合计函数列。

8  ucase () 函数  大写       lcase() 函数  小写

select ucase(列名) from 表名
select lcase(列名) from 表名
     9.mid() 用于从文本字段中提取字符。
SELECT MID(column_name,start[,length]) FROM table_name

  10  len ():返回文本字段中值的长度。

   

SELECT LEN(column_name) FROM table_name

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

   

SELECT ROUND(column_name,decimals) FROM table_name

12.now () :返回当前的日期和时间

SELECT NOW() FROM table_name

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

SELECT FORMAT(column_name,format) FROM table_name

14 快速参考:

语句语法
AND / ORSELECT column_name(s)
FROM table_name
WHERE condition
AND|OR condition
ALTER TABLE (add column)ALTER TABLE table_name 
ADD column_name datatype
ALTER TABLE (drop column)ALTER TABLE table_name 
DROP COLUMN column_name
AS (alias for column)SELECT column_name AS column_alias
FROM table_name
AS (alias for table)SELECT column_name
FROM table_name  AS table_alias
BETWEENSELECT column_name(s)
FROM table_name
WHERE column_name
BETWEEN value1 AND value2
CREATE DATABASECREATE DATABASE database_name
CREATE INDEXCREATE INDEX index_name
ON table_name (column_name)
CREATE TABLECREATE TABLE table_name
(
column_name1 data_type,
column_name2 data_type,
.......
)
CREATE UNIQUE INDEXCREATE UNIQUE INDEX index_name
ON table_name (column_name)
CREATE VIEWCREATE VIEW view_name AS
SELECT column_name(s)
FROM table_name
WHERE condition
DELETE FROMDELETE FROM table_name 
(Note: Deletes the entire table!!)

or

DELETE FROM table_name
WHERE condition

DROP DATABASEDROP DATABASE database_name
DROP INDEXDROP INDEX table_name.index_name
DROP TABLEDROP TABLE table_name
GROUP BYSELECT column_name1,SUM(column_name2)
FROM table_name
GROUP BY column_name1
HAVINGSELECT column_name1,SUM(column_name2)
FROM table_name
GROUP BY column_name1
HAVING SUM(column_name2) condition value
INSELECT column_name(s)
FROM table_name
WHERE column_name
IN (value1,value2,..)
INSERT INTOINSERT INTO table_name
VALUES (value1, value2,....)

or

INSERT INTO table_name
(column_name1, column_name2,...)
VALUES (value1, value2,....)

LIKESELECT column_name(s)
FROM table_name
WHERE column_name
LIKE pattern
ORDER BYSELECT column_name(s)
FROM table_name
ORDER BY column_name [ASC|DESC]
SELECTSELECT column_name(s)
FROM table_name
SELECT *SELECT *
FROM table_name
SELECT DISTINCTSELECT DISTINCT column_name(s)
FROM table_name
SELECT INTO
(used to create backup copies of tables)
SELECT *
INTO new_table_name
FROM original_table_name

or

SELECT column_name(s)
INTO new_table_name
FROM original_table_name

TRUNCATE TABLE
(deletes only the data inside the table)
TRUNCATE TABLE table_name
UPDATEUPDATE table_name
SET column_name=new_value
[, column_name=new_value]
WHERE column_name=some_value
WHERESELECT column_name(s)
FROM table_name
WHERE condition
  •  

 

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
SQL 窗口函数是一类特殊的函数,它们可以对查询结果集中的一部分数据进行聚合计算,并将计算结果返回给每一行数据,从而可以方便地进行排名、分组、累计计算等操作。 以下是 SQL 窗口函数的基本语法: ``` <窗口函数> OVER ([PARTITION BY <partition 列>] [ORDER BY <order 列> [ASC/DESC]] [ROWS <frame 定义>]) ``` 其中,窗口函数通常是一种聚合函数,如 SUM、AVG、COUNT、MAX、MIN 等,OVER 子句用于指定聚合计算的范围,包括以下三个部分: 1. PARTITION BY:表示对查询结果集进行分区,将相同的值分为一组; 2. ORDER BY:表示对分区后的数据进行排序,以便在计算窗口函数时按照指定的顺序进行计算; 3. ROWS:表示指定窗口函数计算的范围,可以是当前行的前/后若干行,或者是当前分区的所有行。 下面以一个例子来说明 SQL 窗口函数的使用方法,假设有如下的数据表 `orders`: ``` +---------+------+-------+ | orderid | name | price | +---------+------+-------+ | 1 | A | 10 | | 2 | A | 20 | | 3 | B | 30 | | 4 | B | 40 | | 5 | B | 50 | +---------+------+-------+ ``` 现在要查询每个人的订单数量、订单总价以及订单平均价,并按照订单数量降序排列,可以使用如下的 SQL 语句: ``` SELECT name, COUNT(*) OVER (PARTITION BY name) AS order_count, SUM(price) OVER (PARTITION BY name) AS order_total, AVG(price) OVER (PARTITION BY name) AS order_avg FROM orders ORDER BY order_count DESC; ``` 以上语句中,使用了 COUNT、SUM 和 AVG 窗口函数,对每个人的订单进行了计数、求和和平均值计算。PARTITION BY 子句指定了按照 name 列进行分区,然后按照 order_count 列进行降序排列。执行以上 SQL 语句得到的结果如下: ``` +------+-------------+-------------+-------------+ | name | order_count | order_total | order_avg | +------+-------------+-------------+-------------+ | B | 3 | 120 | 40.00000000 | | A | 2 | 30 | 15.00000000 | +------+-------------+-------------+-------------+ ``` 从结果中可以看出,按照订单数量降序排列,B 的订单数量最多,因此排在前面。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值