各种各样的函数
- 函数的种类:算术函数(用来进行数值计算的函数)、字符串函数(用来进行字符串操作的函数)、日期函数(用来进行日期操作的函数)、转换函数(用来转换数据类型和值的函数)、聚合函数(用来进行数据聚合的函数)
- 算数函数:
- 加减乘除
- 绝对值:ABS函数,ABS(数值)
- 求余:MOD函数,为单词modulo的缩写,MOD(被除数,除数)
- 四舍五入:ROUND函数,ROUND(对象数值,保留小数的位数)
- 字符串函数:
- 拼接:字符串1||字符串2,在MySQL中无法使用,而是使用CONCAT函数完成拼接
- 字符串长度:LENGTH(字符串)
- 小写转换:LOWER(字符串),只适用于英文字母
- 大写转换:UPPER(字符串)
- 字符串的替换:REPLACE(对象字符串,替换前的字符串,替换后的字符串)
- 字符串的截取:SUBSTRING(对象字符串 FROM 截取的起始位置 FOR 截取的字符数)
- 日期函数:
- 当前日期:CURRENT_DATE,没有参数,无需括号
- 当前时间:CURRENT_TIME,没有参数,无需括号
- 当前日期和时间:CURRENT_TIMESTAMP
- 截取日期元素:EXTRACT(日期元素 FROM 日期):EXTRACT(YEAR FROM CURRENT_TIMESTAMP) AS year,
- 转换函数:一是数据类型的转换,简称为类型转换,在英语中称为 cast ;另一层意思是值的转换。
- 类型转换CAST:CAST(转换前的值 AS 想要转换的数据类型)
- 将NULL转换为其他值:COALESCE(数据1,数据2,数据3......),COALESCE 是 SQL 特有的函数。该函数会返回可变参数中左侧开始第 1个不是 NULL 的值。参数个数是可变的,因此可以根据需要无限增加。
谓词
什么是谓词:是需要满足特定条件的函数,该条件就是返回值是真值。
LIKE谓词——字符串的部分一致查询:
前方一致查询:其中的 % 是代表“0 字符以上的任意字符串”的特殊符号,本例中代表“以 ddd 开头的所有字符串”。
中间一致查询:
后方一致查询:
此外,我们还可以使用 _(下划线)来代替 %,与 % 不同的是,它代表了“任意 1 个字符”。
BETWEEN谓词——范围查询:使用 BETWEEN 可以进行范围查询。该谓词与其他谓词或者函数的不同之处在于它使用了 3 个参数。PS:BETWEEN 的特点就是结果中会包含 100 和 1000 这两个临界值。如果不想让结果中包含临界值,那就必须使用 < 和 >
IS NULL、 IS NOT NULL——判断是否为NULL:
IN谓词——OR的简便用法:需要注意的是,在使用IN 和 NOT IN 时是无法选取出 NULL 数据的。实际结果也是如此,上述两组结果中都不包含进货单价为 NULL 的叉子和圆珠笔。 NULL 终究还是需要使用IS NULL 和 IS NOT NULL 来进行判断。
使用子查询作为IN谓词的参数:
EXIST谓词:一言以蔽之,谓词的作用就是“判断是否存在满足某种条件的记录”。如果存在这样的记录就返回真(TRUE),如果不存在就返回假(FALSE)。EXIST(存在)谓词的主语是“记录”。
- EXIST 通常都会使用关联子查询作为参数 。
- 作为EXIST参数的子查询中经常会使用SELECT *。
CASE表达式
什么是CASE表达式:CASE 表达式是在区分情况时使用的,这种情况的区分在编程中通常称为(条件)分支。
CASE表达式的语法:
CASE表达式流程的含义:CASE 表达式会从对最初的 WHEN 子句中的“< 求值表达式 >”进行求值开始执行。所谓求值,就是要调查该表达式的真值是什么。如果结果为真(TRUE),那么就返回 THEN 子句中的表达式, CASE 表达式的执行到此为止。如果结果不为真,那么就跳转到下一条 WHEN 子句的求值之中。如果直到最后的 WHEN 子句为止返回结果都不为真,那么就会返回 ELSE中的表达式,执行终止。
CASE表达式的使用方法:
CASE 表达式最后的“END”是不能省略的,请大家特别注意不要遗漏。
简单CASE表达式:
SQL函数和EXCEL中的函数的应用,有很多类似地方,相对简单些。