SQL学习(三)

创建计算字段

计算字段并不实际存在于数据库表中,是运行时在SELECT语句内创建的。从客户机的角度看,计算字段的数据是与其他列的数据相同的方式返回的。

拼接字段

举个例子,我们想要学生ID和学生姓名,可以使用Concat()函数来拼接两个列。

SELECT Concat(student_ID, '(', student_name, ')')
FROM student
ORDER BY student_ID;

Out:

1001 (Beryl)
1002 (Tom)
1003 (Shally)
1004 (Daniel)

这里连接了4个元素:
student_ID中的内容,左圆括号,student_name中的内容,右圆括号

新计算列没有名字哎,我们可以使用AS赋予别名:

SELECT Concat(student_ID, '(', student_name, ')') AS ID_name
FROM student
ORDER BY student_ID;

Out中会显示ID_student

执行算术计算

计算字段的另一常见用途是对检索出的数据进行算术计算。

SELECT quantity,
               item_price,
               quantity*item_price AS price
FROM items              

price列是quantity和item_price的积。
下面介绍几个算术操作符

操作符 说明
+
-
*
/

使用数据处理函数

文本处理函数

函数 说明
Left() 返回串左边的字符
Length() 返回串的长度
Locate() 找出串的一个字串
Lower() 将串转为小写
LTrim() 去掉串左边的空格
Right() 返回串右边的字符
RTrim() 去掉串右边的字符
Soundex() 返回串的SOUNDEX值
SubString() 返回字串的字符
Upper() 将串转换为大写
SELECT Concat(student_ID, '(', Upper(student_name), ')')
FROM student
ORDER BY student_ID;

Out:

1001 (BERYL)
1002 (TOM)
1003 (SHALLY)
1004 (DANIEL)

日期和时间处理函数

函数 说明
AddDate() 增加一个日期
AddTime() 增加一个时间
CurDate() 返回当前日期
CurTime() 返回当前时间
Date() 返回日期时间的日期部分
DateDiff() 计算两个日期之差
Date_Add() 高度灵活的日期运算函数
Date_Format() 返回一个格式化的日期或时间串
Day() 返回一个日期的天数部分
DayOfWeek() 对于一个日期,返回对应的星期几
Hour() 返回一个时间的小时部分
Minute() 返回一个时间的分钟部分
Year() 返回一个日期的年份部分
Month() 返回一个日期的月份部分
Now() 返回当前日期和时间
Second() 返回一个时间的秒部分
Time() 返回一个日期时间的时间部分
SELECT cust_id, oder_num
FROM orders
WHERE Date(order_date) BETWEEN "2019-09-01" AND "2019-09-30";

可以选出oder_date为2019年9月份的cust_id和order_num。

数值处理函数

函数 说明
Abs() 返回一个数的绝对值
Cos() 返回一个角度的余弦
Exp() 返回一个数的指数值
Mod() 返回除操作的余数
Pi() 返回圆周率
Rand() 返回一个随机数
Sin() 返回一个角度的正弦
Sqrt() 返回一个数的平方根
Tan() 返回一个角度的正切

汇总数据

聚集函数

聚集函数运行在行组上,计算和返回单个值的函数。

函数 说明
AVG() 返回某列的平均值
COUNT() 返回某列的行数
MAX() 返回某列的最大值
MIN() 返回某列的最小值
SUM() 返回某列值的和
SELECT AVG(price) AS avg_price
FROM products;
SELECT COUNT(*) AS num_cust
FROM customers;

聚集不同值

当使用DISTINCT参数时,只考虑不同的值

SELECT AVG(DISTINCT price) AS avg_price
FROM products;

返回的结果会与不加DISTINCT参数不同,这是因为现在只考虑各个不同的价格。

组合聚集函数

SELECT COUNT(*) AS num_items,
               MIN(prod_price) AS price_min,
               MAX(prod_price) AS price_max,
               AVG(prod_price) AS price_avg
FROM products;            

参考书籍:
《MySQL必知必会》 Ben Forta著

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章