mysql创建存储过程

MySQL实战 | 01-当执行一条 select 语句时,MySQL 到底做了啥?

生来就可爱ヽ(ⅴ<●) 提交于 2020-02-25 11:42:07
原文链接: 当执行一条 select 语句时,MySQL 到底做了啥? 也许,你也跟我一样,在遇到数据库问题时,总时茫然失措,想重启解决问题,又怕导致数据丢失,更怕重启失败,影响业务。 就算重启成功了,对于问题的原因仍不知所以。 本文开始,记录学习《MySQL实战45讲》专栏的过程。 也许有人会问,你记录有什么意义?直接看专栏不就行了吗?你这不是啃别人的剩骨头吗? 是的,这个系列,我只是基于专栏学习,但是我会尽量从我的角度搞懂每一个知识点,遇到不懂得也会将知识点进行拆分。 我知道关注公众号的小伙伴也有很多购买了这个专栏的,我希望大家都能够利用好这个机会,把 MySQL 吃透! 看大家的反馈情况吧,若有需要,可以建个小群,大家互相讨论学习! 下面开始正文。 大家或多或少都用过 MySQL,起码 select 还是会用的吧,但是 select 执行后,MySQL 内部到底发生了什么,你知道吗? 比如,我们有个简单的表 T,它有个 ID 字段,那么我们可以执行下面的语句: mysql> select * from T where ID=10; 语句执行很简单,但是具体到 MySQL 内部,其实是一个完整的执行流程。 MySQL 的基本架构 从下图就可以清楚地看出 MySQL 的命令执行流程: 从该图可以看出,MySQL 主要分为 server 层和存储引擎层。 server

MySQL基础架构

回眸只為那壹抹淺笑 提交于 2020-02-25 11:41:00
前段时间订阅了《Mysql实战45讲》(从原理到实战),新的一年为自己充充电。对于这部分内容,我所知道的只来源于我大学里学习的课程《数据库原理》,在大学里学习的只是简单的查询,增加,删除,索引,锁,触发器,视图等内容。几乎没有基础的架构知识。因此在这里巩固一下原理,学习一下数据库Mysql在原理上究竟是怎样的。 首先我们一起看一个Mysql的基本架构示意图: 1、Mysql可以分为Server层和存储引擎层两部分。 2、Server层:包含连接器,查询缓存,分析器,优化器,执行器等,涵盖了MySQL的大多数核心功能区以及所有的内置函数。 ①内置函数:日期,时间,数学和加密函数等; ②所有跨存储引擎的功能都在这一层实现,例如存储过程,触发器,视图等; 3、存储引擎层:负责数据的存储和提取。 ①架构模式:插件式的,支持InnoDB(目前也是最常用的,MySQL5.5后默认存储引擎)、MyISAM、Memory等多个存储引擎。 ②create table 时不指定引擎类型,默认使用的就是InnoDB.如果使用其他类型,可以利用create table语句中使用engine=memory,等来指定使用内存引擎来创建表。不同的存储引擎数据存储方式不同,支持的功能也不同。 4、不同的存储引擎共用一个server层,结合一个例子我们从总体上了解一下各部件的功能。 mysql> select *

mysql 存储过程及事件

£可爱£侵袭症+ 提交于 2020-02-21 10:24:59
虽说现在不用这种,mysql本身已经很忙碌了,还要做这些操作不合适,但有时候别人的代码会写这些,所以记录下查找的、 查询数据库中的存储过程和函数 select `name` from mysql.proc where db = 'xx' and `type` = 'PROCEDURE' //存储过程 select `name` from mysql.proc where db = 'xx' and `type` = 'FUNCTION' //函数 show procedure status; //存储过程 show function status; //函数 查看存储过程或函数的创建代码   show create procedure proc_name;   show create function func_name; 查看视图   SELECT * from information_schema.VIEWS //视图   SELECT * from information_schema.TABLES //表 查看触发器   SHOW TRIGGERS [FROM db_name] [LIKE expr]   SELECT * FROM triggers T WHERE trigger_name=”mytrigger” \G 如果有存储过程,在代码里边找不到调用存储过程的函数。

mysql -批量插入数据脚本

被刻印的时光 ゝ 提交于 2020-02-21 03:25:57
建表: create table dept( id int unsigned primary key auto_increment, deptno mediumint unsigned not null default 0, dname varchar(20) not null default '', loc varchar(13) NOT null default '' ) engine=innodb default charset=GBK; create table emp ( id int unsigned primary key auto_increment, empno mediumint unsigned not null default 0, ename varchar(20) NOt null default '', job varchar(9) not null default '', mgr mediumint unsigned not null default 0, hiredate DATE not null , sal decimal(7,2) NOT null, comm decimal(7,2) not null, deptno mediumint unsigned not null default 0 )engine=innodb default

mysql命令行操作大全

為{幸葍}努か 提交于 2020-02-19 07:42:07
Mysql安装目录 数据库目录 /var/lib/mysql/ 配置文件 /usr/share/mysql(mysql.server命令及配置文件) 相关命令 /usr/bin(mysqladmin mysqldump等命令) 启动脚本 /etc/init.d/mysql(启动脚本文件mysql的目录) 系统管理 连接MySQL 格式: mysql -h 主机地址 -u用户名 -p用户密码 例 1:连接到本机上的 MySQL。 hadoop@ubuntu:~$ mysql -uroot -pmysql; 例 2:连接到远程主机上的 MYSQL。 hadoop@ubuntu:~$ mysql -h 127.0.0.1 -uroot -pmysql; 修改新密码 在终端输入:mysql -u用户名 -p密码,回车进入Mysql。 > use mysql; > update user set password=PASSWORD('新密码') where user='用户名'; > flush privileges; #更新权限 > quit; #退出 增加新用户 格式:grant select on 数据库.* to 用户名@登录主机 identified by '密码' 举例: 例 1:增加一个用户 test1 密码为 abc,让他可以在任何主机上登录,并对所有数据库有 查询、插入

MySQL创建存储过程(CREATE PROCEDURE)

﹥>﹥吖頭↗ 提交于 2020-02-18 05:30:35
MySQL 存储过程是一些 SQL 语句的集合,比如有的时候我们可能需要一大串的 SQL 语句,或者说在编写 SQL 语句的过程中还需要设置一些变量的值,这个时候我们就完全有必要编写一个存储过程。下面我们来介绍一下如何创建一个存储过程。 基本语法 可以使用 CREATE PROCEDURE 语句创建存储过程。 语法格式如下: CREATE PROCEDURE <过程名> ( [过程参数[,…] ] ) <过程体> [过程参数[,…] ] 格式 [ IN | OUT | INOUT ] <参数名> <类型> 语法说明如下: 1) 过程名 存储过程的名称,默认在当前数据库中创建。若需要在特定数据库中创建存储过程,则要在名称前面加上数据库的名称,即 db_name.sp_name。需要注意的是,名称应当尽量避免选取与 MySQL 内置函数相同的名称,否则会发生错误。 2) 过程参数 存储过程的参数列表。其中, <参数名> 为参数名, <类型> 为参数的类型(可以是任何有效的 MySQL 数据类型)。当有多个参数时,参数列表中彼此间用逗号分隔。存储过程可以没有参数(此时存储过程的名称后仍需加上一对括号),也可以有 1 个或多个参数。 MySQL 存储过程支持三种类型的参数,即输入参数、输出参数和输入/输出参数,分别用 IN、OUT 和 INOUT 三个关键字标识。其中

MySQL修改存储过程(ALTER PROCEDURE)

强颜欢笑 提交于 2020-02-18 03:52:27
在实际开发过程中,业务需求修改的情况时有发生,这样,不可避免的需要修改 MySQL 中存储过程的特征 。 基本语法 可以使用 ALTER PROCEDURE 语句修改存储过程的某些特征。 语法格式如下: ALTER PROCEDURE <过程名> [ <特征> … ] 提示:这个语法用于修改存储过程的某些特征,如要修改存储过程的内容,可以先删除该存储过程,再重新创建。 修改存储过程的内容和名称 修改存储过程的内容可以通过删除原存储过程,再以相同的命名创建新的存储过程。 修改存储过程的名称可以通过删除原存储过程,再以不同的命名创建新的存储过程。 来源: CSDN 作者: weixin_46301944 链接: https://blog.csdn.net/weixin_46301944/article/details/104355998

MySQL删除存储过程(DROP PROCEDURE)

丶灬走出姿态 提交于 2020-02-17 14:42:36
当 MySQL 数据库中存在废弃的存储过程是,我们需要将它从数据库中删除。 基本语法 存储过程被创建后,保存在数据库服务器上,直至被删除。可以使用 DROP PROCEDURE 语句删除数据库中已创建的存储过程。 语法格式如下: DROP { PROCEDURE | FUNCTION } [ IF EXISTS ] <过程名> 语法说明如下: 1) 过程名 指定要删除的存储过程的名称。 2) IF EXISTS 指定这个关键字,用于防止因删除不存在的存储过程而引发的错误。 注意:存储过程名称后面没有参数列表, 已经为大家精心准备了大数据的系统学习资料,从Linux-Hadoop-spark-......,需要的小伙伴可以点击 也没有括号,在删除之前,必须确认该存储过程没有任何依赖关系,否则会导致其他与之关联的存储过程无法运行。 删除存储过程 删除存储过程 GetScoreByStu,查看存储过程的运行结果如下所示。 mysql> DROP PROCEDURE GetScoreByStu; Query OK, 0 rows affected (0.00 sec) mysql> CALL GetScoreByStu('Green'); ERROR 1305 (42000): PROCEDURE test_db.GetScoreByStu does not exist 来源: CSDN

Mysql存储过程、触发器和事务

会有一股神秘感。 提交于 2020-02-17 14:31:47
一、存储过程 定义存储过程 语法: create procedure 过程名(参数1,参数2....) begin sql语句; end 创建存储过程之前我们必须修改mysql语句默认结束符; 要不能我们不能创建成功 , 使用 delimiter 可以修改执行符号。 mysql> delimiter % #这样结束符就为% mysql> create procedure selCg() -> begin -> select * from category; -> end % 调用存储过程 语法: call 过程名(参数1,参数2); mysql> call selCg() ; 存储过程参数类型 In 参数 特点:读取外部变量值,且有效范围仅限存储过程内部 例 1 : mysql> delimiter // mysql> create procedure pin(in p_in int) -> begin -> select p_in; -> set p_in=2; -> select p_in; -> end // mysql> delimiter ; #使用完马上恢复默认的 mysql> call pin(1); #调用pin存储过程 例 2 :定义存储过程 getOneBook,当输入某书籍 id 后,可以调出对应书籍记录 mysql> create procedure

Mysql数据库基础知识

给你一囗甜甜゛ 提交于 2020-02-14 05:30:22
什么是Mysql数据库 MySQL是一个关系型数据库管理系统,由瑞典MySQL AB 公司开发,目前属于 Oracle 旗下公司。MySQL 最流行的关系型数据库管理系统,在 WEB 应用方面MySQL是最好的 RDBMS (Relational Database Management System,关系数据库管理系统) 应用软件之一。 mysql是什么 mysql就是一个基于socket编写的C/S架构的软件 客户端软件 mysql自带:如mysql命令,mysqldump命令等 python模块:如pymysql View Code 数据库管理软件分类 分两大类:  关系型:如sqllite,db2,oracle,access,sql server,MySQL,注意:sql语句通用  非关系型:mongodb,redis,memcache 可以简单的理解为: 关系型数据库需要有表结构 非关系型数据库是key-value存储的,没有表结构 View Code Navicat软件 这个软件对MySQL特别友好,是一套适用于MySQL,SQLLite等多个数据库系统的图形化数据库管理,报告以及兼通的工具。 通过这个软件,我们可以演练创建/删除表,查询/删除/修改记录操作的SQL 什么是SQL? 什么是SQL? SQL(structured query language)