mysql创建存储过程

MYSQL 数据库基本操作

心已入冬 提交于 2020-02-26 22:18:17
插入数据 在建立一个空的数据库和数据表时,首先需要考虑的是如何向数据表中添加数据,该操作可以使用INSERT语句来完成。使用INSERT语句可以向一个已有数据表插一个新行,也就插入一行新记录。 在MySQL中,INSERT语句有3种语法格式,分别是INSERT... VALUES语句、INSERT... SET语句和INSERT... SELECT语句。 使用INSERT... VALUES语句插入数据 使用INSERT... VALUES语句插入数据,是INSERT语句的最常用的语法格式。 语法格式如下: INSERT [LOW_PRIORITY | DELAYED | HIGH_PRIORITY] [IGNORE] [INTO] 数据表名 [(字段名,...)] VALUES ({值 | DEFAULT},...),(...),... [ ON DUPLICATE KEY UPDATE 字段名=表达式, ... ] 例子: create database test; #创建库 use test; #进入库 create table info (id int not null,name char(16),score decimal(5,2),age int(8)); #创建表 插入测试数据 insert into info (id,name,score,age)values(1,

MYSQL 数据库基本操作

二次信任 提交于 2020-02-26 18:05:54
插入数据 在建立一个空的数据库和数据表时,首先需要考虑的是如何向数据表中添加数据,该操作可以使用INSERT语句来完成。使用INSERT语句可以向一个已有数据表插一个新行,也就插入一行新记录。 在MySQL中,INSERT语句有3种语法格式,分别是INSERT... VALUES语句、INSERT... SET语句和INSERT... SELECT语句。 使用INSERT... VALUES语句插入数据 使用INSERT... VALUES语句插入数据,是INSERT语句的最常用的语法格式。 语法格式如下: INSERT [LOW_PRIORITY | DELAYED | HIGH_PRIORITY] [IGNORE] [INTO] 数据表名 [(字段名,...)] VALUES ({值 | DEFAULT},...),(...),... [ ON DUPLICATE KEY UPDATE 字段名=表达式, ... ] 例子: create database test; #创建库 use test; #进入库 create table info (id int not null,name char(16),score decimal(5,2),age int(8)); #创建表 插入测试数据 insert into info (id,name,score,age)values(1,

MySQL-流程控制结构

北战南征 提交于 2020-02-26 11:57:48
流程控制结构 顺序结构 :程序从上往下依次执行 分支结构 :程序从两条或多条路径中选择一条去执行 循环结构 :程序在满足一定条件的基础桑,重复执行一段代码 分支结构 1、if函数 功能:实现简单的双分支 语法: if(表达式1,表达式2,表达式3) 执行顺序: 如果表达式1成立,则if函数就返回表达式2的值,否则返回表达式3的值 应用场景:任何地方 2、case结构 1 情况一、类似于Java中的switch语句,一般用于实现等值判断 2 语法: 3 case 变量|表达式|字段 4 when 要判断的值1 then 返回的值1或语句1; 5 when 要判断的值2 then 返回的值2或语句2; 6 ... 7 else 要返回的值n或语句n; 8 END case; 9 情况二、类似于Java中的多重if语句,一般用于实现区间的判断 10 语法: 11 case 12 when 要判断的条件1 then 返回值1或语句1; 13 when 要判断的条件2 then 返回值2或语句2; 14 ... 15 else 要返回的值n或语句n; 16 end case; 17 18 特点: 19 (1) 20 可以作为表达式,嵌套在其他语句中使用,可以放在任何地方,begin end中或begin end的外边 21 可以作为独立的语句去使用,只能放在begin end中 22 (2)

mysql 执行流程解析

不问归期 提交于 2020-02-26 07:44:55
MySQL 可以分为 Server 层和存储引擎层两部分 Server 层包括连接器、查询缓存、分析器、优化器、执行器等,涵盖 MySQL 的大多数核 心服务功能,以及所有的内置函数,所有跨存储引 擎的功能都在这一层实现,比如存储过程、触发器、视图等 而存储引擎层负责数据的存储和提取。其架构模式是插件式的,支持 InnoDB、 MyISAM、Memory 等多个存储引擎。现在最常用的存储引擎是 InnoDB 我们来看一下sql的执行流程 连接器 第一步,你会先连接到这个数据库上,这时候接待你的就是连接器。连接器负责跟客户端 建立连接、获取权限、维持和管理连接 连接完成后,如果你没有后续的动作,这个连接就处于空闲状态,你可以在 show processlist 命令中看到它 客户端如果太长时间没动静,连接器就会自动将它断开。这个时间是由参数 wait_timeout 控制的,默认值是 8 小时 建立连接的过程通常是比较复杂的,所以在使用中要尽量减少建立连接的动作,也就是尽量使用长连接 但是全部使用长连接后,你可能会发现,有些时候 MySQL 占用内存涨得特别快,这是因 为 MySQL 在执行过程中临时使用的内存是管理在连接对象里面的。这些资源会在连接断 开的时候才释放 怎么解决这个问题呢?你可以考虑以下两种方案。 定期断开长连接。使用一段时间

MySQL常用语法

孤街醉人 提交于 2020-02-26 03:33:02
零、用户管理:   1、新建用户:     >CREATE USER name IDENTIFIED BY 'ssapdrow';   2、更改密码:     >SET PASSWORD FOR name=PASSWORD('fdddfd');   3、权限管理     >SHOW GRANTS FOR name; //查看name用户权限     >GRANT SELECT ON db_name.* TO name;    //给name用户db_name数据库的所有权限     >REVOKE SELECT ON db_name.* TO name;    //GRANT的反操作,去除权限; 一、数据库操作:    1、查看数据库:     >SHOW DATABASES;   2、创建数据库:     >CREATE DATABASE db_name;  //db_name为数据库名   3、使用数据库:     >USE db_name;   4、删除数据库:     >DROP DATABASE db_name; 二、创建表:   1、创建表:     >CREATE TABLE table_name(     >id TINYINT UNSIGNED NOT NULL AUTO_INCREMENT,    //id值,无符号、非空、递增——唯一性,可做主键。     

MySQL数据库sql语句

一世执手 提交于 2020-02-26 03:32:48
零、用户管理:   1、新建用户:     >CREATE USER name IDENTIFIED BY 'ssapdrow';   2、更改密码:     >SET PASSWORD FOR name=PASSWORD('fdddfd');   3、权限管理     >SHOW GRANTS FOR name; //查看name用户权限     >GRANT SELECT ON db_name.* TO name;    //给name用户db_name数据库的所有权限     >REVOKE SELECT ON db_name.* TO name;    //GRANT的反操作,去除权限; 一、数据库操作:    1、查看数据库:     >SHOW DATABASES;   2、创建数据库:     >CREATE DATABASE db_name;  //db_name为数据库名   3、使用数据库:     >USE db_name;   4、删除数据库:     >DROP DATABASE db_name; 二、创建表:   1、创建表:     >CREATE TABLE table_name(     >id TINYINT UNSIGNED NOT NULL AUTO_INCREMENT,    //id值,无符号、非空、递增——唯一性,可做主键。     

# IT明星不是梦 # MySQL高可用集群之MMM

▼魔方 西西 提交于 2020-02-26 01:21:32
MySQL高可用集群之MMM 一、MMM简介 MMM即Multi-Master Replication Manager for MySQL(mysql多主复制管理器) ,基于perl实现,关于mysql主主复制配置的监控、故障转移和管理的一套可伸缩的脚本套件(在任何时候只有一个节点可以被写入),MMM也能对从服务器进行读负载均衡,所以可以用它来在一组用于复制的服务器启动虚拟IP,除此之外,它还有实现数据备份、节点之间重新同步功能的脚本。MySQL本身没有提供replication failover的解决方案,通过MMM方案能实现服务器的故障转移,从而实现mysql的高可用。MMM不仅能提供浮动IP的功能,如果当前的主服务器挂掉后,会将你后端的从服务器自动转向新的主服务器进行同步复制,不用手工更改同步配置。这个方案是目前比较成熟的解决方案。详情请看官网: http://mysql-mmm.org 优点: 高可用性,扩展性好,出现故障自动切换。 对于主主同步,在同一时间只提供一台数据库写操作,保证的数据的一致性。 当主服务器挂掉以后,另一个主立即接管,其他的从服务器能自动切换,不用人工干预。 缺点: monitor节点是单点,不过这个也可以结合keepalived或者haertbeat做成高可用; 至少三个节点,对主机的数量有要求,需要实现读写分离,还需要在前端编写读写分离程序。

Mysql存储过程

℡╲_俬逩灬. 提交于 2020-02-26 01:06:59
一、什么是mysql存储过程? 是在数据库系统中,一组为了完成特定功能SQL语句集,经编译后存储在数据库中,用户通过制定存储过程的名字并给出参数(如果该存储过程带有参数)来执行它。 存储过程是经过编译的SQL语句集。编译后节省很多性能。 二、为什么使用存储过程? 1、存储过程只在创造时进行编译,以后每次执行存储过程都不需要再重新编译,而一般SQL语句每执行一次就编译一次,所以存储过程可以提高数据库执行速度 2、当对数据库进行复杂操作时(如对多个表进行UPDATE,INSERT,QUERY,DELETE时),可将此复杂操作用存储过程封装起来与数据库提供的事务处理结合一起使用,这些操作如果用程序来完成,就变成一条条的SQL语句,可能要多次链接数据库,而换成存储过程,只需要链接一次数据库就可以了 3、存储过程可以重复使用,可以减少数据库开发人员的工作量 4、安全性高,可设定只有某些用户才具有对指定存储过程的使用权 三、存储过程的缺点 1、可移植性差 2、对于简单的SQL语句,存储过程没什么优势 3、存储过程中不一定会减少网络传输 4、如果一个用户使用数据库,那么存储过程对安全也没什么影响 5、团队开发时需要统一标准,否则后期维护起来麻烦 6、在大并发访问量的情况下,不宜写过多涉及运算的存储过程 7、业务逻辑复杂时,特别是涉及到对很大的表进行操作的时候,不如在前端先简化业务逻辑 四

MySQL--存储过程练习题

ⅰ亾dé卋堺 提交于 2020-02-25 21:06:34
1 练习题: 2 一、创建存储过程实现传入用户名和密码,插入到admin表中 3 delimiter $ 4 create PROCEDURE test_pro(in username VARCHAR(20),in loginpwd VARCHAR(20)) 5 begin 6 insert into admin(admin.username,password) VALUES(username,loginpwd); 7 #end; @ 这种写法也是可以的 8 end $ 9 10 二、创建存储过程实现传入女神的编号,返回女神的名称和女神的电话 11 create PROCEDURE test_pro2(in id int,out name VARCHAR(20),out phone VARCHAR(20)) 12 begin 13 select b.name,b.phone into name,phone from beauty b where b.id=id; 14 end $ 15 16 三、创建存储过程实现传入两个女神的生日,返回大小, 17 现在我们做的效果是,如果比较两个生日之间相差的天数,如果是整数,表示的是大于,反之表示的小于 18 create PROCEDURE test_pro3(in birth1 datetime,in birth2 datetime,out

sql执行过程

拈花ヽ惹草 提交于 2020-02-25 11:42:51
作为一个程序员,几乎所有人都使用过 SQL 语言,无论是在命令行执行、程序调用,还是在 SQL 工具里,你都做过这样的事:写一个规范的 SQL 语句,然后等待数据库返回的结果,然后再基于结果做各种逻辑处理。但是,你知道这条 SQL 语句是咋执行的吗?我打赌你并不是很清楚,读完全文,你会有完全不同的感受。 我们经常说,看一个事儿千万不要直接陷入细节里,你应该先鸟瞰其全貌,这样能够帮助你从高维度理解问题。同样,对于 MySQL 的学习也是这样。平时我们使用数据库,看到的通常都是一个整体。比如,你有个最简单的表,表里只有一个 ID 字段,在执行下面这个查询语句时: mysql> select * from T where ID=10; 我们看到的只是输入一条语句,返回一个结果,却不知道这条语句在 MySQL 内部的执行过程。 今天我们就把 MySQL 拆解一下,看看里面都有哪些“零件”,希望借由这个拆解过程,让你对 MySQL 有更深入的理解。这样当我们碰到 MySQL 的一些异常或者问题时,就能够直击本质,更为快速地定位并解决问题。 下面我给出的是MySQL的基本架构示意图,从中你可以清楚地看到SQL语句在MySQL的各个功能模块中的执行过程。 MySQL的逻辑架构图 大体来说,MySQL 可以分为 Server 层和存储引擎层两部分。 Server层包括连接器、查询缓存、分析器