mysql创建存储过程

PostgreSQL与MySQL对比

强颜欢笑 提交于 2020-03-06 11:59:32
都属于开放源码的一员,性能和功能都在高速地提高和增强。MySQL AB的人们和PostgreSQL的开发者们都在尽可能地把各自的数据库改得越来越好,所以对于任何商业数据库使用其中的任何一个都不能算是错误的选择。 PostgreSQL : 免费 原则: 对于一个数据库,稳定性和速度并不能代表一切。对于一个成熟的数据库,稳定性肯定会日益提供。而随着硬件性能的飞速提高,速度也不再是什么太大的问题。 1 架构对比 MySQL: 多线程 PostgreSQL: 多进程 多线程架构和多进程架构之间没有绝对的好坏,例如oracle在unix上是多进程架构,在windows上是多线程架构。 PG 的有多种集群架构可以选择,plproxy 可以支持语句级的镜像或分片,slony 可以进行字段级的同步设置,standby 可以构建WAL文件级或流式的读写分离集群,同步频率和集群策略调整方便,操作非常简单。 pgsql对于numa架构的支持比mysql强一些,比MYSQL对于读的性能更好一些,pgsql提交可以完全异步,而mysql的内存表不够实用(因为表锁的原因) 2 对存储过程[1]及事务的支持能力 1) MySQL对于无事务的MyISAM表,采用表锁定,一个长时间运行的查询很可能会长时间地阻碍对表的更新,而PostgreSQL不存在这样的问题。 2) PostgreSQL支持存储过程

mysql-存储过程

假如想象 提交于 2020-03-03 06:39:32
存储过程和函数 含义:一组预先编译好的SQL语句集合 好处: 1、提高代码的重用性 2、简化操作 2、减少编译次数和与数据库服务器得到连接次数,提高效率 一、创建语法 CREATE PROCEDURE 存储过程名称(参数列表) BEGIN 存储过程体(一组合法的SQL语句) END 注意: 1、参数列表包含三部分 参数模式 参数名 参数类型 例如:IN stuname VARCHAR(20) 参数模式 : IN:所修饰参数可作为输入,也就是该参数需要调用方传入 OUT:所修饰参数作为输出,也就是该参数可作为返回值 INOUT:所修饰参数既可以作为输入又可以作为输出,也就是需要传入值,有可以返回 2、如果存储过程体仅仅只有一句话,BEGIN END 可以省略 -存储过程体中的每条SQL语句结尾必须加分号 -存储过程的结尾可以使用DELIMITER重新设置 语法:DELIMITER 结束标记 -如:DELIMITER $ 二、调用语法 CALL 存储过程名(实参列表); USE girls; 示例: # 1、【空参列表】案例:插入到admin表中五条记录 以下语句在CMD中执行 SELECT * FROM admin ; DELIMITER $ CREATE PROCEDURE myp1 ( ) BEGIN INSERT INTO admin ( username , PASSWORD

SKIP-NAME-RESOLVE ——错误的使用时机造成用户权限

ぐ巨炮叔叔 提交于 2020-03-02 19:28:45
以下内容是网上找的,问题解决的关键是将mysql配置文件中的“ skip-name-resolve ”注释掉,重启mysql,接着就好了! 新加的一台服务器,连接内网中的一台mysql服务器的时候,经常出现超时。 登陆到mysql,查看进程的信息 show processlist; 发现大量的进程的状态为 login 原来默认的时候mysql启动时是不使用 skip-name-resolve选项的,这样的话,从其它主机的连接会比较慢,因为mysql会对这个ip做dns反向查询,导致大量的连接处于 login状态..... 解决这个问题有两个办法 一是加入 skip-name-resolve参数重启mysql 二是在 /etc/hosts中加入一句 192.168.0.2 server2 其中 192.168.0.2是新加的服务器的内网ip,server2是新服务器的主机名 在mysql客户端登陆mysql服务器的登录速度太慢的解决方案一篇文章中,我介绍了如何通过在my.ini文件(linux下是my.cnf文件)中添加"SKIP-NAME-RESOLVE"的参数设置,使得客户端在登录服务器的时候不通过主机解析这一关,直接登陆的方法,以此来提高登录速度。 这里要介绍一下这种方法的负面作用,以及不合理的时机使用这种方法会引发的不可发现的错误。 首先,回顾一下在my.ini文件中添加

mysql SKIP-NAME-RESOLVE 错误的使用时机造成用户权限

送分小仙女□ 提交于 2020-03-02 19:07:30
新加的一台服务器,连接内网中的一台mysql服务器的时候,经常出现超时。 登陆到mysql,查看进程的信息 代码如下: show processlist; 发现大量的进程的状态为 login 原来默认的时候mysql启动时是不使用 skip-name-resolve选项的,这样的话,从其它主机的连接会比较慢,因为mysql会对这个ip做dns反向查询,导致大量的连接处于 login状态.... . 解决这个问题有两个办法 一是加入 skip-name-resolve参数重启mysql 二是在 /etc/hosts中加入一句 192.168.0.2 server2 其中 192.168.0.2是新加的服务器的内网ip,server2是新服务器的主机名 在mysql客户端登陆mysql服务器的登录速度太慢的解决方案一篇文章中,我介绍了如何通过在my.ini文件(linux下是my.cnf文件)中添加"SKIP-NAME-RESOLVE"的参数设置,使得客户端在登录服务器的时候不通过主机解析这一关,直接登陆的方法,以此来提高登录速度。 这里要介绍一下这种方法的负面作用,以及不合理的时机使用这种方法会引发的不可发现的错误。 首先,回顾一下在my.ini文件中添加"SKIP-NAME-RESOLVE"参数来提高访问速度的原理: 在没有设置该参数的时候,客户端在登陆请求发出后

mysql详解

佐手、 提交于 2020-03-01 11:59:43
mysql命令 mysql登录参数: -D, --database 指定数据库 --delimiter 指定分隔符 -h, --host 指定服务器地址 -p, --password 指定密码 -P, --port 指定端口 --prompt 设置提示符 -u, --user 指定用户名 -V, --version 输出版本信息并退出 修改命令提示符: 通过参数指定提示符, mysql -uroot -p123456 --prompt 提示符 通过命令指定提示符, mysql> prompt 提示符; 提示符: \D 完整的日期 \d 当前数据库 \h 服务器名称 \u 当前数据库 常用命令: SELECT VERSION(); 显示当前服务器版本 SELECT NOW(); 显示当前日期时间 SELECT USER(); 显示当前用户 mysql语句规范: 1. 关键字与函数名称全部大写 2. 数据库名称、表名称、字段名称全部小写 3. SQL语句必须以分号结尾 操作数据库 CREATE DATABASE 创建数据库 ALTER DATABASE 修改数据库 DROP DATABASE 删除数据库 创建数据库: {} 为必选项; | 表示或; [] 为可选项。下同 CREATE { DATABASE | SCHEMA } [ IF NOT EXISTS ] db_name [

Linux下MySQL的一些操作

∥☆過路亽.° 提交于 2020-03-01 04:59:36
1、Linux下启动Mysql的命令: /etc/init.d/mysql start 2、关闭Mysql的命令: /etc/init.d/mysql shutdown 3、重启Mysql的命令: /etc/init.d/mysql restart 4、创建用户: grant 权限(all代表所有权限) on database_name.* to userNmae@"%" identified by "Password" GRANT privileges (columns) ON what TO user IDENTIFIED BY "password" WITH GRANT OPTION 如果创建用户后或者Update Mysql-User表后权限的设置不生效,可以执行flush privileges;就OK! mysql>grant select,insert,update,delete,create,drop on vtdc.employee to joe@10.163.225.87 identified by '123'; 给来自10.163.225.87的用户joe分配可对数据库vtdc的employee表进行select,insert,update,delete,create,drop等操作的权限,并设定口令为123。 mysql>grant all

MySQL的系统数据库

北战南征 提交于 2020-02-28 21:18:27
MySQL的系统数据库 使用MySQL客户端操作数据库时,只要稍微留神都会发现,除了我们建的库之外,还经常看到这个系统数据库的影子: information_schema performance_schema mysql sys 数据库元数据(metadata)就是描述数据的数据,在MySQL中就是描述database的数据。有哪些数据库、每个表有哪些表、表有多少字段、字段是什么类型、访问权限等等。 INFORMATION_SCHEMA提供对数据库元数据的访问,关于MySQL服务器的信息,例如数据库或表的名称,列的数据类型或访问权限。 PERFORMANCE_SCHEMA ,主要用于收集数据库服务器性能参数。提供以下功能: 1.提供进程等待的详细信息,包括锁、互斥变量、文件信息; 2.保存历史的事件汇总信息,为提供MySQL服务器性能做出详细的判断; 3.对于新增和删除监控事件点都非常容易,并可以随意改变mysql服务器的监控周期,例如(CYCLE、MICROSECOND) 通过以上得到的信息,DBA能够较明细得了解性能降低可能是由于哪些瓶颈。 mysql是核心数据库,类似于sql server中的master表,主要负责存储数据库的用户(账户)信息、权限设置、关键字等mysql自己需要使用的控制和管理信息。不可以删除,如果对mysql不是很了解

mysql之变量

孤者浪人 提交于 2020-02-27 14:07:22
MySQL 之变量 MySQL 的变量分为四种: 局部变量 、 用户变量 、 会话变量 和 全局变量 。 其中 局部变量 只存在于函数和存储过程。 其中 会话变量 和 全局变量 在 MySQL 中统称为 系统变量 。 其中 用户变量 和 局部变量 在 MySQL 中统称为 自定义变量 。 一、系统变量 说明:变量由系统定义,不是用户定义,属于服务器层面 注意:全局变量需要添加global关键字,会话变量需要添加session关键字,如果不写,默认会话级别 全局变量 作用域:针对于所有会话(连接)有效,但不能跨重启 会话变量 作用域:针对于当前会话(连接)有效 名称 作用域 语法 全局变量 针对于所有会话(连接)有效,但不能跨重启 global修饰 会话变量 针对于当前会话(连接)有效 session修饰 1、查看所有系统变量 show global |【session】variables; 2、查看满足条件的部分系统变量 show global |【session】 variables like '%char%'; 3、查看指定的系统变量的值 select @@session.系统变量名; select @@global.系统变量名; 4、为某个系统变量赋值 方式一: set global |【session】系统变量名=值; 方式二: set @@global.系统变量名=值;

MySQL——触发器

自闭症网瘾萝莉.ら 提交于 2020-02-27 11:27:51
MySQL语句在需要执行时被执行,存储过程也是如此。但是,如果想要某些SQL在事件发生时自动执行,这就需要触发器。 基本语法 //创建触发器 CREATE TRIGGER name //删除触发器 DROP TRIGGER name 创建触发器 在创建触发器时需要给出4条信息 唯一的触发器名 触发器需要关联的表 触发器应该响应的活动(DELETE、INSTERT或UPDATE) 触发器何时执行(处理之前还是之后) 删除触发器 为了删除一个触发器,可以使用DROP TRIGGER 语句。如下所示 使用触发器 INSERT触发器 INSERT触发器在INSERT语句执行之前或之后执行。需要知道以下几点: 在INSERT触发器代码内,可以用一个名为NEW的虚拟表,访问被插入的行 在BEFORE INSERT触发器中,NEW中的值也可以被更新(允许更改被插入的值) 对于AUTO_INCREMENT列,NEW在INSERT执行前包含0,在INSERT执行之后包含新的自动生成值 DELETE触发器 DELETE触发器在DELETE语句执行之前或之后执行。需要知道以下两点 在DELETE触发器代码中,可以引用一个名为OLD的虚拟表,访问被删除的行 OLD中的值全都是只读的,不能更新 UPDATE触发器 UPDATE触发器在UPDATE语句执行之前或之后执行。需要知道以下几点

MySQL之数据库优化

人走茶凉 提交于 2020-02-27 04:39:10
Mysql数据库的优化技术 对mysql优化是一个综合性的技术,主要包括 •表的设计合理化(符合3NF) •添加适当索引(index) [四种: 普通索引、主键索引、唯一索引unique、全文索引] •分表技术(水平分割、垂直分割) •读写[写: update/delete/add]分离 •存储过程 [模块化编程,可以提高速度] •对mysql配置优化 [配置最大并发数my.ini, 调整缓存大小 ] •mysql服务器硬件升级 •定时的去清除不需要的数据,定时进行碎片整理(MyISAM) 数据库优化工作 对于一个以数据为中心的应用,数据库的好坏直接影响到程序的性能,因此数据库性能至关重要。一般来说,要保证数据库的效率,要做好以下四个方面的工作: ① 数据库设计 ② sql语句优化 ③ 数据库参数配置 ④ 恰当的硬件资源和操作系统 此外,使用适当的存储过程,也能提升性能。 这个顺序也表现了这四个工作对性能影响的大小 数据库表设计 通俗地理解三个范式,对于数据库设计大有好处。在数据库设计中,为了更好地应用三个范式,就必须通俗地理解三个范式(通 俗地理解是够用的理解,并不是最科学最准确的理解): 第一范式:1NF是对属性的原子性约束,要求属性(列)具有原子性,不可再分解;(只要是关系型数据库都满足1NF) 第二范式:2NF是对记录的惟一性约束,要求记录有惟一标识,即实体的惟一性;