SQL函数使用

常见的SQL函数

1. 算术函数
2. 字符串函数
3. 日期函数
4. 转换函数

数据表中字段类型:数值类型、字符串类型、日期类型。

 

算术函数:

算术函数,顾名思义就是对数值类型的字段进行算术运算。
常用的算术函数:
SELECT ABS(-2), 取绝对值,运行结果为 2。
SELECT MOD(101,3),取余,运行结果 2。
SELECT ROUND(37.25,1),四舍五入指定的小数位数,运行结果 37.3。

 

字符串函数:

常用的字符串函数操作包括了字符串拼接,大小写转换,求长度以及字符串替换和截取等。
SELECT CONCAT('abc', 123),拼接字符串,运行结果为 abc123。
SELECT LENGTH('你好'),计算字段的长度(汉字算三个字符),运行结果为 6。
SELECT CHAR_LENGTH('你好'),计算字段的长度,运行结果为 2。
SELECT LOWER('ABC'),字符转小写,运行结果为 abc。
SELECT UPPER('abc'),字符转大写,运行结果 ABC。
SELECT REPLACE('fabcd', 'abc', 123),替换函数,运行结果为 f123d。
SELECT SUBSTRING('fabcd', 1,3),截取字符串,运行结果为 fab。

SQL函数使用_第1张图片

 

日期函数:

日期函数是对数据表中的日期进行处理。

SQL函数使用_第2张图片


转换函数:

转换函数可以转换数据之间的类型

SQL函数使用_第3张图片

 

用 SQL 函数对王者荣耀英雄数据做处理

示例:

查询英雄以及他的物攻成长,对应字段为attack_growth。我们让这个字段精确到小数点后一位,需要使用的是算术函数里的 ROUND 函数:
SELECT name, ROUND(attack_growth,1) FROM heros;

查询英雄最大生命值的最大值,就需要用到 MAX 函数:
SELECT MAX(max_hp) FROM heros;

查询最大生命值最大的是哪个英雄,以及对应的数值:
SELECT name,hp_max FROM heros WHERE hp_max = (SELECT MAX(max_hp) FROM heros);

查询英雄的名字以及他们的名字字数,用到CHAR_LENGTH函数:
SELECT name,CHAR_LENGTH(name) FROM heros;

提取英雄上线日期的年份,只显示有上线日期的英雄:
SELECT name,EXTRACT(YEAR FROM birthdate) AS birthdate FROM heros WHERE birthdate is not NULL;

查询在 2016 年 10 月 1 日之后上线的所有英雄:
SELECT * FROM heros WHERE DATE(birthdate) > '2016-10-01';
不安全的写法:SELECT * FROM heros WHERE birthdate>'2016-10-01';
因为很多时候你无法确认 birthdate 的数据类型是字符串,还是 datetime 类型,如果你想对日期部分进行比较,那么使用DATE(birthdate)来进行比较是更安全的。

查询在 2016 年 10 月 1 日之后上线英雄的平均最大生命值、平均最大法力和最高物攻最大值:
SELECT AVG(hp_max),AVG(mp_max),MAX(attack_max) FROM heros WHERE DATE(birthdate) >'2016-10-01';

计算英雄的最大生命平均值;显示出所有在 2017 年之前上线的英雄,如果英雄没有统计上线日期则不显示:
SELECT AVG(hp_max), name FROM heros WHERE birthdate is not NULL AND YEAR(birthdate) < 2017;

 

SQL 函数会带来问题:

SQL 函数使用起来会很方便,但我们使用的时候还是要谨慎,使用的函数很可能在运行环境中无法工作,这是因为因为DBMS,DBMS 之间的差异性很大,就像是语言有不同版本的,我们在使用 SQL 语言的时候,不是直接和这门语言打交道,而是通过它使用不同的数据库软件,即 DBMS。DBMS 之间的差异性很大,远大于同一个语言不同版本之间的差异。
实际上,只有很少的函数是被 DBMS 同时支持的。大部分 DBMS 会有自己特定的函数,这就意味着采用 SQL 函数的代码可移植性是很差的,因此在使用函数的时候需要特别注意。

 

大小写规范:

在 Linux 和 Windows 环境下,会遇到不同的大小写问题。
比如 MySQL 在 Linux 的环境下,数据库名、表名、变量名是严格区分大小写的,而字段名是忽略大小写的。
而 MySQL 在 Windows 的环境下全部不区分大小写。
这就意味着如果你的变量名命名规范没有统一,就可能产生错误。
这里有一个有关命名规范的建议:
1.关键字和函数名称全部大写;
2.数据库名、表名、字段名称全部小写;
3. SQL 语句必须以分号结尾。


 

你可能感兴趣的:(SQL函数使用)