学习笔记-mysql的视图、事务、索引

本文详细介绍了MySQL中的视图、索引和事务管理。视图作为虚拟表,方便数据查询和管理;索引能加速数据检索,提高查询效率;事务确保数据操作的原子性、一致性和隔离性,提供了回滚和提交机制,保证了数据的完整性。通过实例展示了如何创建、使用和管理视图、索引以及事务。
摘要由CSDN通过智能技术生成

mysql中的视图
视图是一个虚拟表,其内容由查询定义。同真实的表一样,视图包含一系列带有名称的列和行数据。但是,视图并不在数据库中以存储的数据值集形式存在。行和列数据来自由定义视图的查询所引用的表,并且在引用视图时动态生成。

视图的操作

定义一个视图:
    格式: CREATE VIEW 视图名 AS sql语句
    示例:CREATE VIEW test_view AS SELECT name, school from table1

使用视图:
    格式: select * FROM 视图名       (*表示视图中的所有字段名,也可以使用需要查询的字段名)
    示例:select * FROM test_view
修改视图:
    格式:ALTER VIEW 视图名 AS 新的sql语句
    示例:ALTER VIEW test_view AS SELECT name, age FROM table1

删除视图:
    格式:drop VIEW 视图名
    示例:drop VIEW test_view

mysql中的索引
索引用于快速找出在某个列中有一特定值的行,不使用索引,MySQL必须从第一条记录开始读完整个表,直到找出相关的行,表越大,查询数据所花费的时间就越多,如果表中查询的列有一个索引,MySQL能够快速到达一个位置去搜索数据文件,而不必查看所有数据,那么将会节省很大一部分时间。

索引的操作

索引 index:加速数据查询
普通索引:index
创建索引:
    格式:CREATE INDEX 索引名 ON 表名(字段名(字段长度))
    示例:CREATE INDEX test_index ON table1(name(20))
         CREATE INDEX index_1 on table1(name, age)      # 也可以添加两个字段
         
查看索引:
    格式:show INDEX FROM 表名
    示例:show INDEX FROM table1

删除索引:
    格式:DROP INDEX 索引名 on 表名
    示例:DROP INDEX test_index on table1

创建唯一索引:
    格式:CREATE UNIQUE 索引名 on 表名(字段名)
    示例:CREATE UNIQUE index_3 on table1(t1)

删除索引:
    同普通索引

mysql中的事务
一个最小的不可再分的工作单元,通常一个事务对应一个完整的业务(如:银行的转账业务)
一个完整的业务需要批量的DML(Insert, delete, update)语句共同联合完成
事务只和DML语句有关,或者说DML语句才有事务,根据业务逻辑的不同DML的语句个数也不同
rollback 回滚
commit 提交
事务的四大特性:
原子性:事务是最小单位,不可再分
一致性:事务要求DML语句操作的时候,必须保证同时成功或失败
隔离性:事务A和事务B之间具有隔离性
持久性:是事务的保证,植物中介的标志(内存的数据持久保存到硬盘文件中)
术语:
开始事务:start transaction
提交事务:commit
回滚事务:rollback
创建恢复点:savepoint 恢复点名

 使用方法:
        首先进行开启事务:start transaction  可以直接在命令行输
        开启方式有两种还有(begin)也是开启事务
        然后再进行修改数据,可以看到,再没有进行事务提交(commit)之前,修改数据是没有生效的
        不想提交时则使用回滚事务rollback
        创建恢复点 savepoint a   再进行删除表中的数据,使用恢复点之前需要先开启事务
        回滚到之前的恢复点   rollback to 恢复点

事务的使用

操作流程:
    -- 开始事务
    start TRANSACTION

    -- 事务中的操作
    UPDATE table2 SET money = money-500 WHERE NAME="张三"
    UPDATE table2 SET money = money + 500 WHERE NAME = "李四"
    SELECT * from table2

    --提交事务
    COMMIT

事务中断提交

BEGIN           # 开始事务
INSERT INTO table2(name, money) VALUES("王五", 3000)      # 执行操作
SAVEPOINT a         # 定义保存点a
UPDATE table2 SET money = money-500 WHERE NAME="张三"     # 执行操作
UPDATE table2 SET money = money + 500 WHERE NAME = "李四" # 执行操作
SAVEPOINT b         # 定义保存点b
DELETE FROM table2 WHERE name = "张三"        # 执行操作
SELECT * FROM table2            # 查询数据
ROLLBACK TO b                   # 回滚到保存点b,没有提交功能
COMMIT                          # 提交事务
ROLLBACK                        # 回到事务开启之前的状态,同时提交事务(即不修改数据)

两个事务同时开启,相互之间具有隔离性;

table2
table2

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值