MySQL触发器 ,视图索引 , 事务

本文涉及的产品
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS PostgreSQL,集群系列 2核4GB
简介: MySQL触发器 ,视图索引 , 事务

MySQL进阶二

补充触发器知识

# 删除触发器代码
drop trigger 触发器名;
# 当一个学员发生转班,班级对应的总数进行同步变化
# 当一个学员发生转班,班级对应的总数进行同步变化
delimiter !!
create trigger movestudent after update on stu1 for each ROW
BEGIN
  #定义两个变量
  declare numOld int; # 定义旧班级人数
  declare numNew int; # 定义新班级人数
  set numOld = (select stu_num from stu2 where class = old.class);
  select  numOld into @a;
  
  set numNew = (select stu_num from stu2 where class = new.class);
  select numNew into @b;
  update stu2 set stu_num = numOld - 1 where class = old.class;
  update stu2 set stu_num = numNew + 1 where class = new.class;
end !!
delimiter;
update stu1 set class = 2302 where name = "阿涛";
select @a;
select @b;
drop trigger movestudent;

1、视图

视图: 是一个虚拟表,内容就是由查询结果定义
视图不是真实的数据,只是一个数据映射
但是视图的结构和真正的表结构是一样
视图作用:
简化高频或者复杂的查询语句
高并发: 数据库也会有并发压力
商品展示查询就要用到视图表
而且还可以起到一个权限
视图表只能查询操作
# 创建视图表
create view 视图名称 as select 已查询语句;
# 查询当前数据库所有的视图
create view stu_2301 as 
select * from stu1 where class = 2301;
# 删除视图表
drop view 视图名称;
# 查询当前数据库所有视图
# 格式
show full tables in 数据库名称 where table_type like "view";
show full tables in demo924 where table_type like "view";

2、索引

索引:index 就是目录
一般如果你的表查询很多,一般可以用索引进行查询
目的:优化我们的查询速度
1.主键索引  (primary key)
2.普通索引
3.唯一索引
# 在创建表到时候就要创建索引
# 格式
create table 表名(
  字段名 数据类型,
    字段名 数据类型,
  
    # 普通索引
    index 索引名称(字段名),
    # 唯一索引
    unique 索引名称(字段名)
);
# 以后五次格式报错同学,罚抄10遍格式样式
# 能创建表后插入索引
create index 索引名称 on 表名(字段名);
create unique 索引名称 on 表名(字段名);
# ---------------------------
create table t12(
  name char(5),
  index  name_index(name)
);
insert into t12 values 
("守护"),
("秃头"),
("11166", );
# 查询索引
select * from t12 where name = "秃头";

3、存储引擎

其实储存引擎就是mysql如何储存这个数据的
InnoDB 流行储存引擎
SHOW ENGINES;

6、事务(重点)

it 必须学习
事务处理 : 是用来维护数据库的完整性,保证sql语句要么就全部执行,要么全部不执行
事务处理: select,insert, update, delete 语句
事务一旦提交,就不会发生丢失的现象
事务要满足四个条件:原子性, 一致性, 隔离性, 持久性
原子性:一组事务, 所有sql语句要么就全部进行成功,要全部不执行, 之前执行的全部执行回滚
一致性:事务b撤回的数据应该来自事务A,总共两者的总数是一致的
隔离性:各自的事务都是独立运行,一个事务处理后的结果如果影响到其他事务的时候, 其他事务需要先撤回
持久性:事务的持久性(也就永久性)是指一旦事务提交成功了,对数据修久性。
事务隔离级别:
1.读取未提交
事务A和事务B, 事务A没有提交数据,事务B读取到,但是不是持久性的,可以回滚的,这里事务b读取的数据叫"脏数据"。
2.读取已提交
事务A和事务B 事务A要提交后数据,事务B才能读取到
一句话就是我们读取的数据都是数据库真实数据
但是这个隔离导致不可重复读取
就是同一个事务,只能读取一次
这种不会用
3.可重复读取
事务A 和 事务B , 事务A提交的数据,事务b可以重复读取
这种隔离是sql默认隔离级别
4.串行化
事务A和事务B,事务A操作数据库的是,事务b只能排队等待
这种隔离级别很少使用,吞吐量太低,用户体验差
/*
事务还可以分两个大类: 隐性事务和显性事务
隐性事务很简单: 就是insert ,delete, update 都是隐性事务。都是默认提交
显性事务: 可以看出事务过程的,有明显的开始与结束标志,
  
*/
# 开始显性事务
begin;
insert into t12 values("放屁蹦出诗");
commit;
select * from t12;
# 开始显性事务
begin;
insert into t12 values("放屁蹦出诗");
select * from t12;
rollback;
commit;

7、pymysql(重点)

使用python 执行mysql的sql语句进行增删改查
pip install pymysql
import pymysql
# 开始建立数据库对象
db = pymysql.connect(
    # host 地址,我们主机地址localhost,或者IP地址127.0.0.1
    host="localhost",
    # 数据库用户名
    user="root",
    # 密码
    password="root",
    # 数据库字符编码
    charset="utf8",
    # 你要用的数据库名称
    database="demo924"
)
# 创建游标对象(理解为指针),代表该链接的数据库
# cursor专门创建游标
cur = db.cursor()
# 这里不需要分号,sql语句不区分大写
sql = "DeSc stu1"
# 需要执行sql语句
cur.execute(sql)
# 查询返回结果fetchall(), fetchone(), fetchany()
# 返回一个嵌套元组
print(cur.fetchall())
# 如何设置显性事务
# 插入多个数据
sql = "insert into stu1(name,class,sex) values (%s, %s ,%s) "
values = [
    ("xxx6", '2301', "女"),
    ("xxx7", '2303', "女"),
    ("xxx8", '2302', "男")
]
# 使用多条数据进行结合方法executemany(sql语句, 数据)
cur.executemany(sql, values)
db.commit()


相关实践学习
如何快速连接云数据库RDS MySQL
本场景介绍如何通过阿里云数据管理服务DMS快速连接云数据库RDS MySQL,然后进行数据表的CRUD操作。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助     相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
相关文章
|
10天前
|
SQL 关系型数据库 MySQL
深入解析MySQL的EXPLAIN:指标详解与索引优化
MySQL 中的 `EXPLAIN` 语句用于分析和优化 SQL 查询,帮助你了解查询优化器的执行计划。本文详细介绍了 `EXPLAIN` 输出的各项指标,如 `id`、`select_type`、`table`、`type`、`key` 等,并提供了如何利用这些指标优化索引结构和 SQL 语句的具体方法。通过实战案例,展示了如何通过创建合适索引和调整查询语句来提升查询性能。
91 9
|
2天前
|
SQL 安全 关系型数据库
【MySQL基础篇】事务(事务操作、事务四大特性、并发事务问题、事务隔离级别)
事务是MySQL中一组不可分割的操作集合,确保所有操作要么全部成功,要么全部失败。本文利用SQL演示并总结了事务操作、事务四大特性、并发事务问题、事务隔离级别。
【MySQL基础篇】事务(事务操作、事务四大特性、并发事务问题、事务隔离级别)
|
15天前
|
缓存 关系型数据库 MySQL
MySQL 索引优化以及慢查询优化
通过本文的介绍,希望您能够深入理解MySQL索引优化和慢查询优化的方法,并在实际应用中灵活运用这些技术,提升数据库的整体性能。
56 18
|
7天前
|
存储 Oracle 关系型数据库
索引在手,查询无忧:MySQL索引简介
MySQL 是一款广泛使用的关系型数据库管理系统,在2024年5月的DB-Engines排名中得分1084,仅次于Oracle。本文介绍MySQL索引的工作原理和类型,包括B+Tree、Hash、Full-text索引,以及主键、唯一、普通索引等,帮助开发者优化查询性能。索引类似于图书馆的分类系统,能快速定位数据行,极大提高检索效率。
34 8
|
8天前
|
SQL 关系型数据库 MySQL
MySQL进阶突击系列(04)事务隔离级别、AICD、CAP、BASE原则一直搞不懂? | 看这篇就够了
本文详细介绍了数据库事务的四大特性(AICD原则),包括原子性、隔离性、一致性和持久性,并深入探讨了事务并发问题与隔离级别。同时,文章还讲解了分布式系统中的CAP理论及其不可能三角关系,以及BASE原则在分布式系统设计中的应用。通过具体案例和图解,帮助读者理解事务处理的核心概念和最佳实践,为应对相关技术面试提供了全面的知识准备。
|
13天前
|
缓存 关系型数据库 MySQL
MySQL 索引优化以及慢查询优化
通过本文的介绍,希望您能够深入理解MySQL索引优化和慢查询优化的方法,并在实际应用中灵活运用这些技术,提升数据库的整体性能。
19 7
|
13天前
|
缓存 关系型数据库 MySQL
MySQL 索引优化与慢查询优化:原理与实践
通过本文的介绍,希望您能够深入理解MySQL索引优化与慢查询优化的原理和实践方法,并在实际项目中灵活运用这些技术,提升数据库的整体性能。
45 5
|
17天前
|
存储 关系型数据库 MySQL
Mysql索引:深入理解InnoDb聚集索引与MyisAm非聚集索引
通过本文的介绍,希望您能深入理解InnoDB聚集索引与MyISAM非聚集索引的概念、结构和应用场景,从而在实际工作中灵活运用这些知识,优化数据库性能。
83 7
|
2天前
|
存储 关系型数据库 MySQL
【MYSQL】 ——索引(B树B+树)、设计栈
索引的特点,使用场景,操作,底层结构,B树B+树,MYSQL设计栈
|
29天前
|
关系型数据库 MySQL 数据库
MySQL事务隔离级别及默认隔离级别的设置
在数据库系统中,事务隔离级别是一个关键的概念,它决定了事务在并发执行时如何相互隔离。MySQL提供了四种事务隔离级别,每种级别都解决了不同的并发问题。本文将详细介绍这些隔离级别以及MySQL的默认隔离级别。

热门文章

最新文章