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

MySQL进阶二

补充触发器知识

# 删除触发器代码
drop trigger 触发器名;# 当一个学员发生转班,班级对应的总数进行同步变化# 当一个学员发生转班,班级对应的总数进行同步变化delimiter !!create trigger movestudent after update on stu1 for each ROWBEGIN#定义两个变量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.1host="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()

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/13003.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

力扣HOT100 - 152. 乘积最大子数组

解题思路&#xff1a; 方法一&#xff1a;暴力 class Solution {public int maxProduct(int[] nums) {int max Integer.MIN_VALUE;int s 1;for (int i 0; i < nums.length; i) {s 1;for (int j i ; j < nums.length; j) {s * nums[j];max Math.max(max, s);}}ret…

出国旅游常用英语,柯桥成人英语培训

Where can I catch a taxi?哪里我可以叫到出租车&#xff1f; The taxi zone is right on the left corner over there.出租车站台就在左边转角处。 Are you free?您有空吗&#xff1f; Sure. Where are you going?当然。您要去哪里&#xff1f; Drive me back to Santa …

手工创建 kamailio database tables

有些场景可能kamdbctl create不好使&#xff0c;可能需要手工创建 kamailio database tables&#xff0c;可参考下面的命令序列&#xff1a; USE mysql # 删除之前创建的用户 SELECT user,host FROM user; DROP USER kamailio%; FLUSH PRIVILEGES; # 删除之前创建的数据库 DROP…

#Docker | Ngrok# 使用Ngrok和Docker进行内网穿透

一、注册 Ngrok官网注册&#xff0c;可以使用gmail或者outlook邮箱&#xff0c; 正常填写后你会收到一封电子邮件&#xff0c;点击邮件中链接即注册成功 二、获取密钥 登录&#xff0c;点击Your Authtoken&#xff0c;最上面copy左边就是你得密钥 三、使用内网穿透启动docker…

c++20---std::erase----std::erase_if

问题&#xff1a;如何删除满足条件的所有元素。 erase #include <iostream> #include <algorithm> #include <vector>int main(){std::vector<int> vec{1,2,3,1,1,1,1,1};std::erase(vec,1);for(int v:vec) std::cout<<v<<" "…

与禹老师学前端vue3学习汇总

24.5.15&#xff1a; 创建Vue3工程 1.确定自己电脑有没有nodejs环境&#xff0c;在cmd中输入node&#xff0c;如果出现Node.js的版本号说明已经有这个环境了&#xff0c;否则搜索Node.js安装 2.先在D盘创建一个文件夹Vue3_Study&#xff0c;然后在这个空文件夹中右键选择终端…

IPv6监测指标有哪些?如何才算真正完成IPv6的升级改造?

我国始终高度重视IPv6的发展建设&#xff0c;将IPv6视作未来互联网发展的方向之一&#xff0c;自2017年《推进互联网协议第六版&#xff08;IPv6&#xff09;规模部署行动计划》印发以来&#xff0c;又多次发布IPv6相关的政策法规&#xff0c;以推进IPv6的规模化部署。在政策引…

首次曝光!我喂了半年主食冻干,喵状态真滴顶~

科学养猫理念的推广&#xff0c;使得主食冻干喂养越来越受到养猫者的欢迎。主食冻干不仅符合猫咪的自然饮食习惯&#xff0c;还能提供丰富的营养&#xff0c;有助于保持猫咪的口腔和消化系统健康。我家喂了半年主食冻干&#xff0c;猫咪的状态是真的不一样了&#xff01; 然而…

五丰黎红引领新营销模式:布局一物一码数字化营销,提高调味品销量和复购率

调味品行业的销售渠道主要有餐饮、家庭消费和食品加工&#xff0c;按销售额的占比约为6&#xff1a;3&#xff1a;1&#xff0c;餐饮行业是调味品行业的供需主力。在餐饮行业中&#xff0c;“大厨”这一角色具有十分重要的地位。因此&#xff0c;借助大厨的力量成为了许多调味品…

TDL - field

hotline Desktop help TS M&O 1)to release app on Linux by commands, etc test development inventor

科林算法_4 基础算法

一、排序 void swap(vector<int>& a, int x, int y) {if (x y)return;a[x] a[x] ^ a[y];a[y] a[x] ^ a[y];a[x] a[x] ^ a[y]; } 1.1 冒泡排序BubbleSort 核心思想&#xff1a;相邻的两个元素进行大小比较&#xff0c;若前者比后者大&#xff0c;则进行交换 每…

回文数[简单]

优质博文&#xff1a;IT-BLOG-CN 一、题目 给你一个整数x&#xff0c;如果x是一个回文整数&#xff0c;返回true&#xff1b;否则返回false。回文数是指正序&#xff08;从左向右&#xff09;和倒序&#xff08;从右向左&#xff09;读都是一样的整数。例如&#xff0c;121是…

时间字符串处理 moment.js

文章来自我的blog moment.js 简介 Moment.js 是一个开源的JavaScript库&#xff0c;专为简化日期和时间的处理而设计。它提供了一套丰富的API&#xff0c;允许开发者轻松地解析、验证、操作、格式化日期和时间。自从2011年发布以来&#xff0c;Moment.js 因其易用性、灵活性和…

@Transactional(rollbackFor = Exception.class)注解放到private修饰的类上报错

背景 有两个方法中&#xff0c;更新数部分是相同的&#xff0c;打算把这一部分那重来&#xff0c;做一个公用的私有方法。 考虑数据一致性&#xff0c;原本每个方法都使用了Transactional(rollbackFor Exception.class)注解&#xff0c;保证失败回滚&#xff0c;创建私有方法…

vj题单 激光炸弹 二维前缀和

题目链接&#xff1a;P2280 [HNOI2003] 激光炸弹 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn) 笔者答案&#xff1a; #include<stdio.h> int s[5005][5005]; int main () {int n,m;scanf("%d %d",&n,&m);int i,j;int x,y,v;int max;for(i 1;i &l…

洛谷P1364 医院设置

P1364 医院设置 题目描述 设有一棵二叉树&#xff0c;如图&#xff1a; 其中&#xff0c;圈中的数字表示结点中居民的人口。圈边上数字表示结点编号&#xff0c;现在要求在某个结点上建立一个医院&#xff0c;使所有居民所走的路程之和为最小&#xff0c;同时约定&#xff0c…

单元测试—BMI脚本设计

BMI例题如下&#xff1a; BMI中国计算标准&#xff1a;体质指数&#xff08;BMI&#xff09;体重&#xff08;kg&#xff09;身高^2&#xff08;m&#xff09; 例如&#xff1a;一个人的身高为1.75米,体重为68千克&#xff0c;他的BMI68/(1.75^2)22.2&#xff08;千克/米^2&a…

每日5题Day3 - LeetCode 11 - 15

每一步向前都是向自己的梦想更近一步&#xff0c;坚持不懈&#xff0c;勇往直前&#xff01; 第一题&#xff1a;11. 盛最多水的容器 - 力扣&#xff08;LeetCode&#xff09; class Solution {public int maxArea(int[] height) {//这道题比较特殊&#xff0c;因为两边是任意…

04、SpringBoot 源码分析 - SpringApplication启动流程四

SpringBoot 源码分析 - SpringApplication启动流程四 初始化基本流程SimpleApplicationEventMulticaster的multicastEvent广播事件resolveDefaultEventType获取ResolvableType实例ResolvableType的forInstance创建ResolvableType实例 开始广播AbstractApplicationEventMulticas…

脉冲水路清洗机,全自动脉冲技术清除管道堵塞

邦注脉冲水路清洗机是一种高效的清洗设备&#xff0c;它利用全自动脉冲技术来清除管道内的堵塞和污垢。以下是对该设备的一些详细描述&#xff1a; 全自动脉冲技术&#xff1a;脉冲水路清洗机采用了全自动脉冲技术&#xff0c;这是一种先进的清洗方法。该技术通过产生高强度的…