MySql简单学习

MySql-增删改查之查(二)

拼接字段(Concat函数、AS)

USE sakila;

SELECT CONCAT(first_name,' ',last_name) AS actorname
FROM actor; # 使用Concat()进行拼接,注意:这种用法只限于MySql;AS赋予别名/导出列;

执行算术计算

SELECT rental_duration, rental_rate, rental_duration*rental_rate
FROM film; #算数操作符包括+-*/

测试计算

SELECT 3*2;
SELECT NOW();  # SELECT省略FROM子句以便简单的访问和处理表达式;

文本处理函数

SELECT LEFT(first_name,2)
FROM actor; #返回每行first_name左边2个字符

SELECT LOCATE('jo',first_name)
FROM actor; #在每行的first_name中查找是否含有子串‘jo’,若有则返回子串开始的位置(从1开始),否则返回0

SELECT SUBSTRING(first_name FROM 1 FOR 3)
FROM actor; #找出first_name从位置1开始长度为3的子串;
函数说明
Left()返回串左边的字符,见上例
Length()返回串的长度
Locate()找出串的一个子串,见上例
Lower()将串转换为小写
LTrim()去掉串左边的空格
Right()返回串右边的字符
RTrim()去掉串右边的空格
Soundex()返回串的SOUNDEX值(近似发音)
SubString()返回子串的字符,见上例
Upper()将串转换为大写
常用的文本处理函数

日期和时间处理函数

函数说明
AddDate()增加一个日期(天、周等)
AddTime()增加一个时间(时、分等)
CurDate()返回当前日期
CurTime()返回当前时间
Now()返回当前日期和时间
Date()返回日期部分
Time()返回时间部分
Year()/Month()/Day()返回年、月、日部分
Hour()/Minute()/Second()返回时、分、秒部分
DayOfWeek()返回日期对应的星期几
DateDiff()计算两个日期之差
Date_Add()高度灵活的日期运算函数
Date_Format()返回一个格式化的日期或时间串
常用日期和时间处理函数

数值处理函数

Abs()/Cos()/Exp()/Mod()/Pi()/Rand()/Sin()/Sqrt()/Tan()等,不常用。


汇总数据

需要表中数据的汇总信息,而不必要返回实际表数据的情况。

SELECT AVG(amount) AS avg_amount
FROM payment; #计算所有行amount字段数值的平均值
函数说明
AVG()返回某列的平均值
COUNT()返回某列的行数
MAX()返回某列的最大值
MIN()返回某列的最小值
SUM()返回某列值之和
…标准差等
SQL聚集函数,一般而言都忽略列值为NULL的行,可以用DISTINCT进行限定

分组数据(GROUP BY)

SELECT Continent,COUNT(*) FROM country
GROUP BY Continent
ORDER BY Continent;

SELECT continent,Region, COUNT(*) FROM country
GROUP BY Continent, Region
ORDER BY Continent; #可以包含任意数目的列;除聚集计算语句外,SELECT语句中的每个列都必须再GROUP BY子语句中给出

SELECT continent,Region, COUNT(*) FROM country
GROUP BY Continent, Region WITH ROLLUP; 使用WITH ROLLUP关键字,可以得到每个分组以及每个分组汇总级别(针对每个分组)的值

过滤分组(HAVING)

SELECT Continent,COUNT(*) FROM country
GROUP BY Continent
HAVING COUNT(*)>40; #使用HAVING关键字来过滤分组,与WHERE类似(WHERE过滤行)

HAVING和WHERE的区别:WHERE过滤行,HAVING过滤分组;WHERE在数据分组前进行过滤,HAVING在数据分组后进行过滤。

SELECT子句顺序

SELECT > FROM > WHERE > GROUP BY > HAVING > ORDER BY > LIMIT,此顺序必须遵从,否则无法执行。

发表评论

电子邮件地址不会被公开。

此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据