5.1 各种各样的函数
函数分类
算数函数 字符串函数 日期函数 转化函数 聚合函数
算数函数
+(加法)
-(减法)
*(乘法)
/(除法)
ABS (绝对值) 参数:需要取绝对值的数值
SELECT ABS(sale_price) FROM product WHERE product_name = '擦菜板'
MOD(求余) 参数:被除数,除数
SELECT MOD(sale_price,purchase_price) FROM product WHERE product_name = '擦菜板'
ROUND(四舍五入) 参数:对象数值,需要保留的位数
SELECT ROUND((sale_price/purchase_price),5) FROM product WHERE product_name = '擦菜板'
字符串函数
字符串拼接 关键字:CONCAT 参数:需要拼接的字符串
SELECT CONCAT(product_type, product_name) FROM product WHERE product_id = 8
字符串长度(字符) 关键字:LENGTH 参数:字符串
SELECT product_name, LENGTH(product_name) FROM product WHERE product_id = 8
大写转小写 关键字:LOWER 参数:字符串
同理 小写转大写:UPPER
SELECT LOWER(product_name) FROM product WHERE product_id = 8
字符串替换 关键字:REPLACE 参数:对象字符串、替换前字符串、替换后字符串
SELECT REPLACE (product_type, '公', '母') FROM product WHERE product_id = 8
字符串截取 关键字:SUBSTR(SUBSTRING)参数:对象字符串、截取的起始位置,截取长度
SELECT SUBSTRING(product_type FROM 2 FOR 3 ) FROM product WHERE product_id = 8
日期函数
获取日期
SELECT CURRENT_DATE ();
获取时间
SELECT CURRENT_TIME ();
获取日期和时间
SELECT CURRENT_TIMESTAMP (); -- 或者 SELECT NOW();
截取日期或时间
SELECT NOW(), EXTRACT(YEAR FROM NOW()), EXTRACT(MONTH FROM NOW()), EXTRACT(DAY FROM NOW()), EXTRACT(HOUR FROM NOW()), EXTRACT(MINUTE FROM NOW()), EXTRACT(SECOND FROM NOW());
转换函数
字符串转数值 关键字:CAST (<字符串> AS signed INTEGER)
SELECT CAST( product_type AS signed INTEGER ) FROM product WHERE product_id = 6
字符串转日期 关键字:CAST (<字符串> AS date)
SELECT CAST(product_type AS date) FROM product WHERE product_id = 6
NULL值转换为其他值 关键字:COALESCE (可能为NULL的列 ,要填充的值)
SELECT COALESCE (sale_price, 200) FROM product
5.2 谓词
谓词与函数的区别
函数的返回值可能为数字、日期、字符串等,而谓词的返回值全部是真值(TRUE/FALSE/UNKNOWN)
主要的谓词
LIKE
BETWEEN
IS NULL、IS NOT NULL
IN
EXISTS
LIKE谓词--模糊查询
SELECT * FROM product WHERE product_type LIKE '%公%'
BETWEEN谓词--范围查询
BETWEEN包含临界值
SELECT * FROM product WHERE purchase_price BETWEEN 1000 AND 6000
IS NULL、IS NOT NULL判断是否为NULL
SELECT * FROM product WHERE purchase_price IS NULL
IN谓词--OR的简便用法
SELECT * FROM product WHERE purchase_price IN (500, 2800, 5000)
子查询作为IN谓词的参数
NOT IN 同理
SELECT * FROM product WHERE purchase_price IN ( SELECT purchase_price FROM product )
EXIST谓词--是否存在
通常以一个子查询作为参数
NOT EXIST同理
SELECT * FROM product WHERE EXISTS ( SELECT * FROM product WHERE sale_price >= 200 )