MySql必知必会_引擎,PROCEDURE,事务处理

本文介绍了MySQL中的基本操作,包括INSERT插入数据,UPDATE更新数据,DELETE删除数据,以及CREATE创建表。还涉及了存储过程的概念,用于处理复杂的业务逻辑,以及事务处理的重要性,确保数据一致性。此外,提到了不同的数据库引擎如InnoDB和MyISAM的特性和选择,以及用户权限的分配。
摘要由CSDN通过智能技术生成

书接上文,之前说了Mysql的SELECT部分,本片文章会重点介绍关于MySql的其他一些知识,也会是MySql必知必会的最后一篇。

首先,是Mysql中的增删改操作,对于测试岗来说,这部分知识相对来说不是那么重要,我一次性把一些基础部分贴一下。

1.INSERT
INSERT into table(id,name,small_name,age,sex)
values(1,'aa','bb',NULL.NULL)      插入一整行数据
values(......)                     插入多行,多个values,只需要一个INSERT

INSERT INTO table(a,b,c)
SELECT  (a,b,c)
FROM table_01      将所选数据导入table表

2.UPDATE
UPDATE table
SET  name='aa',age=24
WHERE id ='1';

3.DELETE
DELETE FROM table
WHERE id =1;

4.CREATE
CREATE TABLE table_name(
id         int            NOT NULL  AUTO_INCREMENT,   代表本列每新增一行,自动增加1
name  char(10)   NOT NULL ,     char是定长,varchar是不定长
sex     char(4)    NOT NULL,
PRIMARY KEY (id)  主键值必须唯一,如果使用多个列,则这些列的组合必须唯一
)
ENGINE = XXX引擎;
如果id不设置AUTO_INCREMENT的话,那就是用SLEECT COUNT然后再加以,这样浪费时间和资源。
同时,若有多个用户同时对表进行增加操作可能会出问题。

5.修改表
ALTER TABLE table_01          ALTER TABLE常用来定义外键
ADD name VARCHAR(50)
FOREIGN KEY (aaa) REFERENCE  xxx(aaa)
一个表创建好之后最好轻易不要改动,除非增加外键

6.删除/重命名   表
DROP  TABLE aaa;
RENAME TABLE aaa to bbb;

引擎

使用CREATE的时候,调用引擎创建表,在执行SELECT等操作时,该引擎会帮忙处理请求
不同的引擎有不同的特性

三种引擎:
InnoDB 可靠事务处理引擎,不支持全文本搜索 (事务处理:成批量的操作删除等等)
MEMORY 数据存在内存里,速度快,适用于临时表
MyISAM 性能高,支持全文本搜索,不支持事务处理

存储过程(PROCEDURE)

很多时候,实际中的处理过程,一条SQL语句完全无法满足要求,比如一个订单,要能正确处理,首先要保证库存中有货,其次有货的话要预定,确保这个物品不会重复售卖,订单成功后商品数量要减少,库存中没有物品要及时订货。
以上的情况是需要多条SQL语句来完成整个步骤的。多条SQL语句的组合,这就是存储过程。
存储过程一半是要比一条一条的执行其中的每条sql语句更快的。
创建存储过程:
CREATE  PROCEDURE aa   创建一个叫aa的存储过程
BEGIN
SELECT  **
WHERE ...;
END;
调用存储过程:
CALL aa();          调用存储过程aa
删除存储过程:
DROP PROCEDURE aa;

存储过程也可以传参:
在这里插入图片描述

游标

在 MySQL 中,存储过程或函数中的查询有时会返回多条记录,而使用简单的 SELECT 语句,没有办法得到第一行、下一行或前十行的数据,这时可以使用游标来逐条读取查询结果集中的记录。游标在部分资料中也被称为光标。

CREATE PROCEDURE aa()
BEGIN
DECLARE ordernum CURSOR
FOR                    为下面的SELECT定义一个游标,游标是被该SELECT检索出来的结果集
SELECT....
END;

OPEN/CLOSE  ordernum;         //打开,关闭游标

触发器

触发器是响应INSERT/DELETE/UPDATE后而自动触发的一条SQL语句,可以与PROCEDURE结合在一起
CREATE TRIGGER XXX AFTER/BEFORE INSERT ON product
FOR EACH ROW SELECT…   每一行都要执行操作

触发器不能更新或者覆盖,要更新,必须删了重新创建
DROP TRIGGER

事务处理

事务处理是一种机制。用来管理必须成批执行的SQL操作,确保不会在所有的操作执行完成前有中断操作。若整组sql无问题那就执行到底,若中间出错则会执行相应的回退。
前面说过两个引擎,MYISAM不支持事务处理,InnoDB支持

START TRANSACTION
SELECT...
DELETE..
UPDATE..
ROLLBACK;                      回退START到ROLLBACK之间的所有语句

可以把ROLLBACK换成COMMIT,如果语句都执行成功,COMMIT不生效,如果中间有句子执行报错,ROLLBACK会自动执行回滚功能

用户权限分配

CREATE USER shaoqiang;
GRANT SELECT ON database_aa TO shaoqiang;   给用户database_aa下所有表的查询权限
SHOW GRANTS FOR shaoqiang;            查询权限
REVOKE SELECT ON database_aa TO shaoqiang;     撤销权限

一些关于MySql性能提升的小细节

在这里插入图片描述

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

LSQ的测试日记

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值