文章摘要:
1缸托、AVG 函數(shù)
2左敌、COUNT()
3、FIRST() 函數(shù)
4俐镐、LAST() 函數(shù)
5矫限、MAX() 函數(shù)
6、MIN() 函數(shù)
7佩抹、SUM() 函數(shù)
8叼风、GROUP BY 語(yǔ)句
9、HAVING 子句
10棍苹、UCASE() 函數(shù)
11无宿、LCASE() 函數(shù)
12、MID() 函數(shù)
13枢里、LEN() 函數(shù)
14孽鸡、ROUND() 函數(shù)
15蹂午、NOW() 函數(shù)
16、FORMAT() 函數(shù)
一彬碱、SQL中函數(shù)類型
- 1豆胸、面向數(shù)據(jù)庫(kù)列(column)
- 2、面向數(shù)據(jù)庫(kù)列中的值巷疼。
ps:demo使用到的數(shù)據(jù)庫(kù)信息
mysql> select * from orders;
+------+---------+-------------+------+------------+
| Id_O | Company | OrderNumber | Id_p | OrderPrice |
+------+---------+-------------+------+------------+
| 1 | IBM | 3532 | 1 | 34 |
| 2 | Baidu | 2356 | NULL | 62 |
| 3 | Ali | 6534 | 4 | 56 |
| 4 | Apple | 4698 | 2 | 78 |
| 5 | Tencent | 6953 | 5 | 24 |
| 6 | Xiaomi | 7890 | 4 | 10 |
| 7 | LeEco | 2876 | 9 | 18 |
| 8 | JD | 3847 | 6 | 47 |
| 9 | Apple | 8762 | 2 | 90 |
| 10 | Xiaomi | 9328 | 4 | 52 |
| 11 | Xiaomi | 1098 | 4 | 27 |
+------+---------+-------------+------+------------+
11 rows in set (0.00 sec)
二晚胡、面向數(shù)據(jù)庫(kù)列的函數(shù)。
1皮迟、AVG 函數(shù)
定義和用法
AVG 函數(shù)返回?cái)?shù)值列的平均值搬泥。NULL 值不包括在計(jì)算中。
- 語(yǔ)法
SELECT AVG(column_name) FROM table_name
- 案例
-- 查詢訂單中的報(bào)價(jià)均價(jià)
mysql> select avg(OrderPrice) from Orders;
+-----------------+
| avg(OrderPrice) |
+-----------------+
| 45.2727 |
+-----------------+
1 row in set (0.00 sec)
-- 查看訂單中伏尼,公司報(bào)價(jià)的均價(jià)
mysql> select Company,avg(OrderPrice) from Orders group by Company;
+---------+-----------------+
| Company | avg(OrderPrice) |
+---------+-----------------+
| Ali | 56.0000 |
| Apple | 84.0000 |
| Baidu | 62.0000 |
| IBM | 34.0000 |
| JD | 47.0000 |
| LeEco | 18.0000 |
| Tencent | 24.0000 |
| Xiaomi | 29.6667 |
+---------+-----------------+
8 rows in set (0.00 sec)
mysql>
2忿檩、COUNT()
COUNT() 函數(shù)返回匹配指定條件的行數(shù)。
- 語(yǔ)法
-- 1爆阶、COUNT(column_name) 函數(shù)返回指定列的值的數(shù)目(NULL 不計(jì)入):
SELECT COUNT(column_name) FROM table_name
-- 2燥透、COUNT(*) 函數(shù)返回表中的記錄數(shù):
SELECT COUNT(*) FROM table_name
-- 3、COUNT(DISTINCT column_name) 函數(shù)返回指定列的不同值的數(shù)目:
SELECT COUNT(DISTINCT column_name) FROM table_name
注釋:COUNT(DISTINCT) 適用于 ORACLE 和 Microsoft SQL Server辨图,但是無(wú)法用于 Microsoft Access班套。
- 案例:
mysql> select count(*) from orders;
+----------+
| count(*) |
+----------+
| 11 |
+----------+
1 row in set (0.00 sec)
mysql> select count(Id_p) from orders;
+-------------+
| count(Id_p) |
+-------------+
| 10 |
+-------------+
1 row in set (0.00 sec)
mysql> select count(distinct Company) from orders;
+-------------------------+
| count(distinct Company) |
+-------------------------+
| 8 |
+-------------------------+
1 row in set (0.00 sec)
mysql>
3、FIRST() 函數(shù)
FIRST() 函數(shù)返回指定的字段中第一個(gè)記錄的值故河。
提示:可使用 ORDER BY 語(yǔ)句對(duì)記錄進(jìn)行排序吱韭。
- SQL FIRST() 語(yǔ)法
SELECT FIRST(column_name) FROM table_name
- 備注:MySql不支持此函數(shù),可配合排序函數(shù)以及l(fā)imit函數(shù)實(shí)現(xiàn)類似功能鱼的。
4理盆、LAST() 函數(shù)
LAST() 函數(shù)返回指定的字段中最后一個(gè)記錄的值。
提示:可使用 ORDER BY 語(yǔ)句對(duì)記錄進(jìn)行排序凑阶。
- SQL LAST() 語(yǔ)法
SELECT LAST(column_name) FROM table_name
- 備注:MySql不支持此函數(shù)猿规,可配合排序函數(shù)以及l(fā)imit函數(shù)實(shí)現(xiàn)類似功能。
5宙橱、MAX() 函數(shù)
MAX 函數(shù)返回一列中的最大值姨俩。NULL 值不包括在計(jì)算中。
- SQL MAX() 語(yǔ)法
SELECT MAX(column_name) FROM table_name
注釋:MIN 和 MAX 也可用于文本列师郑,以獲得按字母順序排列的最高或最低值环葵。
- 案例:得到最高的報(bào)價(jià)
mysql> select max(OrderPrice) from orders;
+-----------------+
| max(OrderPrice) |
+-----------------+
| 90 |
+-----------------+
1 row in set (0.00 sec)
6、MIN() 函數(shù)
MIN 函數(shù)返回一列中的最小值宝冕。NULL 值不包括在計(jì)算中张遭。
- SQL MIN() 語(yǔ)法:
SELECT MIN(column_name) FROM table_name
注釋:MIN 和 MAX 也可用于文本列,以獲得按字母順序排列的最高或最低值猬仁。
- 案例:得到最低的報(bào)價(jià)
mysql> select min(OrderPrice) from orders;
+-----------------+
| min(OrderPrice) |
+-----------------+
| 10 |
+-----------------+
1 row in set (0.00 sec)
7帝璧、SUM() 函數(shù)
SUM 函數(shù)返回?cái)?shù)值列的總數(shù)(總額)。
- SQL SUM() 語(yǔ)法
SELECT SUM(column_name) FROM table_name
- 案例:得到訂單總金額
mysql> select sum(OrderPrice) from orders;
+-----------------+
| sum(OrderPrice) |
+-----------------+
| 498 |
+-----------------+
1 row in set (0.00 sec)
8湿刽、GROUP BY 語(yǔ)句
合計(jì)函數(shù) (比如 SUM) 常常需要添加 GROUP BY 語(yǔ)句的烁。
GROUP BY 語(yǔ)句用于結(jié)合合計(jì)函數(shù),根據(jù)一個(gè)或多個(gè)列對(duì)結(jié)果集進(jìn)行分組诈闺。
- SQL GROUP BY 語(yǔ)法
SELECT column_name, aggregate_function(column_name)
FROM table_name
WHERE column_name operator value
GROUP BY column_name
- 案例:從訂單中渴庆,得到下訂單的公司
mysql> select company from orders group by company;
+---------+
| company |
+---------+
| Ali |
| Apple |
| Baidu |
| IBM |
| JD |
| LeEco |
| Tencent |
| Xiaomi |
+---------+
8 rows in set (0.00 sec)
9、HAVING 子句
在 SQL 中增加 HAVING 子句原因是雅镊,WHERE 關(guān)鍵字無(wú)法與合計(jì)函數(shù)一起使用襟雷。
- SQL HAVING 語(yǔ)法:
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
- 案例:得到下單大于1次的公司:
mysql> select company from orders group by company having count(company)>1;
+---------+
| company |
+---------+
| Apple |
| Xiaomi |
+---------+
2 rows in set (0.00 sec)
三、面向數(shù)據(jù)庫(kù)列的函數(shù)仁烹。
1耸弄、UCASE() 函數(shù)
UCASE 函數(shù)把字段的值轉(zhuǎn)換為大寫(xiě)。
- SQL UCASE() 語(yǔ)法:
SELECT UCASE(column_name) FROM table_name
- 案例:得到下單公司的大寫(xiě)名稱
mysql> select distinct ucase(company) from orders;
+----------------+
| ucase(company) |
+----------------+
| IBM |
| BAIDU |
| ALI |
| APPLE |
| TENCENT |
| XIAOMI |
| LEECO |
| JD |
+----------------+
8 rows in set (0.00 sec)
2卓缰、LCASE() 函數(shù)
LCASE 函數(shù)把字段的值轉(zhuǎn)換為小寫(xiě)计呈。
- SQL LCASE() 語(yǔ)法
SELECT LCASE(column_name) FROM table_name
- 案例:得到下單公司的小寫(xiě)名稱
mysql> select distinct lcase(company) from orders;
+----------------+
| lcase(company) |
+----------------+
| ibm |
| baidu |
| ali |
| apple |
| tencent |
| xiaomi |
| leeco |
| jd |
+----------------+
8 rows in set (0.01 sec)
3、MID() 函數(shù)
MID 函數(shù)用于從文本字段中提取字符征唬。
- SQL MID() 語(yǔ)法:
SELECT MID(column_name,start[,length]) FROM table_name
參數(shù) | 描述 |
---|---|
column_name | 必需捌显。要提取字符的字段。 |
start | 必需总寒。規(guī)定開(kāi)始位置(起始值是 1)扶歪。 |
length | 可選。要返回的字符數(shù)摄闸。如果省略善镰,則 MID() 函數(shù)返回剩余文本。 |
- 案例:獲得訂單公司的簡(jiǎn)稱(取三個(gè)字母)
mysql> SELECT MID(City,1,3) as SmallCity FROM Persons;
+-----------+
| SmallCity |
+-----------+
| Lon |
| New |
| Bei |
| Lon |
| Bei |
| NULL |
+-----------+
6 rows in set (0.00 sec)
4贪薪、LEN() 函數(shù)
LEN 函數(shù)返回文本字段中值的長(zhǎng)度媳禁。
- SQL LEN() 語(yǔ)法
SELECT LEN(column_name) FROM table_name
備注:MySql中,函數(shù)為:length画切。
- 案例:獲得訂單公司名稱長(zhǎng)度竣稽。
mysql> select length(Company) from orders;
+-----------------+
| length(Company) |
+-----------------+
| 3 |
| 5 |
| 3 |
| 5 |
| 7 |
| 6 |
| 5 |
| 2 |
| 5 |
| 6 |
| 6 |
+-----------------+
11 rows in set (0.00 sec)
5、ROUND() 函數(shù)
ROUND 函數(shù)用于把數(shù)值字段舍入為指定的小數(shù)位數(shù)霍弹。
- SQL ROUND() 語(yǔ)法
SELECT ROUND(column_name,decimals) FROM table_name
參數(shù) | 描述 |
---|---|
column_name | 必需毫别。要舍入的字段。 |
decimals | 必需典格。規(guī)定要返回的小數(shù)位數(shù)岛宦。 |
6、NOW() 函數(shù)
NOW 函數(shù)返回當(dāng)前的日期和時(shí)間。
提示:如果您在使用 Sql Server 數(shù)據(jù)庫(kù)真仲,請(qǐng)使用 getdate() 函數(shù)來(lái)獲得當(dāng)前的日期時(shí)間庶弃。
- SQL NOW() 語(yǔ)法
SELECT NOW() FROM table_name
- 案例:
mysql> select now() from orders limit 1;
+---------------------+
| now() |
+---------------------+
| 2017-07-06 19:51:18 |
+---------------------+
1 row in set (0.00 sec)
7拙吉、FORMAT() 函數(shù)
FORMAT 函數(shù)用于對(duì)字段的顯示進(jìn)行格式化院究。
- SQL FORMAT() 語(yǔ)法:
SELECT FORMAT(column_name,format) FROM table_name
參數(shù) | 描述 |
---|---|
column_name | 必需仪吧。要格式化的字段咒循。 |
format | 必需扶踊。規(guī)定格式裙盾。 |