zoukankan      html  css  js  c++  java
  • mql初学事物和视图

    1.概念:一条或者多条sql语句的集合!

    事务:就是一堆操作的集合,他们同生共死。要么都执行成功,要么都执行失败


    2.事务的特性 ACID
    A:原子性 完整的,不可分割的

      原子性 (Atomicity):在事务中的操作,要么都执行,要么都不执行!


    C: 一致性 事务执行完毕后,数据的状态是一致的()

      一致性(Consistency):事务必须保证数据库从一个一致性的状态变成另一个一致性的状态!


    I: ISOLation 隔离性 两个事务执行互不影响

      隔离性(Isolation):每个事务之间互不干扰!哪怕是并发执行也不干扰!


    D: 永久性 事务执行完后,对数据的影响是永久的。

      持久性(Durability):事务一旦被改变,那么对数据库中数据的影响是永久性的!

    3.事务操作的关键字
    自动提交事务开关set autocommit=1
    开始事务 start transaction /begin
    提交事务 commit
    回滚事务 rollback
    set autocommit=1
    4.事务+++存储过程 转账的例子

    DELIMITER $$
    CREATE PROCEDURE usp_transfer()
    BEGIN
    ##错误总数默认是0
    DECLARE t_error INTEGER DEFAULT 0;
    ## continue 继续 hanlder 执行 并且对 t_error重新赋值为1
    DECLARE CONTINUE HANDLER FOR SQLEXCEPTION SET t_error=1;
    SET autocommit=0;
    START TRANSACTION;
    UPDATE bank SET balance=balance-100 WHERE cid=1;
    UPDATE bank SET balance =balance+100 WHERE cid=2;
    IF t_error > 0 THEN
    ROLLBACK;
    ELSE
    COMMIT;
    END IF;
    SET autocommit=1;
    END$$
    DELIMITER ;

    CALL test_sp800()

    1.视图: 就是一张虚拟表,本质上存储的是一对SQL的集合

    --  视图 是一张虚拟的表
       01.表示一张表的部分数据或者是多张表的综合数据!
       02.结构和数据都是建立在对真表的查询基础之上的!
       03.视图中存放的数据其实就是对真实表的引用!
         对视图中的数据进行添加,更新删除都会影响到真实的表!
       04.一个真实的表可以创建N个视图!
       05.如果视图关联了多表,不允许增 删!单表可以增删改
       06.视图一般都是使用查询!

    2.定义视图的语法:
    create view VW_stulist(VW_名字)
    as
    sql语句

    3.视图的使用 和检索基本表一样,直接通过select
    select * from VW_stulist

    4.删除视图
    drop view 视图名
    drop table 
    drop database
    drop index
    drop constraint

    5.查看所有库所有视图

     5.1.切换到系统数据库
      use information_schema

     5.2.select * from views G;

    注: 只有在cmd才能看出区别

     6.查看当前库的所有视图
       show tables status where comment='view'

     7.视图注意事项
    1)视图可以查询多表数据 
    2)视图可以嵌套
    3)update,insert,delete不能封装成视图内容,通过图形化界面可以操作数据(操作视图数据,影响的是基本表)。
    4)删除视图数据的时候,有一定的限定,数据结果来源于多表的时候,不能删除


    --  查询视图中的内容
    SELECT * FROM view_student_result
    -- 查询mysql数据库中所有的视图
    SELECT * FROM information_schema.views;
    --  删除视图
    DROP  VIEW view_student_result;

    --  创建一个表的视图  学生姓名,地址,手机号
    CREATE VIEW  view_student 
    AS
    SELECT  studentName,address ,phone 
    FROM  student

    -- 查询视图

    SELECT  * FROM view_student 

  • 相关阅读:
    90. 子集 II
    274. H 指数
    1291. 顺次数
    StreamWriter 跟BinaryWriter的区别
    非常有用的正则表达式
    linux菜单恢复
    VS2008的诡异问题
    一些常用算法 练手的的代码
    string 类型为空的处理方法
    left jion 的多表连接用法。
  • 原文地址:https://www.cnblogs.com/liehuonanjue/p/8463781.html
Copyright © 2011-2022 走看看