mysql创建存储过程

MySQL总结(5)

ぃ、小莉子 提交于 2019-12-04 03:38:23
视图 SELECT cust_name,cust_contact FROM customers,orders,orderitems WHERE customers.cust_id=orders.cust_id AND orderitems.order_num=orders.order_num AND prod_id='TNT2'; 假如可以把整个查询包装成一个名为 productcustomers 的虚拟表 SELECT cust_name,cust_contact FROM productcustomers #this is a 视图 WHERE prod_id='TNT2' productcustomers 是一个视图,作为视图,它不包含表中应该有的任何列或数据,它包含的是一个SQL查询(与上面用以正确联结表的相同的查询)。 😁 重用SQL语句。 😁 简化复杂的SQL操作。在编写查询后,可以方便地重用它而不必 知道它的基本查询细节。 😁 使用表的组成部分而不是整个表。 😁 保护数据。可以给用户授予表的特定部分的访问权限而不是整个 表的访问权限。 😁 更改数据格式和表示。视图可返回与底层表的表示和格式不同的 数据。 😘 与表一样,视图必须唯一命名(不能给视图取与别的视图或表相 同的名字)。 😘 对于可以创建的视图数目没有限制。 😘 为了创建视图,必须具有足够的访问权限

第六篇:视图、触发器、事务、存储过程、函数

余生长醉 提交于 2019-12-04 03:31:58
阅读目录 一 视图 二 触发器 三 事务 四 存储过程 五 函数 六 流程控制 一 视图 视图是一个虚拟表(非真实存在),其本质是【根据SQL语句获取动态的数据集,并为其命名】,用户使用时只需使用【名称】即可获取结果集,可以将该结果集当做表来使用。 使用视图我们可以把查询过程中的临时表摘出来,用视图去实现,这样以后再想操作该临时表的数据时就无需重写复杂的sql了,直接去视图中查找即可,但视图有明显地效率问题,并且视图是存放在数据库中的,如果我们程序中使用的sql过分依赖数据库中的视图,即强耦合,那就意味着扩展sql极为不便,因此并不推荐使用 #两张有关系的表 mysql> select * from course; +-----+--------+------------+ | cid | cname | teacher_id | +-----+--------+------------+ | 1 | 生物 | 1 | | 2 | 物理 | 2 | | 3 | 体育 | 3 | | 4 | 美术 | 2 | +-----+--------+------------+ 4 rows in set (0.00 sec) mysql> select * from teacher; +-----+-----------------+ | tid | tname | +-----+-----

MySQL之存储过程

末鹿安然 提交于 2019-12-03 23:06:55
什么是存储过程: 一组SQL语句集,功能强大,可以实现一些比较复杂的逻辑功能,类似于JAVA语言中的方法。存储过程是一段预编译好的代码,存储过程跟触发器有点类似,都是一组SQL集,但是存储过程是主动调用的,且功能比触发器更加强大,触发器是某件事触发后自动调用 存储过程优势   存储过程把经常使用的SQL语句或业务逻辑封装起来,预编译保存在数据库中,当需要时从数据库中直接调用,省去了编译的过程   提高了运行速度   同时降低网络数据传输量 存储过程与自定义函数的区别   存储过程实现的过程要复杂一些,而函数的针对性较强   存储过程可以有多个返回值,而自定义函数只有一个返回值   存储过程一般可独立执行,而函数往往是作为其他SQL语句的一部分来使用 存储过程语句 1、创建存储过程   CREATE PROCEDURE sp_name ([ proc_parameter [,proc_parameter ...]])   routime_body   proc_parameter : [IN|OUT|INOUT] parameter_name type   其中IN表示输入参数,OUT表示输出参数,INOUT表示既可以输入也可以输出;param_name表示参数名称;type表示参数的类型 2、查看存储过程列表   SHOW PROCEDURE STATUS; 3、查看存储过程定义

MySQL基础

不羁的心 提交于 2019-12-03 17:23:43
目录 第3章 使用MySQL 入门命令 第4章 检索数据 检索单列 检索多列 检索所有列 检索不同的行 限制结果 第5章 排序检索 排序数据 按多个列排序 指定排序方向 order by 和 limit 组合使用 第6章 过滤数据 检查单个值 不匹配检查 范围值检查 空值检查 第7章 数据过滤 组合where子句 in操作符 not操作符 第8章 使用通配符进行过滤 %通配符 _通配符 第9章 用正则表达式进行搜索 基本字符匹配 进行OR匹配 匹配几个字符之一 匹配范围 匹配特殊字符 匹配多个实例 定位符 第10章 创建可计算字段 拼接字段 使用别名 执行算数计算 第11章 使用数据处理函数 文本处理函数 日期和时间处理函数 数值处理函数 第12章 汇总数据 聚集函数 聚集不同值 组合聚集函数 第13章 分组数据 过滤分组 select子句顺序 第14章 使用子查询 利用子查询进行过滤 第15章 联结表 创建联结 第16章 创建高级联结 使用表别名 使用不同的联结 外部联结 使用带聚集函数的联结 使用联结和联结的条件 第17章 组合查询 创建组合查询 第18章 全文本搜索 使用全文本搜索 第19章 插入数据 插入完整的行 insert更安全的写法 插入多个行 插入检索出的数据 第20章 更新和删除数据 更新数据 删除数据 第21章 创建和操纵表 第22章 使用视图

MYSQL补充

余生颓废 提交于 2019-12-03 14:55:30
1、视图 视图当作表 2、触发器 insert ... 3、存储过程 insert into tb1() update tb2... 事务:innodb p12(out status int): try: insert into tb1() update tb2... set status=1 except ...: set status=0 call p12() 4、函数 def func(arg): return arg + 100 select nid from student # 1,2,3,4,5,6... select func(nid) from student # 101,102,103,104 select func(1) # 101 函数: mysql内置函数 自定义函数 函数: SQL不允许 declare a int; # set a = 123; select nid into a from student where name='alex' # nid: 11 name:alex # a = 11 return 返回 # select 函数名(参数) 存储过程: sql语句 intout,out构造返回值 call: 存储过程名称 索引 功能: - 约束 - 主键 - 外键 - 唯一 - 普通 - 组合 - 加速查找 为什么索引可以这么快?

mysql - 函数

筅森魡賤 提交于 2019-12-03 14:05:29
和存储过程的区别: 存储过程:返回值任意 主要用于批量增删改 函数:有且只有一个返回值 主要用来查某个值 1.创建: 方法类型 1 DETERMINISTIC 不确定的 2 NO SQL 没有SQl语句,当然也不会修改数据 3 READS SQL DATA 只是读取数据,当然也不会修改数据 不添加可能会报1418错误 function中的变量可以用局部变量或者用户变量定义 例子1:无参数,用局部变量 DELIMITER $$ CREATE FUNCTION fun_test_no_param() RETURNS VARCHAR(20) #起名字时最好能与表内属性分开避免歧义 DETERMINISTIC #创建方法时需要确认方法类型,否则会出现1418错误 BEGIN DECLARE f_id INT DEFAULT 1; DECLARE f_username VARCHAR(20); SELECT username INTO f_username FROM userinfo WHERE uid = f_id; RETURN f_username; END $$ DELIMITER ;#使用SELECT fun_test_no_param(); 例子2:有参数,用用户变量 DELIMITER $$ CREATE FUNCTION fun_test_param(f_uid INT)

mysql创建存储过程动态SQL语句

时光总嘲笑我的痴心妄想 提交于 2019-12-03 13:23:26
DROP PROCEDURE IF EXISTS x.`wk`; DELIMITER $$ CREATE PROCEDURE `x`.`wk`() BEGIN DECLARE crs VARCHAR ( 500 ); DECLARE t VARCHAR ( 50 ); SET t = CONCAT( "t_track_recording_", YEAR ( CURRENT_DATE ) ); SET crs = CONCAT( "CREATE TABLE IF NOT EXISTS ", t, " like t_track_recording; " ); SET @sql = crs; PREPARE stmt FROM @sql; -- 预处理动态sql语句 EXECUTE stmt ; -- 执行sql语句 DEALLOCATE PREPARE stmt; -- 释放prepare END$$ CALL `x`.`wk`() 记得一定要定义delimiter $$ 来源: https://www.cnblogs.com/subendong/p/11796790.html

mysql存储过程。。

亡梦爱人 提交于 2019-12-03 05:31:37
MySQL 5.0 版本开始支持存储过程。 存储过程(Stored Procedure)是一种在数据库中存储复杂程序,以便外部程序调用的一种数据库对象。 存储过程是为了完成特定功能的SQL语句集,经编译创建并保存在数据库中,用户可通过指定存储过程的名字并给定参数(需要时)来调用执行。 存储过程思想上很简单,就是数据库 SQL 语言层面的代码封装与重用。 优点 存储过程可封装,并隐藏复杂的商业逻辑。 存储过程可以回传值,并可以接受参数。 存储过程无法使用 SELECT 指令来运行,因为它是子程序,与查看表,数据表或用户定义函数不同。 存储过程可以用在数据检验,强制实行商业逻辑等。 缺点 存储过程,往往定制化于特定的数据库上,因为支持的编程语言不同。当切换到其他厂商的数据库系统时,需要重写原有的存储过程。 存储过程的性能调校与撰写,受限于各种数据库系统。 一、存储过程的创建和调用 存储过程就是具有名字的一段代码,用来完成一个特定的功能。 创建的存储过程保存在数据库的数据字典中。 创建存储过程 CREATE [ DEFINER = { user | CURRENT_USER }]   PROCEDURE sp_name ( [ proc_parameter [,...]] ) [ characteristic ...] routine_body proc_parameter : [ IN

MySQL数据库5事务、视图、触发器、函数、数据库的备份

时光怂恿深爱的人放手 提交于 2019-12-03 05:19:33
目录 一、事务(important) 1.1什么是事务? 1.2解决办法 1.2.1事务的语法 1.2.2使用事务解决转账问题代码演示 1.2.3rollback 1.3事务的特性(important) 二、存储引擎(important) 2.1 innodb 2.2 myisam 2.3两种引擎的区别 三、视图 四、触发器 4.1简述 4.2用法 4.2.1增加 4.2.2删除 五、存储过程 5.1存储过程的创建 5.2存储过程的删除 六、函数 七、数据库的备份 7.1数据库的备份 7.2数据库的导入 也许人生就是这样,我们花大把时间迷茫,然后在几个瞬间成长。——无意间看到的一句话 一、事务(important) 1.1什么是事务? 事务指一组操作要么成功要么失败,在成功修改数据前原来的数据不会受影响,如果修改成功则数据将被更改,如果失败,则原数据库数据不变。 思考:银行转账,转账人如果已经进行了转账操作,而在对方还未收到转账时如果发生网络故障,对方没有收到钱,这个转着账如何处理?这时候就用到了事务,转账要么成功,两边数据都修改,要么失败,两边的数据都不变。 代码演示 create table user ( id int auto_increment primary key , name varchar (32) not null default '', salary int

MySQL 05

空扰寡人 提交于 2019-12-03 05:19:04
目录 事务 基本概念 四大特性(ACID) 使用方法 存储引擎 视图 基本概念 使用方法 触发器 基本概念 使用方法 存储过程 基本概念 使用方法 数据备份 备份 导入 函数 事务 基本概念 事务: Transaction 事务是由一个或多个sql语句构成的逻辑单元, 是一个整体的概念 作用 : 使得一系列sql语句要么全部完成, 要目全部不完成, 保证了数据库的完整性 四大特性(ACID) 原子性 ( A tomicity): 事务是最小执行单位, 不可再分, 既一个事务中的所有操作, 要么全部完成, 要么全部不完成 一致性 ( C onsistency): 事务开始之前和结束之后, 数据库的完整性没有被破坏 隔离性 ( I solation): 数据库支持多个事务并发, 隔离性可以防止事务交叉执行导致的不一致 读未提交 读提交 可重复读 串行化 持久性 ( D urability): 事务处理结束后, 对数据的修改时永久的 使用方法 start transaction; 开启 commit; 提交 rollback; 回滚 第一步: 开启事务, 执行操作 # alpha 对 bravo 转账 100 mysql> select * from balance; +----+-------+-------+ | id | name | money | +----+-------+-