• MySQL:数据库4



    1. 视图
    创建视图
    create view 视图名字 as 查询sql语句;

    drop view 视图名字;

    alter view 视图名字 as 查询sql语句;
    2. 触发器
    1. 插入事件触发器
    INSERT INTO order_table(gid,much) VALUES(1,3);

    -- update goods set num = num -3 where id =1;

    CREATE TRIGGER tg1 AFTER INSERT on order_table
    for EACH row -- 固定写法
    BEGIN
    update goods set num = num -new.much where id =new.gid;
    END

    -- 删除触发器
    drop TRIGGER TG1;

    2.更新事件触发器
    update order_table set much = much +2 where oid = 6;

    update goods set num = num+2 where id = 1;

    create TRIGGER tg2 AFTER UPDATE ON order_table
    for EACH ROW
    BEGIN
    update goods set num = num+old.much - new.much where id = old.gid;
    END
    3.删除事件触发器
    DELETE FROM order_table where oid =6;

    update goods set num = num + 3 where id = 1;

    create TRIGGER tg3 AFTER DELETE on order_table
    for EACH ROW
    BEGIN
    update goods set num = num + old.much where id = old.gid;
    END
    4.查看触发器
    show tiggers;


    3.存储过程
    1.封装
    -- CREATE PROCEDURE p1()
    -- BEGIN
    -- INSERT into goods VALUES (null,'韩涉',50);
    -- select * from goods;
    -- END
    --

    call p1();
    2.参数
    -- in out inout
    CREATE PROCEDURE p3(in i int,inout names varchar(50))
    BEGIN
    update goods set name = names where id = i;
    END

    set @names = '大鹅';

    call p2(4,@names);

    select @names;
    into 使用
    set @i = 0;
    set @n = '';
    select num into @i from goods where id = 1;

    select @i;
    3.判断
    CREATE PROCEDURE p3(in flag char(5), in nums int)
    BEGIN
    if flag = 'true' then
    SELECT * from goods where num < nums;
    ELSEIF flag ='false' THEN
    SELECT * FROM goods where num > nums;
    ELSE
    SELECT * FROM goods;
    END if;

    END
    call p3('false',20);
    4.循环
    -- 做 1-100 累加的和
    create PROCEDURE p4(in n int,out he int)
    BEGIN
    declare i int DEFAULT 0;
    DECLARE sum int;
    set sum = 0;
    while i <= n DO
    set sum = sum +i;
    set i = i + 1;

    end WHILE;
    set he = sum;
    end

    set @he = 0;

    call p4(100,@he);

    select @he;
    查看存储过程
    show PROCEDURE status;
    删除存储过程
    drop PROCEDURE p1;


    4.函数
    create FUNCTION f1(x int,y int)
    RETURNS INT

    BEGIN
    declare sum int DEFAULT 0;
    set sum = x +y;
    RETURN(sum);
    END

    select f1(100,2);

    select g.*,f1(100,num) FROM goods g;

    DROP FUNCTION f1;

    5.事物
    什么是事物
    一组sql语句批量执行,要么全部执行成功,要么全部执行失败

    事物的四个特点:
    原子性:对于其数据修改,要么全都执行,要么全都不执行。
    一致性:数据库原来有什么样的约束,事务执行之后还需要存在这样的约束,所有规则都必须应用于事务的修改,以保持所有数据的完整性。
    隔离性:一个事务不能知道另外一个事务的执行情况(中间状态).所以同一个数据在有多个事物访问时,其中一个得到数据访问修改,其他的事物处于阻塞状态,直到数据被释放,轮到下一个使用。
    持久性:即使出现致命的系统故障也将一直保持。不要告诉我系统说commit(提交)成功了,回头电话告诉我,服务器机房断电了,我的事务涉及到的数据修改可能没有进入数据库。
    start TRANSACTION; -- 开启事物,关闭mysql自己的自动提交方式
    SAVEPOINT sa1;

    update account set money = money -1000 where id = 4;

    SAVEPOINT sa1;

    update account set money = money +1000 where id = 3;

    -- COMMIT; -- 提交当前事物
    select * from account;

    ROLLBACK to sa1;-- 回滚当前事物

    6.锁
    当并发事务同时访问一个资源时,有可能导致数据不一致,因此需要一种机制来将数据访问顺序化,以保证数据库数据的一致性。

    7.数据库的备份
    备份:
    mysqldump -uroot -p123456 数据库名 表 > 保存位置.
    导入:
    mysql> USE 数据库名;
    mysql> source 备份文件.sql;

  • 相关阅读:
    jquery validate自定义checkbox验证规则和样式
    【转】maven导出项目依赖的jar包
    maven web项目build失败
    【转】maven仓库快速镜像
    【转】javax.net.ssl.SSLHandshakeException(Cas导入证书)
    Maven发布web项目到tomcat
    tomcat启动是报Multiple Contexts have a path of "/XXX"
    spring无法扫描jar包的问题
    CAS单点登录之mysql数据库用户验证及常见问题
    搭建CAS单点登录服务器
  • 原文地址:https://www.cnblogs.com/kakawith/p/8490054.html
Copyright © 2020-2023  润新知