存储过程

语法

DECLARE 变量 类型 DEFAULT 默认值;
SELECT 列名 INTO 变量名;

CREATE PROCEDURE 存储过程名(参数模式 参数名 参数类型)
BEGIN
    存储过程体(合法的SQL语句);
END

示例

点击查看代码
CREATE PROCEDURE exa1(IN username VARCHAR(20), IN PASSWORD VARCHAR(20))
BEGIN
    DECLARE result INT DEFAULT '';    

    SELECT COUNT(*) INTO result #赋值
    FROM admin
    WHERE admin.username = username
    AND admin.password = PASSWORD;

    SELECT IF(result>0, 'succ', 'fail');
END

CALL exa1(zhangfei,'666666');

---
CREATE PROCEDURE exa2(IN beautyName VARCHAR(20), OUT boyName VARCHAR(20))
BEGIN
    SELECT bo.boyName INTO boyName
    FROM boys bo
    INNER JOIN beauty b
    ON bo.id = b.boyfriend_id
    WHERE b.name = beautyName;
END

SET @bName
CALL exa2('xiaozhao',@bName);

---
CREATE PROCEDURE exa3(INOUT a INT, INOUT b INT)
BEGIN
    SET a=a*2;
    SET b=b*2;
END

函数

CREATE FUNCTION 函数名(参数列表) RETURN 返回类型
BEGIN
    函数体;
END

MySQL HA

原理:从主服务器复制一个或多个从服务器的异步过程。在主和从之间实现整个复制过程主要由三个线程来完成:I/O线程在主服务器,另外两个线程(SQL线程和I/O线程)在从服务器端;

具体实现过程从服务器I/O线程请求连接上主服务器,主服务器收到通过自身I/O线程返回指定的日志信息,从服务器I/O收到将获取的数据记录到master-info中,同时SQL线程解析数据内容并执行;

https://zhuanlan.zhihu.com/p/335142300

posted on 2023-04-13 00:18  anyu967  阅读(12)  评论(0)    收藏  举报