E.g. : SELECT DATEBASE(); //查询当前使用的数据库 RETURN databasename
E.g. : SELECT LAST_INSERT_ID(); //查询最后插入记录的ID号 RETURN 最后操作的表中的ID号;多条操作的情况,以语句操作的第一条ID为准,后续ID忽略
E.g. : SELECT USER(); //查询当前的用户 RETURN root@localhost
E.g. : SELECT VERSION(); //查询当前版本信息 RETURN 5.7.11-log
聚合函数
1
2
3
4
5
6
7
KEY: AVG() | COUNT() | MAX() | MIN() | SUM()
E.g. : SELECT AVG(colname) AS ascolname FROM tablename;// 可用于查找计算出字段数值的平均值 RETURN keyavg
E.g. : SELECT COUNT(colname) AS ascolname FROM tablename;// 可用于查找计算出字段数值的记录数 RETURN keycount
E.g. : SELECT MAX(colname) AS ascolname FROM tablename;// 可用于查找计算出字段数值的最大值 RETURN keymax
E.g. : SELECT MIN(colname) AS ascolname FROM tablename;// 可用于查找计算出字段数值的最小值 RETURN keymin
E.g. : SELECT SUM(colname) AS ascolname FROM tablename;// 可用于查找计算出字段数值的和 RETURN keysum
加密函数
1
2
3
4
KEY: MD5() | PASSWORD()
E.g. : SELECT MD5('VARCHAR'); //MD5加密,WEB应用建议MD5加密密码
E.g. : SELECT PASSWORD('VARCHAR'); //PASSWORD加密,可修改当前或者其他用户密码
自定义函数
1
2
3
4
5
6
7
8
KEY: CREATE | FUNCTION | RETURNS | {SYROMH|INTEGER|REAL|DECIMAL} RETURN |BEGIN END
E.g. : CREATE FUNCTION NOWCHINA() RETURNS VARCHAR(30) RETURN DATE_FORMAT(NOW(),'%Y年%m月%d日 H点:%i分:%s秒'); //创建了一个封装了格式化过的现在日期时间函数
E.g. : CREATE FUNCTION AVG1(num1 SMALLINT UNSIGNED,num2 SMALLINT UNSIGNED[,...]) RETURNS FLOAT(10,2) UNSIGNED RETURN (num1+num2)/2; //创建了一个计算num1和num2平均值的函数
E.g. : DELIMITER //
CREATE FUNCTION ADDUSER(username VARCHAR(20)[,...]) RETURNS INT UNSIGNED BEGIN INSERT test(username) VALUES(username); //带复合结构BEGINEND的函数,复合函数用于包含拥有多条SQL语句的作用
CREATE PROCEDURE removeUserById(IN p_id INT UNSIGNED,OUT userNums INT UNSIGNED) // IN 传入参数 ,OUT返回结果 ,此关键字说明此方法传入参数后并且规定返回指定类型结果
BEGIN
DELETE FROM users WHERE id = p_id; //声明传参名时不可跟表单重名,建议使用表头字母_id来声明 x_id .此语句为执行删除传入id的id行数据;
SELECT count(id) FROM users INTO userNums; //此语句为,上语句删除完毕后,查询删除后现id字段的计数,并且传输结果给userNums返回出值
END//
DELIMITER ; // 调用过程需要传入接受返回值的变量 CALL removeUserAndReturnUserNums(10,@nums); 此时数值被写入到 @nums变量,可通过SELECT @nums来查询 @是一种声明用户变量 BEGINEND内可声明局部变量
E.e. : DELIMITER // 单参数传入 多参数返回
CREATE PROCEDURE removeUserByAgeAndReturnInfos(IN p_age SMALLINT UNSIGNED O,OUT deleteUser SMALLINT UNSIGNED,OUT userCounts SMALLINT UNSIGNED)
BEGIN
DELETE FROM users WHERE age = p_age; // 删除掉表内匹配p_age的一行数据 参数用了IN,所以不用返回值,只需处理传入值
SELECT ROU_COUNT() INTO deleteUsers; //查询更改的数量。并把数值返回给deleteUsers接收,以供后续传值到其他变量中查询
SELECT COUNT(id) FROM users INTO userCounts; //查询来自users表中更改后剩下的ID计数,并返回结果给userCounts接收
END//
DELIMITER ; //使用CALL removeUserByAgeAndReturnInfos(20,@a,@b); SELECT @a,@b; RETURN 处理数 处理后计数