MySQL主键、存储过程、视图、事务

事务

MySQL 事务主要用于处理操作量大,复杂度高的数据。简单来讲,就是把一堆的数据库操作(增删改查)组合成一个操作,这个操作要么成功,要么失败,如果成功,那么结果 就被更新到数据库中,如果失败,那就回滚,好像从来没有对数据进行操作过一样。
  • 在 MySQL 中只有使用了 Innodb 数据库引擎的数据库或表才支持事务。

  • 事务处理可以用来维护数据库的完整性,保证成批的 SQL 语句要么全部执行,要么全部不执行。

  • 事务用来管理 insert,update,delete 语句

    事务的四大特性(ACID)

  • 原子性(Atomicity):事务中所有操作是不可再分割的原子单位。事务中所有操作要么全部执行成功,要么全部执行失败。

  • 一致性(Consistency):事务执行后,数据库状态与其它业务规则保持一致。如转账业务,无论事务执行成功与否,参与转账的两个账号余额之和应该是不变的。

  • 隔离性(Isolation):隔离性是指在并发操作中,不同事务之间应该隔离开来,使每个并发中的事务不会相互干扰。

  • 持久性(Durability):一旦事务提交成功,事务中所有的数据操作都必须被持久化到数据库中,即使提交事务后,数据库马上崩溃,在数据库重启时,也必须能保证通过某种机制恢复数据。

主键

数据库主键,指的是一个列或多列的组合,其值能唯一地标识表中的每一行。主键主要是用于其他表的外键关联,以及对表记录的修改与删除。

主键的作用:
1)保证实体的完整性;
2)以及加快数据库的操作速度
3)另外在表中添加新记录时,DBMS会自动检查新记录的主键值,不允许该值与其他记录的主键值重复。
4) DBMS自动按主键值的顺序显示表中的记录。如果没有定义主键,则按输入记录的顺序显示表中的记录。

视图

视图:是从一个或多个表导出的虚拟的表,其内容由查询定义。具有普通表的结构,但是不实现数据存储。

在对视图的修改中
①单表视图一般用于查询和修改,会改变基本表的数据,
②多表视图一般用于查询,不会改变基本表的数据。
视图的作用:
①简化了操作,把经常使用的数据定义为视图。
②安全性,用户只能查询和修改能看到的数据。
③逻辑上的独立性,屏蔽了真实表的结构带来的影响。
视图的缺点:
①性能差
数据库必须把视图查询转化成对基本表的查询,如果这个视图是由一个复杂的多表查询所定义,那么,即使是视图的一个简单查询,数据库也要把它变成一个复杂的结合体,需要花费一定的时间。
②修改限制
当用户试图修改视图的某些信息时,数据库必须把它转化为对基本表的某些信息的修改,对于简单的视图来说,这是很方便的,但是,对于比较复杂的试图,可能是不可修改的。

存储过程

存储过程是在大型数据库系统中,一组为了完成特定功能的SQL 语句,存储在数据库中,经过第一次编译后调用不需要再次编译,用户通过指定存储过程的名字并给出参数(如果该存储过程带有参数)来执行它。存储过程是数据库中的一个重要对象。

存储引擎的种类
①系统存储过程
以sp_开头,用来进行系统的各项设定.取得信息.相关管理工作。
②本地存储过程
用户创建的存储过程是由用户创建并完成某一特定功能的存储过程,事实上一般所说的存储过程就是指本地存储过程。
③临时存储过程
分为两种存储过程:

扫描二维码关注公众号,回复: 4537975 查看本文章
  • 本地临时存储过程,以井字号(#)作为其名称的第一个字符,则该存储过程将成为一个存放在tempdb数据库中的本地临时存储过程,且只有创建它的用户才能执行它;
  • 全局临时存储过程,以两个井字号(##)号开始,则该存储过程将成为一个存储在tempdb数据库中的全局临时存储过程,全局临时存储过程一旦创建,以后连接到服务器的任意用户都可以执行它,而且不需要特定的权限。

④远程存储过程
在SQL Server2005中,远程存储过程(Remote Stored Procedures)是位于远程服务器上的存储过程,通常可以使用分布式查询和EXECUTE命令执行一个远程存储过程。
⑤扩展存储过程
扩展存储过程(Extended Stored Procedures)是用户可以使用外部程序语言编写的存储过程,而且扩展存储过程的名称通常以xp_开头。

存储过程的优点:
①存储过程的能力大大增强了SQL语言的功能和灵活性。
②可保证数据的安全性和完整性。
③通过存储过程可以使没有权限的用户在控制之下间接地存取数据库,从而保证数据的安全。
④通过存储过程可以使相关的动作在一起发生,从而可以维护数据库的完整性。
⑤在运行存储过程前,数据库已对其进行了语法和句法分析,并给出了优化执行方案。这种已经编译好的过程可极大地改善SQL语句的性能。
⑥可以降低网络的通信量。
⑦使体现企业规则的运算程序放入数据库服务器中,以便 集中控制。

基本语法:

  1. 创建存储过程
create procedure sp_name
@[参数名] [类型],@[参数名] [类型]
as
begin
.........
end
以上格式还可以简写成:
create proc sp_name
@[参数名] [类型],@[参数名] [类型]
as
begin
.........
end
/*注:“sp_name”为需要创建的存储过程的名字,该名字不可以以阿拉伯数字开头*/

调用存储过程
基本语法:exec sp_name [参数名]
删除存储过程
基本语法:drop procedure sp_name
注意事项:不能在一个存储过程中删除另一个存储过程,只能调用另一个存储过程
其他常用命令

1.show procedure status
显示数据库中所有存储的存储过程基本信息,包括所属数据库,存储过程名称,创建时间等
2.show create procedure sp_name
显示某一个mysql存储过程的详细信息
3、exec sp_helptext sp_name
显示你这个sp_name这个对象创建文本

猜你喜欢

转载自blog.csdn.net/weixin_42522050/article/details/84570036