# 信息函数
VERSION() 版本信息
CONNECTION_ID() 服务器的连接数
DATABASE()、SCHEMA 当前数据库名
LAST_INSERT_ID() 最后插入记录的 ID 号
USER()、SYSTEM_USER()、SESSION_USER()、CURRENT_USER()、CURRENT_USER 当前用户
# 加密函数
MD5 信息摘要算法
PASSWORD() 密码算法
# 日期时间函数
NOW() 当前日期时间
CURDATE() 当前日期
CURTIME() 当前时间
DATA_ADD() 日期变化(增或减)
DATEDIFF() 日期差值
DATE_FORMAT() 日期格式化
# 字符函数
space(N) 返回由 N 个空格构成的字符串
length(str) 返回字符串的存储长度
charjength(str) 返回字符串的字符个数
lower(column|str) 将字符串全部转换为小写字母
upper(column|str) 将字符串全部转换为大写字母
repeat(str, count) 将字符串 str 重复 count 次后返回
reverse(str) 将字符串 str 反转后返回
concat(column|strl, column|str2...) 将多个字符串首尾相连后返回
concat_ws(sep,strl,str2...) 将多个字符串指定连接符sep的首尾相连后返回
left(str, len) ; right(str, len) 返回最左(右)边的 len长度的子串
substr(str,pos[,len]) 从字符串中的指定位置pos开始取一个字串返回
insert(str;substr) 从字符串 str 中返回子串 substr 第一次出现的位置
lpad(str,len,padstr) , rpad(str,len,padstr) 在 str 的左(右)边填充给定的字串 padstr 到指定的长度 len , 返回填充后的字符串
trim([{both|leading|trailing} [remstr]from] str 从源字符串 str 中去掉两端、前缀或后缀,字符 remstr, 并返回
replace(str, from_str, to_str 在字符串 str 中查找所有的子串 from_str, 用 to_str 替换返回
Itrim(str) , rtrim(str) 去掉字符串的左边或右边的空格(左对齐、右对齐)
format(X, D [,丨oca丨e]) 以格式 "#,##,###.##" 格式化数字X
strcmp(exprl,expr2) 如果两个字符串是一样的则返回 0 ; 如果第一个小于第二个则返回 -1 ; 否则返回 1
charCN,... [useing charset.name]) 将每个参数 N 解释为整数(字符的编码),返回对应的字符,构成的字符串
# 比较函数
[NOT] BETWEEN ... AND ... (不) 在...范围内
[NOT] IN() (不) 在列出值范围内
IS [NOT] NULL (非) 空
# 数值函数
ABS(x) 返回 x 的绝对值
CEIL(x) 返回大于 x 的最大整数值
FLOOR(x) 返回小于 x 的最大整数值
MOD(x,y) 返回 x / y 的模
RAND () 返回0 到 1 内的随机值
ROUND(x,y) 返回参数 x 的四舍五入的有 y 位小数的值,y 默认为0
TRUNCATE(x,y) 返回数字 x 截断为 y 位小数的结果,y 取复数表示从小数点左边截断
# 聚合函数
SUM() 返回某个列之和
AVG() 返回某列的平均值
MAX() 返回某列的最大值
MIN() 返回某列的最小值
COUNT() 返回某列的行数
# 自定义函数(user-defined function UDF)
创建UDF:
DELIMITER ? # 如果函数体只有一条语句, begin和end可以省略, 同时DELIMITER也可以省略
CREATE FUNCTION func_name(param1 ...,param2...)
RETURNS datetype
BEGIN
函数体
RETURN ...
END
? # DELIMITER的符号
DELIMITER ;
调用UDF:
SELECT func_name(parameter_value,...)
删除UDF:
DROP FUNCTION func_name
# 存储过程
DROP PROCEDURE p_name; # 删除存储过程
CALL p_name(); # 调用存储过程
# 批量创建表
DELIMITER //
CREATE PROCEDURE CTABLES()
BEGIN
DECLARE i INT;
DECLARE table_name VARCHAR(20);
DECLARE table_ VARCHAR(20);
DECLARE sql_text VARCHAR(2000);
SET i=1;
SET table_name='';
SET table_='fz';
SET sql_text='';
while i<25 do
#IF i<10 THEN SET table_name=CONCAT(table_pre,i);
#ELSE SET table_name=CONCAT(table_pre,i);
#END IF;
SET table_name=CONCAT(table_,i);
SET sql_text=CONCAT('CREATE TABLE ', table_name,'(id int)');
SELECT sql_text;
SET @sql_text=sql_text;
PREPARE stmt FROM @sql_text;
EXECUTE stmt;
DEALLOCATE PREPARE stmt;
SET i=i+1;
end while;
END
//