mysql 事务、视图、索引、预处理

https://www.cnblogs.com/xyxxs/p/4440187.html

事务:

    作用:管理多个SQL语句执行,要么都成功,要么都失败。 —— 关系型数据库 专用!

    组成:DML、DDL、DCL

    特点:要么都成功,要么都失败。

    使用流程:

        1. 开启事务。start transaction 或 begin

        2. 执行 SQL (insert、update、delete)

        3. 。。。

        4. 关闭事务。commit(提交:保存上述修改) rollback(撤销上述修改)。

    关闭事务:
        显示关闭:
            显示提交:commit

            显示回滚:rollback
        隐式关闭:
            隐式提交:一条DDL语句(如:create table)。 正常退出(exit、quit、\q)

            隐式回滚:掉电、宕机、非正常退出。

    Innodb 引擎,支持事务管理。 myisam 不支持。

    保存点:(回滚点)

        语法:     设置保存点: savepoint  保存点名

            回滚至保存点:rollback to 保存点名 —— 不会关闭事务

        使用流程:

            1. begin 开启事务。

            2. 执行 SQL语句(insert、update、delete)

            3. 设置保存点

            4. 。。。

            N. rollback to 保存点名

            N+1. 关闭事务。(commit、rollback)

    事务的特性(ACID):【重点】

        原子性、一致性、[ 隔离性 ]、持久性

视图:


    依赖表创建,不是真实的表。不能存储表数据,数据依然存放在原始表中。

    作用:    1. 筛选数据。

        2. 对用户隐藏表结构

        3. 降低SQL复杂度。

    创建视图:
        语法: create view 视图名 as  select 查询语句(单表查询、多表查询、子查询。。。)。

            create view vw_stu as select stuno, stuname, stusex, writtenexam, labexam from stuinfo natural join stumarks;

    视图的使用:
        与表的使用一致。(insert、update、delete、select)

    查看视图:show tables;  不能使用 show  views。

        select table_name from information_schema.views; 

        show table status where comment = 'view'\G;

    查看视图结构体: desc 视图名。

    查看创建视图:     show create view 视图名\G

    删除:    drop view [if exists] 视图名

索引:


    优点: 查询速度快

    缺点:     insert、update、delete 效率低。

        占用存储空间。

    创建索引:

        方法1: create index 索引名 on 表名(字段名)

        方法2: alter  table 表名 add index 索引名 (字段名)

    创建表指定索引:

        create table 表名 (字段名 字段类型,字段名 字段类型,..., index 索引名(字段名))

        create table 表名 (字段名 字段类型,字段名 字段类型,..., key 索引名(字段名))  也可以实现。

    查看索引:

        show create table 表名\G

    删除索引:

        drop index 索引名 on 表名

    创建索引的原则:

        1. 频繁搜索 —— 适合创建

        2. 有排序需求 —— 适合创建

        3. 有公共字段 —— 适合创建

        4. 数据量较少,不需要创建索引。

        5. 字段的取值范围较少(枚举、集合), 不需要创建。


    xxx.go ——> go build xxx.go(编译) ——> xxx.exe

编译:1. 预处理 2. 编译 3. 汇编 4. 链接

    编译:最慢: 词法分析、语法分析、简单逻辑分析。

预处理:


    使用场景:一条SQL频繁多次执行。

    使用流程:1. prepare 预处理名(stmt)  from ' sql语句 '; ——> 预处理准备完毕。

        2. execute 预处理名(stmt)  [ using 变量 ]

    变量的使用:

        1. prepare 预处理名(stmt)  from ' sql语句 带有 站位符(?) ';  可以有多个 ?

        2. set @变量名 = 变量值, @变量名 = 变量值, 。。。

        3. execute 预处理名(stmt) using @变量名,@变量名,。。。    —— 有多个占位符时, 按站位符?顺序,依次赋值。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值