MySQL数据库基础(下-1)

11.MySQL 常用函数

日期和时间函数
SELECT CURDATE(),CURTIME(),MONTH(birthday) AS m FROM t_data;//返回当前日期,时间,返回birthday中的月份值
字符串函数
SELECT userName,CHAR_LENGTH(userName),UPPER(userName),LOWER(userName) FROM t_data;
//计算userName字符串的字符个数(UPPER(s)把s中所有字母变成大写)(LOWER(s)把s中所有字母变成小写)
数学函数
SELECT num,ABS(num) FROM t_data;//求绝对值
SELECT SQRT(4) FROM t_data;//求平方根
SELECT MOD(9,2) FROM t_data;//求余
加密函数

1,PASSWORD(str) 一般对用户的密码加密 不可逆不能复原
2,MD5(str) 普通加密 不可逆不能复原
3,ENCODE(str,pswd_str) 加密函数,结果是一个二进制数,必须使用 BLOB 类型的字段来保存它;
4,DECODE(crypt_str,pswd_str) 解密函数;


INSERT INTO t_data VALUES(NULL,'2019-9-21','a',1,PASSWORD('123456'));//一般对用户的密码加密,不可逆不能复原
INSERT INTO t_data VALUES(NULL,'2019-9-21','a',1,MD5('123456'));//普通加密,不可逆不能复原
INSERT INTO t_data VALUES(NULL,'2019-9-21','a',1,MD5('123456'),ENCODE('123456','aa'));//加密函数,结果是一个二进制数,必须用BLOB类型的字段来保存它
INSERT INTO t_data VALUES(NULL,'2019-9-21','a',1,MD5('123456'),ENCODE('abc','aa'));
SELECT pp FROM t_data WHERE id=7;
SELECT DECODE(pp,'aa') FROM t_data WHERE id=7;//解密函数,将pp解密为原来的可见密码

12. 存储过程和函数(实例)

存储过程的引用

存储过程是一组为了完成特定功能的SQL 语句集,它存储在数据库中,一次编译后永久有效,用户通过指定存储过程的名字并给出参数(如果该存储过程带有参数)来执行它。存储过程是数据库中的一个重要对象。

函数的引入

数据库函数是指当需要分析数据清单中的数值是否符合特定条件时,使用数据库工作表函数。

12.1创建存储过程
CREATE
    [DEFINER = { user | CURRENT_USER }]
 PROCEDURE sp_name ([proc_parameter[,...]])
    [characteristic ...] routine_body
 
proc_parameter:
    [ IN | OUT | INOUT ] param_name type
 
characteristic:
    COMMENT 'string'
  | LANGUAGE SQL
  | [NOT] DETERMINISTIC
  | { CONTAINS SQL | NO SQL | READS SQL DATA | MODIFIES SQL DATA }
  | SQL SECURITY { DEFINER | INVOKER }
 
routine_body:
  Valid SQL routine statement
 
[begin_label:] BEGIN
  [statement_list]
    ……
END [end_label]

实例

USE db_book
DELIMITER &&
CREATE PROCEDURE pro_book (IN bT INT,OUT count_num INT)
      READS SQL DATA//说明子程序使用SQL语句的限制是从begin开始到end结束
      BEGIN
        SELECT COUNT(*) FROM t_book WHERE bookTypeId=bT;
      END
      &&
DELIMITER ;//创建存储过程PROCEDURE,用BEGIN和END来标志SQL代码的开始和结束

调用存储过程

CALL pro_book(1,@total);//调用存储过程
12.2创建存储函数
CREATE FUNCTION <函数名> ( [ <参数1> <类型1> [ , <参数2> <类型2>] ])
  RETURNS <类型>
  <函数主体>

实例

DELIMITER &&&
CREATE FUNCTION func_book(bookId INT)
  RETURNS VARCHAR(20)
  BEGIN
      RETURN (SELECT bookName FROM t_book WHERE id=bookId);
  END
  &&&
DELIMITER ;//创建函数func_book

调用存储函数

SELECT func_book(2);
12.3变量的使用
定义变量
 DECLARE a,b VARCHAR(20);//定义变量
为变量赋值
DECLARE a,b VARCHAR(20);
SET a='java1234',b='123456';//定义变量并且为变量赋值

13.游标的使用

查询语句可能查询出多条记录,在存储过程和函数中使用游标来逐条读取查询结果集中的记录。游标的使用包括声明游标、打开游标、使用游标和关闭游标。游标必须声明在处理程序之前,并且声明在变量和条件之后

声明游标
DECLARE cur_t_user2 CURSOR FOR SELECT userName2,password2 FROM t_user2;//声明游标
打开游标
OPEN cur_t_user2;//打开游标)
使用游标
FETCH cur_t_user2 INTO a,b;//使用游标
关闭游标
CLOSE cur_t_user2;//关闭游标
发布了13 篇原创文章 · 获赞 1 · 访问量 415

猜你喜欢

转载自blog.csdn.net/qq_43775034/article/details/101378103