首页 > 数据库 >mysql视图 触发器 事务 存储过程

mysql视图 触发器 事务 存储过程

时间:2024-03-06 11:23:39浏览次数:16  
标签:insert 触发器 name create 视图 t1 cursor mysql id

创建视图

create view emp2dep as select emp.*,dep.name as dep_name from emp inner join dep on emp.dep_id = dep.id;

 

 

 


mysql> update emp2dep set name="EGON" where id=1;
Query OK, 1 row affected (0.05 sec)
Rows matched: 1 Changed: 1 Warnings: 0
mysql> select * from emp2dep;
+----+-----------+--------+------+--------+--------------+
| id | name | sex | age | dep_id | dep_name |
+----+-----------+--------+------+--------+--------------+
| 1 | EGON | male | 18 | 200 | 技术 |
| 2 | alex | female | 48 | 201 | 人力资源 |
| 3 | wupeiqi | male | 38 | 201 | 人力资源 |
| 4 | yuanhao | female | 28 | 202 | 销售 |
| 5 | liwenzhou | male | 18 | 200 | 技术 |
+----+-----------+--------+------+--------+--------------+

 

mysql> select * from emp;

+----+------------+--------+------+--------+

| id | name | sex | age | dep_id |

+----+------------+--------+------+--------+

| 1 | EGON | male | 18 | 200 |

| 2 | alex | female | 48 | 201 |

| 3 | wupeiqi | male | 38 | 201 |

| 4 | yuanhao | female | 28 | 202 |

| 5 | liwenzhou | male | 18 | 200 |

| 6 | jingliyang | female | 18 | 204 |

| 7 | lili | female | 48 | NULL |

+----+------------+--------+------+--------+

7 rows in set (0.00 sec)

 

 

修改视图

alter view emp2dep as 查询语句;

删除视图

drop view emp2dep;

 

触发器  trigger

针对数据的增、删、改操作时前后的行为

增------>insert

create trigger tri_before_insert_t1 before insert on t1 for each row   #创建了一个触发器x,在忘这个表插入数据之前,针对每一行
begin
    sql语句;
end

create trigger tri_after_insert_t1 after insert on t1 for each row
begin
    sql语句;
end

 

删delete

create trigger tri_before_delete_t1 before delete on t1 for each row
begin
    sql语句;
end

create trigger tri_after_delete_t1 after delete on t1 for each row
begin
    sql语句;
end

修改update

insert into tt1 values(1,"egon",'male');

delimiter //   
create trigger tri_before_insert_tt1 before insert on tt1 for each row
begin
    insert into tt2 values(NEW.name);
end //

delimiter ;



insert into tt1 values(2,"tom",'female');

#在mysql中;是结束 ,这里我们除开最后一句都不是结束 所以使用

delimiter //  

别忘记在结束后改回来

delimiter ;

 

 

事务

处理一件事情,要么一起成功,要么一起失败

import pymysql
conn=pymysql.connect(host="127.0.0.1",post=3306, user="root", password="123", db="db13", charset="utf8mb4")
cursor=conn.cursor(cursor=pymysql.cursors.DictCursor)


try:
    cursor.execute(sql1)
    cursor.execute(sql2)
    cursor.execute(sql3)
    
    conn.commit()  #事务提交,真正提交到数据库内
  #print('事务处理成功',cursor,rowcount)#关闭连接
except Exception as e:
    conn.rollback() #事务回滚

cursor.close()
conn.close()
 

 

create table user1(
    id int primary key auto_increment,
    name varchar(10),
    balance int
);

insert into user1(name,balance) values
('qq',1000),
('zz',1000),
('ss',1000);

start transaction;
update user1 set balance=800 where id=1;
update user1 set balance=1100 where id=2;
update user1 set balance=1100 where id=3;


存储过程

 

程序与数据库结合使用的三种方式

复制代码 #方式一: MySQL:存储过程 程序:调用存储过程

#方式二: MySQL: 程序:纯SQL语句

#方式三: MySQL: 程序:类和对象,即ORM(本质还是纯SQL语句)

 

创建无参存储过程

delimiter $$
create procedure p1()
begin
    select * from emp;
end $$

delimiter ;


#在cmd-------mysql中执行: call p1();

 

 

创建有参存储过程

t1.py:

delimiter $$
create procedure p2(
in n int,  #in是输入
out res int  #out是出
)
begin
select * from emp where id > n;
set res=1;
end $$


delimiter ;





#在cmd-------mysql中执行:
先定义一个变量:
set @x=1111;
call p2(3,@x);







t2.py:
import pymysql
conn=pymysql.connect(host="127.0.0.1",post=3306, user="root", password="123", db="db13", charset="utf8mb4")
cursor=conn.cursor(cursor=pymysql.cursors.DictCursor)
cursor.callproc('p2',(3,0)) #@_p2_0=3,@_p2_1=0
cursor.execute("select @_p2_1;")
print(cursor.fetchall())
cursor.execute("select @_p2_0;")

print(cursor.fetchall())
cursor.close()
conn.close()
 

 

 

 

 

标签:insert,触发器,name,create,视图,t1,cursor,mysql,id
From: https://www.cnblogs.com/97zs/p/18054317

相关文章

  • MySQL 数据库巡检都有哪些内容
    一套正常运行的系统是一个复杂的系统工程,牵涉到主机、操作系统、网络、数据库、中间件、底层存储,还有系统的核心:应用。任何层面的故障都可能造成系统的不可用。今天聊一聊数据库层面的巡检问题。数据库巡检的目的:保障数据库的正常运行,保证数据的安全性,完整性、可靠性。这篇文章......
  • mysql报错代码汇总
    先给大家看几个实例的错误分析与解决方案。1.ERROR2002(HY000):Can'tconnecttolocalMySQLserverthroughsocket'/data/mysql/mysql.sock'问题分析:可能是数据库没有启动或者是端口被防火墙禁止。解决方法:启动数据库或者防火墙开放数据库监听端口。2.ERROR1045......
  • Windows 下 强制修改 MySQL的 root 账号密码
    更新记录点击查看2024年3月6日发布。2024年2月6日初始化。关闭MySQL服务netstopMySQLnetstopMySQL57netstopMySQL80netstop自定义的服务名启动MySQL但不带权限转到mysql/bin目录然后执行mysqld–console–skip-grant-tables–shared-memory如果遇到......
  • mysql undo log
    undolog数据库事务四大特性中有一个是原子性,具体来说就是原子性是指对数据库的一系列操作,要么全部成功,要么全部失败,不可能出现部分成功的情况。实际上,原子性底层就是通过undolog实现的。undolog主要记录了数据的逻辑变化,比如一条INSERT语句,对应一条DELETE的undolog,对于每个......
  • Mysql数据库安全和备份
    一、用户权限认证Mysql通过用户认证机制来和业务系统建立连接通道,当认证成功后,还需要通过访问控制模块来进行相关的权限验证,只有两次验证都通过后,才能继续执行SQL语句操作,这个过程涉及用户管理和访问控制两个模块。用户管理模块用于管理登录用户信息、设置相关权限,Mysql......
  • .NET6 + EF Core + MySQL 创建实体和数据库、EFCore 数据迁移、属性导航
    一、创建asp.netcoreweb(MVC)项目二、导包Microsoft.EntityFrameworkCore.DesignMicrosoft.EntifyFrameworkCore.ToolsPomelo.EntityFrameworkCore.MySql三、创建实例这里创建了两个实例namespacedemo.Models{publicclassSupplier{[DatabaseGe......
  • 《MySQL是怎样运行的:从根儿上理解 MySQL》PDF
    《MySQL是怎样运行的:从根儿上理解MySQL》采用诙谐幽默的表达方式,对MySQL的底层运行原理进行了介绍,内容涵盖了使用MySQL的同学在求职面试和工作中常见的一些核心概念。《MySQL是怎样运行的:从根儿上理解MySQL》总计22章,划分为4个部分。第1部分介绍了MySQL入门的一些知识,比如MySQ......
  • mysql报错:SQL 错误 [1030] [HY000]: Got error 100 - 'InnoDB error' from storage en
    在mysql中进行alter时,报错:SQL错误[1030][HY000]:Goterror100-'InnoDBerror'fromstorageengine 原因:在配置my.cnf或my.ini里面innodb_force_recovery参数的值大于0,它默认值为0,如果大于0,innodb就会禁用insert、update、delete、alter语句。解决方式:在配置my.cn......
  • K8S部署MySQL5.7主从集群
    参考https://blog.csdn.net/qq_43114229/article/details/124078914https://kubernetes.io/zh-cn/docs/tasks/run-application/run-replicated-stateful-application/MySQL主从同步架构图mysql-0是mastermysql-1和mysql-2是两个备份当mysql写的时候,找headlessservice中的m......
  • MySQL视图创建
    createorreplaceviewv_user_infoasselect'SCYB'as`医保注册编码`,t.hilist_codeas`医保编码`,t.hilist_nameas`医保名称`,t.pinyinas`拼音码`,t.chrgitm_lvas`收费项目等级`,nullas`收......