当前位置: 首页 > news >正文

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

书接上文,之前说了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性能提升的小细节

在这里插入图片描述

相关文章:

  • 网站开发软件开发项目/百度秒收录蜘蛛池
  • 网站的风格与布局的设计/免费网站代理访问
  • 建设企业网站e路护航官网企业端/广东疫情最新资讯
  • 网站建设icp备案/免费模板素材网站
  • Python爬取wordpress/google 官网入口
  • wordpress 公司网站 模板 下载/关键词排名优化方法
  • Cassandra入门教程
  • SpringCloud:SpringCloudGateway对Forwarded和X-Forwarded-*处理分析
  • Linux 命令(245)—— chage 命令
  • java基础学习 day35(StringJoiner的用法,String和这两个扩展的区别)
  • golang解决跨域问题
  • 2-Node.js 内置模块
  • 杭州到温州老家自驾路线优化与整理
  • 【Android安全】Google Hardware-backed Keystore | SafetyNet | 远程证明Remote Attestation
  • LeetCode 1825 求出MK平均值【Set 队列】 HERODING的LeetCode之路
  • day17集合
  • unocss原子化
  • SQL Server 全文索引的应用