mysql创建存储过程

mysql 中的存储过程

匿名 (未验证) 提交于 2019-12-02 22:06:11
创建一个简单的存储过程 存储过程proc_adder功能很简单,两个整型输入参数a和b,一个整型输出参数sum,功能就是计算输入参数a和b的结果,赋值给输出参数sum; 几点说明: DELIMITER ;;:之前说过了,把默认的输入的结束符;替换成;;。 DEFINER:创建者; call : 调用存储过程,用 call 命令 -- ---------------------------- -- Procedure structure for `proc_adder` -- ---------------------------- DROP PROCEDURE IF EXISTS `proc_adder`; DELIMITER ;; CREATE DEFINER=`root`@`localhost` PROCEDURE `proc_adder`(IN a int, IN b int, OUT sum int) BEGIN #Routine body goes here... DECLARE c int; if a is null then set a = 0; end if; if b is null then set b = 0; end if; set sum = a + b; END ;; DELIMITER ;    执行以上存储结果,验证是否正确,如下图,结果OK:

mysql开发 -- 触发器

匿名 (未验证) 提交于 2019-12-02 22:06:11
MYSQL 从5.0.2版本开始支持触发器的功能,触发器是与表有关的数据库对象,在满足定义条件时触发,并执行触发器中定义的语句集合。触发器的这种特性可以协助应用在数据库端确保数据的完整性。 触发器创建语法如下: CREATE TRIGGER trigger_name trigger_time trigger_event ON table_name FOR EACH ROW BEGIN trigger_statement END 其中: trigger_name 是触发器的名称。 trigger_time 是触发器的触发时间 ,可以是BEFORE 或是AFTER,BEFORE的含义值在检查约束前触发,AFTER 是在检查约束后触发。 trigger_envent 是触发器的触发事件。 可以是 INSERT,UPDATE ,DELETE. 对于同一个表的相同触时间的相同触发事件,只能定义一个触发器 。 使用别名 NEW 和OLD 来应用触发器中发送变化的记录内容。现在的触发器还只支持行级触发,不支持语句级触发。 为 film 表创建 after insert 触发器: DELIMITER && CREATE TRIGGER ins_flim after insert ON film FOR EACH ROW BEGIN INSERT INTO file_text(film_id ,

MySQL的学习--触发器

匿名 (未验证) 提交于 2019-12-02 22:06:11
MySQL包含对触发器的支持。触发器是一种与表操作有关的数据库对象,当触发器所在表上出现指定事件时,将调用该对象,即表的操作事件触发表上的触发器的执行。 创建触发器 在MySQL中,创建触发器语法如下: CREATE TRIGGER trigger_name trigger_time trigger_event ON tbl_name FOR EACH ROW trigger_stmt 其中: trigger_name:标识触发器名称,用户自行指定; trigger_time:标识触发时机,取值为 BEFORE 或 AFTER; trigger_event:标识触发事件,取值为 INSERT、UPDATE 或 DELETE; tbl_name:标识建立触发器的表名,即在哪张表上建立触发器; trigger_stmt:触发器程序体,可以是一句SQL语句,或者用 BEGIN 和 END 包含的多条语句。 另外有一个限制是不能同时在一个表上建立2个相同类型的触发器,因此在一个表上最多建立6个触发器。 trigger_event 详解 M ySQL 除了对 INSERT、UPDATE、DELETE 基本操作进行定义外,还定义了 LOAD DATA 和 REPLACE 语句,这两种语句也能引起上述6中类型的触发器的触发。 LOAD DATA 语句用于将一个文件装入到一个数据表中

MySQL中distinct和group by性能比较

匿名 (未验证) 提交于 2019-12-02 22:06:11
MySQL中distinct和group by性能比较[转] 之前看了网上的一些测试,感觉不是很准确,今天亲自测试了一番。得出了结论(仅在个人计算机上测试,可能不全面,仅供参考) 测试过程: 1 CREATE TABLE `test_test` ( 2 `id` int(11) NOT NULL auto_increment, 3 `num` int(11) NOT NULL default '0', 4 PRIMARY KEY (`id`) 5 ) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ; 01 create procedure p_test(pa int(11 )) 02 begin 03 04 declare max_num int(11) default 100000 ; 05 declare i int default 0 ; 06 declare rand_num int; 07 08 select count (id) into max_num from test_test; 09 10 while i < pa do 11 if max_num < 100000 then 12 select cast( rand ()*100 as unsigned) into rand_num; 13 insert

一条SQL查询语句是如何执行的?

匿名 (未验证) 提交于 2019-12-02 22:06:11
本篇文章将通过一条 SQL 的执行过程来介绍 MySQL 的基础架构。 首先有一个 user_info 表,表里有一个 id 字段,执行下面这条查询语句: select * from user_info where id = 1 ; 返回结果为: +----+----------+----------+--------+------+---------------------+---------------------+ | id | username | password | openid | role | create_time | update_time | +----+----------+----------+--------+------+---------------------+---------------------+ | 1 | 武培轩 | 123 | 1 | 1 | 2019 - 08 - 29 00 : 29 : 08 | 2019 - 08 - 29 00 : 29 : 08 | +----+----------+----------+--------+------+---------------------+---------------------+ 下面给出 MySQL 的基本架构示意图,可以看出 SQL 语句在 MySQL 的各个模块中的执行过程

MySql传参调用存储过程

匿名 (未验证) 提交于 2019-12-02 22:06:11
一、创建存储过程 DROP PROCEDURE IF EXISTS PROC_ADD_USER; //如果存储过程存在,先删除掉存储过程 CREATE PROCEDURE PROC_ADD_USER(in userId char(32), in userName VARCHAR(255), in userAccount VARCHAR(255))   BEGIN     INSERT INTO blog_user(user_id,user_name,user_account,user_password) VALUES(userId,userName,userAccount,‘123123’);   END 二、调用存储过程 CALL PROC_ADD_USER(‘a1’,‘程潇’,‘chengxiao’); 三、执行完存储过程后数据库user表中新增了一条数据,如下图所示 至此,通过存储过程的执行,已经成功插入一条数据。 四、传入参数执行存储过程后返回数据 DROP PROCEDURE IF EXISTS game ; CREATE PROCEDURE game ( OUT msg VARCHAR ( 255 ), IN number INT ) BEGIN IF number = 1 THEN SET msg = "number = 1" ; ELSEIF number = 2

MySQL触发器更新和插入操作

匿名 (未验证) 提交于 2019-12-02 22:06:11
触发器(trigger):监视某种情况,并触发某种操作,它是提供给程序员和数据分析员来保证数据完整性的一种方法,它是与表事件相关的特殊的存储过程,它的执行不是由程序调用,也不是手工启动,而是由事件来触发,例如当对一个表进行操作( insert,delete, update)时就会激活它执行。 触发器经常用于加强数据的完整性约束和业务规则等。 触发器创建语法四要素: 1.监视地点(table) 2.监视事件(insert/update/delete) 3.触发时间(after/before) 4.触发事件(insert/update/delete) 触发器基本语法如下所示: 其中:trigger_time是触发器的触发事件,可以为before(在检查约束前触发)或after(在检查约束后触发);trigger_event是触发器的触发事件,包括insert、update和delete,需注意对同一个表相同触发时间的相同触发事件,只能定义一个触发器;可以使用old和new来引用触发器中发生变化的记录内容。 触发器SQL语法: create trigger triggerName after/before insert/update/delete on 表名 for each row #这句话在mysql是固定的 begin sql语句; end; 来源:博客园 作者: _小豪豪 链接

MySQL常用系统表汇总

匿名 (未验证) 提交于 2019-12-02 22:06:11
在这篇文章中: Information_schema performance_schema mysql sys 概述 本篇文章虽大部分内容为参考原文作者的相关内容,但对原文对于文章的逻辑与排版上进行了大范围修改,方便阅读与理解。原文链接在底部 MySQL5.7 默认模式 库名 表数量 视图数量 information_schema 61 0 mysql 32 0 performance_schema 87 0 sys 1 100 Information_schema Information_schema数据库是 MySQL 自带的,它提供了访问数据库元数据的方式。 什么是元数据呢? 元数据是关于数据的数据,如数据库名或表名,列的数据类型,或访问权限等。有些时候用于表述该信息的其他术语包括“数据词典”和“系统目录”。 在MySQL中,把 information_schema 看作是一个数据库,确切说是信息数据库。其中保存着关于MySQL服务器所维护的所有其他数据库的信息。如数据库名,数据库的表,表栏的数据类型与访问权限等。在INFORMATION_SCHEMA中,有数个只读表。它们实际上是视图,而不是基本表,因此,你将无法看到与之相关的任何文件 information_schema 数据库部分表说明 表名 注释 SCHEMATA 提供了当前mysql实例中所有数据库的信息。是show

MySQL SQL SECURITY definer invoker

匿名 (未验证) 提交于 2019-12-02 22:02:20
MySQL SQL SECURITY definer invoker /*--> */ /*--> */ /*--> */ /*--> */ /*--> */ MySQL SQL SECURITY definer invoker Table of Contents 1. mysql存储过程/函数 SQL SECURITY 1 mysql存储过程/函数 SQL SECURITY SQL security 是数据库检查一个用户是否有存储过程中各种操作的权限。至于检查哪个用户,由 sql security 决定。 该选项有两种值可选,一个是definer,一个是invoker. DEFINER definer 指明此存储过程有哪个用户定义的, 创建存储过程时可以省略掉,这样存储过程创建时,默认'root@localhost'. sql security 设置为definer时,则数据库根据definer 检查是否有操作相应对象的权限 。 INVOKER 如果sql security 设置为 invoker , 则数据库根据调用用户检查是否有操作相应对象的权限 。 Author: halberd.lee Created: 2019-07-15 Mon 16:55 Validate

MySQL数据库笔记总结

匿名 (未验证) 提交于 2019-12-02 22:02:20
MySQL数据库总结 一、数据库简介 1. 数据    所谓 数据(Data)是指对客观事物进行描述并可以鉴别的符号,这些符号是可识别的、抽象的 。 它不仅仅指狭义上的数字,而是 有多种表现形式:字母、文字、文本、图形、音频、视频等 。现在计算机存储和处理的数据范围十分广泛,而描述这些数据的符号也变得越来越复杂了。 2. 数据库   数据库(Database,DB)指的是 以一定格式存放、能够实现多个用户共享、与应用程序彼此独立的数据集合 。举例:车库,水库,数据库 3. 数据库管理系统   数据库管理系统(Database Management System,DBMS)是用来定义和管理数据的软件。 如何科学的组织和存储数据,如何高效的获取和维护数据,如何保证数据的安全性和完整性,这些都需要靠数据库管理系统完成 。目前,比较流行的数据库管理系统有:Oracle、MySQL、SQL Server、DB2等。 4. 数据库应用程序   数据库应用程序(Database Application System,DBAS)是在数据库管理系统基础上,使用数据库管理系统的语法,开发的 直接面对最终用户的应用程序 ,如学生管理系统、人事管理系统、图书管理系统等。 5. 数据库管理员   数据库管理员(Database Administrator,DBA)是 指对数据库管理系统进行操作的人员