mysql创建存储过程

mysql sql语句大全

自作多情 提交于 2020-01-23 00:56:08
1、说明:创建数据库 CREATE DATABASE database - name 2、说明:删除数据库 drop database dbname 3、说明:备份sql server --- 创建 备份数据的 device USE master EXEC sp_addumpdevice 'disk' , 'testBack' , 'c:\mssql7backup\MyNwind_1.dat' --- 开始 备份 BACKUP DATABASE pubs TO testBack 4、说明:创建新表 create table tabname(col1 type1 [ not null ] [ primary key ],col2 type2 [ not null ],..) 根据已有的表创建新表: A: create table tab_new like tab_old (使用旧表创建新表) B: create table tab_new as select col1,col2… from tab_old definition only 5、说明:删除新表 drop table tabname 6、说明:增加一个列 Alter table tabname add column col type 注:列增加后将不能删除。DB2中列加上后数据类型也不能改变,唯一能改变的是增加

mysql存储过程

心不动则不痛 提交于 2020-01-22 13:47:52
什么是存储过程? 存储过程就是作为可执行对象存放在数据库中的一个或多个SQL命令。 简化: 能完成一定操作的一组SQL语句。 存储过程的优点 存储过程 只在创造时进行编译 , 之后每次执行存储过程都不需要再重新编译, 而一般SQL语句每执行一次就编译一次, 所以使用存储过程可提高数据执行速度。 当对数据库进行复杂操作时, 可将此复杂操作存储过程封装起来与数据库提供的事务处理综合一起使用。 存储过程可以重复使用, 可减少数据库开发人员的工作量。 安全性高, 可设定只有某些用户才具有对指定存储过程的 使用权 。 存储过程的缺点 往往定制化于特定的数据库上,因为支持的编程语言不同。当切换到其他厂商的数据库系统时,需要 重写 原有的存储过程。 存储过程的性能调校与撰写,受限于各种数据库系统。 模板及关键语法 创建存储过程模板 CREATE [DEFINER = { user | CURRENT_USER }] -- 定义有权限调用此存储过程的用户, 只有super用户才能使用definer  PROCEDURE sp_name ([proc_parameter[,...]]) -- 存储过程名 [characteristic ...] routine_body -- 特征性的路由本体 proc_parameter: -- 存储过程参数 [ IN | OUT | INOUT ] param

小题大做之MySQL 5.0存储过程编程入门

独自空忆成欢 提交于 2020-01-21 00:15:10
MySQL 版本: 5.0.45 p hpMyAdmin 版本: 2.11.3 首先看 MySQL 5.0 参考手册中关于创建存储过程的语法说明: CREATE [DEFINER = { user | CURRENT_USER }] PROCEDURE sp_name ([ proc_parameter [,...]]) [ characteristic ...] routine_body proc_parameter : [ IN | OUT | INOUT ] param_name type type : Any valid MySQL data type characteristic : LANGUAGE SQL | [NOT] DETERMINISTIC | { CONTAINS SQL | NO SQL | READS SQL DATA | MODIFIES SQL DATA } | SQL SECURITY { DEFINER | INVOKER } | COMMENT ' string ' routine_body : Valid SQL procedure statement 如果你对 MySQL 还不太熟悉的话,单单看这个语法结构当然不足以进行 MySQL 存储过程编程。我之前基本都是使用 MS SQL SERVER ,所以以下记录我熟悉 MySQL

MYSQL之视图、触发器、事务

北城余情 提交于 2020-01-20 22:18:51
一 视图 视图是一个虚拟表(非真实存在),其本质是【根据SQL语句获取动态的数据集,并为其命名】,用户使用时只需使用【名称】即可获取结果集,可以将该结果集当做表来使用。 使用视图我们可以把查询过程中的临时表摘出来,用视图去实现,这样以后再想操作该临时表的数据时就无需重写复杂的sql了,直接去视图中查找即可,但视图有明显地效率问题,并且视图是存放在数据库中的,如果我们程序中使用的sql过分依赖数据库中的视图,即强耦合,那就意味着扩展sql极为不便,因此并不推荐使用 #两张有关系的表 mysql> select * from course; +-----+--------+------------+ | cid | cname | teacher_id | +-----+--------+------------+ | 1 | 生物 | 1 | | 2 | 物理 | 2 | | 3 | 体育 | 3 | | 4 | 美术 | 2 | +-----+--------+------------+ rows in set (0.00 sec) mysql> select * from teacher; +-----+-----------------+ | tid | tname | +-----+-----------------+ | 1 | 张磊老师 | | 2 | 李平老师 | |

一 视图

情到浓时终转凉″ 提交于 2020-01-20 22:17:00
一 视图 视图是一个虚拟表(非真实存在),其本质是【根据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 | +-----+-----------------+ | 1 | 张磊老师 | | 2 | 李平老师 |

MySQL SQL优化

匆匆过客 提交于 2020-01-20 15:47:38
SQL优化大全 索引优化 1.对查询进行优化,应尽量避免全表扫描,首先应考虑在 where 及 order by 涉及的列上建立索引。 2.应尽量避免在 where 子句中对字段进行 null 值判断,否则将导致引擎放弃使用索引而进行全表扫描,如:select id from t where num is null可以在num上设置默认值0,确保表中num列没有null值,然后这样查询:select id from t where num=0 3.应尽量避免在 where 子句中使用!=或<>操作符,否则引擎将放弃使用索引而进行全表扫描。 4.应尽量避免在 where 子句中使用or 来连接条件,否则将导致引擎放弃使用索引而进行全表扫描,如:select id from t where num=10 or num=20可以这样查询:select id from t where num=10 union all select id from t where num=20 http://5.in 和 not in 也要慎用,否则会导致全表扫描,如:select id from t where num in(1,2,3) 对于连续的数值,能用 between 就不要用 in 了:select id from t where num between 1 and 3 6

MySQL存储过程详解 mysql 存储过程

旧时模样 提交于 2020-01-20 05:39:49
mysql存储过程详解 1. 存储过程简介 我们常用的操作数据库语言 SQL 语句在执行的时候需要要先编译,然后执行,而存储过程( Stored Procedure )是一组为了完成特定功能的 SQL 语句集,经编译后存储在数据库中,用户通过指定存储过程的名字并给定参数(如果该存储过程带有参数)来调用执行它。 一个存储过程是一个可编程的函数,它在数据库中创建并保存。它可以有 SQL 语句和一些特殊的控制结构组成。当希望在不同的应用程序或平台上执行相同的函数,或者封装特定功能时,存储过程是非常有用的。数据库中的存储过程可以看做是对编程中面向对象方法的模拟。它允许控制数据的访问方式。 存储过程通常有以下优点: (1). 存储过程增强了 SQL 语言的功能和灵活性。存储过程可以用流控制语句编写,有很强的灵活性,可以完成复杂的判断和较复杂的运算。 (2). 存储过程允许标准组件是编程。存储过程被创建后,可以在程序中被多次调用,而不必重新编写该存储过程的 SQL 语句。而且数据库专业人员可以随时对存储过程进行修改,对应用程序源代码毫无影响。 (3). 存储过程能实现较快的执行速度。如果某一操作包含大量的 Transaction-SQL 代码或分别被多次执行,那么存储过程要比批处理的执行速度快很多。因为存储过程是预编译的。在首次运行一个存储过程时查询,优化器对其进行分析优化

MySQL存储过程详解(转)

荒凉一梦 提交于 2020-01-20 01:21:10
1. 存储过程简介 我们常用的操作数据库语言 SQL 语句在执行的时候需要要先编译,然后执行,而存储过程( Stored Procedure )是一组为了完成特定功能的 SQL 语句集,经编译后存储在数据库中,用户通过指定存储过程的名字并给定参数(如果该存储过程带有参数)来调用执行它。 一个存储过程是一个可编程的函数,它在数据库中创建并保存。它可以有 SQL 语句和一些特殊的控制结构组成。当希望在不同的应用程序或平台上执行相同的函数,或者封装特定功能时,存储过程是非常有用的。数据库中的存储过程可以看做是对编程中面向对象方法的模拟。它允许控制数据的访问方式。 存储过程通常有以下优点: (1). 存储过程增强了 SQL 语言的功能和灵活性。存储过程可以用流控制语句编写,有很强的灵活性,可以完成复杂的判断和较复杂的运算。 (2). 存储过程允许标准组件是编程。存储过程被创建后,可以在程序中被多次调用,而不必重新编写该存储过程的 SQL 语句。而且数据库专业人员可以随时对存储过程进行修改,对应用程序源代码毫无影响。 (3). 存储过程能实现较快的执行速度。如果某一操作包含大量的 Transaction-SQL 代码或分别被多次执行,那么存储过程要比批处理的执行速度快很多。因为存储过程是预编译的。在首次运行一个存储过程时查询,优化器对其进行分析优化,并且给出最终被存储在系统表中的执行计划

mysql函数

烈酒焚心 提交于 2020-01-17 18:35:34
存储过程和函数的区别 存储过程:可以有0个返回,也可以有多个返回,适合做批量插入、更新 函数:有且仅有一个返回。适合做处理数据后返回一个结果 语法 参数列表 包含两部分:参数名、参数类型 函数体肯定会有RETURN语句,否则会报错 使用 DELIMITER 设置结束标记 DELIMITER $ # 创建函数 CREATE FUNCTION 函数名 ( 参数列表 ) RETURNS 返回类型 BEGIN 函数体 END $ # 调用语法 SELECT 函数名 ( 参数列表 ) $ 案例 1.无参有返回 DELIMITER $ # 返回公司员工的个数 CREATE FUNCTION fun_test ( ) RETURNS INT BEGIN DECLARE c INT DEFAULT 0 ; SELECT COUNT ( * ) INTO c FROM tb_employee ; RETURN c ; END $ # 调用 SELECT fun_test ( ) $ 2.有参有返回 DELIMITER $ # 根据员工名,返回他的工资 CREATE FUNCTION fun_test ( empName VARCHAR ( 20 ) ) RETURNS DOUBLE BEGIN SET @sal = 0 ; # 可使用局部变量和用户变量,这里使用用户变量 SELECT salary

Mysql存储过程

爱⌒轻易说出口 提交于 2020-01-17 05:28:15
SQL语句需要先编译然后执行,而存储过程(Stored Procedure)是一组为了完成特定功能的SQL语句集,经编译后存储在数据库中,用户通过指定存储过程的名字并给定参数(如果该存储过程带有参数)来调用执行它。 存储过程是可编程的函数,在数据库中创建并保存,可以由SQL语句和控制结构组成。当想要在不同的应用程序或平台上执行相同的函数,或者封装特定功能时,存储过程是非常有用的。数据库中的存储过程可以看做是对编程中面向对象方法的模拟,它允许控制数据的访问方式。 存储过程的优点: (1).增强SQL语言的功能和灵活性:存储过程可以用控制语句编写,有很强的灵活性,可以完成复杂的判断和较复杂的运算。 (2).标准组件式编程:存储过程被创建后,可以在程序中被多次调用,而不必重新编写该存储过程的SQL语句。而且数据库专业人员可以随时对存储过程进行修改,对应用程序源代码毫无影响。 (3).较快的执行速度:如果某一操作包含大量的Transaction-SQL代码或分别被多次执行,那么存储过程要比批处理的执行速度快很多。因为存储过程是预编译的。在首次运行一个存储过程时查询,优化器对其进行分析优化,并且给出最终被存储在系统表中的执行计划。而批处理的Transaction-SQL语句在每次运行时都要进行编译和优化,速度相对要慢一些。 (4).减少网络流量:针对同一个数据库对象的操作(如查询、修改)