mysql如何创建存储过程

mysql如何创建存储过程,第1张

1 用mysql客户端登入

2 选择数据库

mysql>use test

3 查询当前数据库有哪些存储过程

mysql>show procedure status where Db='test'

4 创建一个简单的存储过程

mysql>create procedure hi() select 'hello';

5 存储过程创建完毕,看怎么调用它

mysql>call hi();

显示结果 mysql> call hi();

+-------+

| hello |

+-------+

| hello |

+-------+

1 row in set (000 sec) Query OK, 0 rows affected (001 sec)

6 一个简单的储存过程就成功了

1、可视化创建

a登录SQL Server

b打开数据库==》要创建存储过程的数据库==》可编程性==》存储过程

c选中“存储过程”右击 ,在系出现的对话框中选择“新建存储过程”

d在右侧出现的对话框中填写具体存储过程内容完成后执行即可

2、代码创建

a全手写代码

一、定义变量

--简单赋值 

declare @a int

set @a=5 

print @a 

  

--使用select语句赋值 

declare @user1 nvarchar(50) 

select @user1='张三'

print @user1 

declare @user2 nvarchar(50) 

select @user2 = Name from ST_User where ID=1 

print @user2 

  

--使用update语句赋值 

declare @user3 nvarchar(50) 

update ST_User set @user3 = Name where ID=1 

print @user3

 

二、表、临时表、表变量

--创建临时表1 

create table #DU_User1 

     [ID] [int]  NOT NULL, 

     [Oid] [int] NOT NULL, 

     [Login] [nvarchar](50) NOT NULL, 

     [Rtx] [nvarchar](4) NOT NULL, 

     [Name] [nvarchar](5) NOT NULL, 

     [Password] [nvarchar](max) NULL, 

     [State] [nvarchar](8) NOT NULL

); 

--向临时表1插入一条记录 

insert into #DU_User1 (ID,Oid,[Login],Rtx,Name,[Password],State) values (100,2,'LS','0000','临时','321','特殊'); 

  

--从ST_User查询数据,填充至新生成的临时表 

select  into #DU_User2 from ST_User where ID<8 

  

--查询并联合两临时表 

select  from #DU_User2 where ID<3 union select  from #DU_User1 

  

--删除两临时表 

drop table #DU_User1 

drop table #DU_User2

 

--创建临时表 

CREATE TABLE #t 

    [ID] [int] NOT NULL, 

    [Oid] [int] NOT NULL, 

    [Login] [nvarchar](50) NOT NULL, 

    [Rtx] [nvarchar](4) NOT NULL, 

    [Name] [nvarchar](5) NOT NULL, 

    [Password] [nvarchar](max) NULL, 

    [State] [nvarchar](8) NOT NULL, 

  

--将查询结果集(多条数据)插入临时表 

insert into #t select  from ST_User 

--不能这样插入 

--select  into #t from dboST_User 

  

--添加一列,为int型自增长子段 

alter table #t add [myid] int NOT NULL IDENTITY(1,1) 

--添加一列,默认填充全球唯一标识 

alter table #t add [myid1] uniqueidentifier NOT NULL default(newid()) 

  

select  from #t 

drop table #t

--给查询结果集增加自增长列 

  

--无主键时: 

select IDENTITY(int,1,1)as ID, Name,[Login],[Password] into #t from ST_User 

select  from #t 

  

--有主键时: 

select (select SUM(1) from ST_User where ID<= aID) as myID, from ST_User a order by myID

--定义表变量 

declare @t table

    id int not null, 

    msg nvarchar(50) null

insert into @t values(1,'1') 

insert into @t values(2,'2') 

select  from @t

 三、循环

--while循环计算1到100的和 

declare @a int

declare @sum int

set @a=1 

set @sum=0 

while @a<=100 

begin

    set @sum+=@a 

    set @a+=1 

end

print @sum

四、条件语句

--if,else条件分支 

if(1+1=2) 

begin

    print '对'

end

else

begin

    print '错'

end

  

--when then条件分支 

declare @today int

declare @week nvarchar(3) 

set @today=3 

set @week=case

    when @today=1 then '星期一'

    when @today=2 then '星期二'

    when @today=3 then '星期三'

    when @today=4 then '星期四'

    when @today=5 then '星期五'

    when @today=6 then '星期六'

    when @today=7 then '星期日'

    else '值错误'

end

print @week

 

五、游标

declare @ID int

declare @Oid int

declare @Login varchar(50) 

  

--定义一个游标 

declare user_cur cursor for select ID,Oid,[Login] from ST_User 

--打开游标 

open user_cur 

while @@fetch_status=0 

begin

--读取游标 

    fetch next from user_cur into @ID,@Oid,@Login 

    print @ID 

    --print @Login 

end

close user_cur 

--摧毁游标 

deallocate user_cur

六、触发器

触发器中的临时表:

Inserted 

存放进行insert和update  *** 作后的数据 

Deleted 

存放进行delete 和update *** 作前的数据

--创建触发器 

Create trigger User_OnUpdate  

    On ST_User  

    for Update 

As 

    declare @msg nvarchar(50) 

    --@msg记录修改情况 

    select @msg = N'姓名从“' + DeletedName + N'”修改为“' + InsertedName + '”' from Inserted,Deleted 

    --插入日志表 

    insert into [LOG](MSG)values(@msg) 

      

--删除触发器 

drop trigger User_OnUpdate

七、存储过程

--创建带output参数的存储过程 

CREATE PROCEDURE PR_Sum 

    @a int, 

    @b int, 

    @sum int output

AS

BEGIN

    set @sum=@a+@b 

END

  

--创建Return返回值存储过程 

CREATE PROCEDURE PR_Sum2 

    @a int, 

    @b int

AS

BEGIN

    Return @a+@b 

END

      

--执行存储过程获取output型返回值 

declare @mysum int

execute PR_Sum 1,2,@mysum output

print @mysum 

  

--执行存储过程获取Return型返回值 

declare @mysum2 int

execute @mysum2= PR_Sum2 1,2 

print @mysum2

 

  

八、自定义函数

函数的分类:

1)标量值函数

2)表值函数

a:内联表值函数

b:多语句表值函数

3)系统函数

--新建标量值函数 

create function FUNC_Sum1 

    @a int, 

    @b int

returns int

as

begin

    return @a+@b 

end

  

--新建内联表值函数 

create function FUNC_UserTab_1 

    @myId int

returns table

as

return (select  from ST_User where ID<@myId) 

  

--新建多语句表值函数 

create function FUNC_UserTab_2 

    @myId int

returns @t table

    [ID] [int] NOT NULL, 

    [Oid] [int] NOT NULL, 

    [Login] [nvarchar](50) NOT NULL, 

    [Rtx] [nvarchar](4) NOT NULL, 

    [Name] [nvarchar](5) NOT NULL, 

    [Password] [nvarchar](max) NULL, 

    [State] [nvarchar](8) NOT NULL

as

begin

    insert into @t select  from ST_User where ID<@myId 

    return

end

  

--调用表值函数 

select  from dboFUNC_UserTab_1(15) 

--调用标量值函数 

declare @s int

set @s=dboFUNC_Sum1(100,50) 

print @s 

  

--删除标量值函数 

drop function FUNC_Sum1

谈谈自定义函数与存储过程的区别:

一、自定义函数:

1 可以返回表变量

2 限制颇多,包括

不能使用output参数;

不能用临时表;

函数内部的 *** 作不能影响到外部环境;

不能通过select返回结果集;

不能update,delete,数据库表;

3 必须return 一个标量值或表变量

自定义函数一般用在复用度高,功能简单单一,争对性强的地方。

二、存储过程

1 不能返回表变量

2 限制少,可以执行对数据库表的 *** 作,可以返回数据集

3 可以return一个标量值,也可以省略return

 存储过程一般用在实现复杂的功能,数据 *** 纵方面。

SQL的调用可以分为函数和存储过程。

个人理解,其实函数和存储过程是相似的,至少在引用的时候跟函数很是一样。或者干脆把存储过程理解为另一种函数,另一种经过优化的函数。它的优点在于,存储过程在被编译后会被直接保存在数据库中,成为数据库的一部分,以后就可以反复调用,运行速度快,效率高,这些是函数做不到的。

存储过程(Stored Procedure)是在大型数据库系统中,一组为了完成特定功能的SQL 语句集,存储在数据库中,经过第一次编译后再次调用不需要再次编译,用户通过指定存储过程的名字并给出参数(如果该存储过程带有参数)来执行它。存储过程是数据库中的一个重要对象。

种类

1系统存储过程

以sp_开头,用来进行系统的各项设定取得信息相关管理工作。

2本地存储过程

用户创建的存储过程是由用户创建并完成某一特定功能的存储过程,事实上一般所说的存储过程就是指本地存储过程。

3临时存储过程

分为两种存储过程:

一是本地临时存储过程,以井字号(#)作为其名称的第一个字符,则该存储过程将成为一个存放在tempdb数据库中的本地临时存储过程,且只有创建它的用户才能执行它;

二是全局临时存储过程,以两个井字号(##)号开始,则该存储过程将成为一个存储在tempdb数据库中的全局临时存储过程,全局临时存储过程一旦创建,以后连接到服务器的任意用户都可以执行它,而且不需要特定的权限。

4远程存储过程

在SQL Server2005中,远程存储过程(Remote Stored Procedures)是位于远程服务器上的存储过程,通常可以使用分布式查询和EXECUTE命令执行一个远程存储过程。

5扩展存储过程

扩展存储过程(Extended Stored Procedures)是用户可以使用外部程序语言编写的存储过程,而且扩展存储过程的名称通常以xp_开头。

本主题介绍如何使用 SQL Server Management Studio 中的对象资源管理器创建 Transact-SQL 存储过程,并提供一个在 AdventureWorks2008R2 数据库中创建简单存储过程的示例。创建存储过程在对象资源管理器中,连接到某个数据库引擎实例,再展开该实例。展开“数据库”、存储过程所属的数据库以及“可编程性”。右键单击“存储过程”,再单击“新建存储过程”。在“查询”菜单上,单击“指定模板参数的值”。在“指定模板参数的值”对话框中,“值”列包含参数的建议值。接受这些值或将其替换为新值,再单击“确定”。在查询编辑器中,使用过程语句替换 SELECT 语句。若要测试语法,请在“查询”菜单上,单击“分析”。若要创建存储过程,请在“查询”菜单上,单击“执行”。若要保存脚本,请在“文件”菜单上,单击“保存”。接受该文件名或将其替换为新的名称,再单击“保存”。安全说明验证所有用户的输入。验证前请勿连接用户输入。绝对不要执行根据尚未验证的用户输入构造的命令。有关详细信息,请参阅SQL 注入。创建存储过程的示例在对象资源管理器中,连接到某个数据库引擎实例,再展开该实例。依次展开“数据库”、AdventureWorks2008R2 数据库和“可编程性”。右键单击“存储过程”,再单击“新建存储过程”。在“查询”菜单上,单击“指定模板参数的值”。在“指定模板参数的值”对话框中,输入下列所示的参数值。参数值Author您的姓名Create Date今天的日期Description返回雇员数据。Procedure_nameHumanResourcesuspGetEmployees@Param1@LastName@Datatype_For_Param1nvarchar(50)Default_Value_For_Param1NULL@Param2@FirstName@Datatype_For_Param2nvarchar(50)Default_Value_For_Param2NULL单击“确定”。在查询编辑器中,使用以下语句替换 SELECT 语句: SELECT FirstName, LastName, JobTitle, Department FROM HumanResourcesvEmployeeDepartment WHERE FirstName = @FirstName AND LastName = @LastName;若要测试语法,请在“查询”菜单上,单击“分析”。如果返回错误消息,则请将这些语句与上述信息进行比较,并视需要进行更正。若要创建存储过程,请在“查询”菜单上,单击“执行”。若要保存脚本,请在“文件”菜单上,单击“保存”。输入新的文件名,再单击“保存”。若要运行存储过程,请在工具栏上单击“新建查询”。在查询窗口中,输入下列语句:USE AdventureWorks2008R2; GO EXECUTE HumanResourcesuspGetEmployees @FirstName = N'Diane', @LastName = N'Margheim'; GO在“查询”菜单上,单击“执行”。请参阅任务如何在 SQL Server Management Studio 中使用模板如何修改存储过程 (SQL Server Management Studio)如何删除存储过程 (SQL Server Management Studio)参考CREATE PROCEDURE (Transact-SQL)概念>创建存储过程(数据库引擎)其他资源存储过程帮助主题

存储过程,就是带有名字的一个程序块。

过程,就是程序块,说白了就是一段程序。

存储过程,创建完成之后,就存储在数据库内部了,数据库帮你记着,存储过程创建的时候都有一个名字,将来你在你的程序当中,通过某种方式(不同编程语言有不同的方式),一般来讲通过这个名字,去调用存储过程,就像使用一个方法或者函数一样,它就去做一件事!

不同的数据库的存储过程,都是用当前自己这个数据库的编程语言来编写的,比如oracle的pl/sql编程,等等。

问题一:怎样建立一个简单数据库? 把excel导入数据库,不出现表格嵌套可以使用下面这个方法导入;

思路:

(1)、把excel数据读入到dataset中;

(2)、建立相应结构的数据表格

(3)、把dat畅set中的数据更新到数据表中

问题二:如何在excel中创建“数据库” excel是一个自由表,一个EXCEL的工作薄就是一个数据库,它里面的每一张表就是数据库的表,你可象 *** 作表一样对其进行查询等 *** 作,它里面的列就是数据库的字段,行就是记录,因此你可以按数据库的架构来组建数据,只是你如果你组建的数据不符合数据库的规则,在查询时不能得到时相应的结果。因此在EXCEL中不存在创建数据库。但对存在的数据可以引用。当满足条件A、B、C、D……时引用是可以的,但如果是在EXCEL中直接引用是不行的,一种是用VBA利用ADO访问EXCEL,在查询时把A、B、C、D几个条件按SQL语法写进查询语句中,引用返回的记录集,一种是利用函数把满足A、B、C、D的记录筛选出来,然后再引用。

问题三:如何新建数据库关系图 红框:在CREATE 弗ABLE 的时候使用外键约束。

不论你建立一对一、一对多、多对多的关系,关系的两端都是连接一张表,这方面你可以了解一下E-R图!

问题四:sqlserver 下怎么建立数据库 怎么建表 方法/步骤

1

首先我们打开SQL SERVER自带的数据库管理工具,从开始菜单中可以找到,如图点击进去;

2

开始连接SQL SERVER服务器,就是我们装好的SQL SERVER 服务器;

3

右击数据库,选择第一个,新建一个数据库;

4

填写数据库的名称,下面是设置自动增长的,一般不用管,默认

5

点击确定后就可以生成一个数据库,此时里面是没有表的;

6

右击表新建一个表,填写你要的字段名称

7

填完字段名称后点击字段名称那个内部窗口的小叉叉,然后就提示你输入表名了,填写下表名,一个数据库的建立过程就是这样的;

或者

create database stuDB

on primary -- 默认就属于primary文件组,可省略

(

/--数据文件的具体描述--/

name='stuDB_data', -- 主数据文件的逻辑名称

filename='D:\stuDB_datamdf', -- 主数据文件的物理名称

size=5mb, --主数据文件的初始大小

maxsize=100mb, -- 主数据文件增长的最大值

filegrowth=15%--主数据文件的增长率

)

log on

(

/--日志文件的具体描述,各参数含义同上--/

name='stuDB_log',

filename='D:\stuDB_logldf',

size=2mb,

filegrowth=1mb

)

问题五:怎样建立一个大型数据库? 建立一个数据库当你想建立一个表时,你必须按照以下的步骤先建立一个数据库:在SQL Enterprise Manager中,选择你的数据库的名字。从Manage菜单中选择Databases选项。管理数据库的窗口就出现了。在工具条上点击新建数据库的按钮,就会出现新建数据库的对话框(如图35所示)。注意现在版本的SQL Server(version 65)最多能有32,767个数据库。每个数据库的最小容量是1MB,最大容量是ITB。在SQL Enterprise Manager对话框中的新建数据库对话框。 填写你的数据库所要使用的名字(不能有空格)。 然后,填写你要建立的数据库所在的数据库设备(例如,他就是你在前面一步建立的数据库设备)。 这个新建数据库的对话框会以图形的方式显示所有数据库设备的已经使用和没有使用的空间。 当你建立一个数据库时,你可以选择去建立事务日志。为了建立事务日志,你需要指定一个log device(日志数据库设备)。在新建数据库对话框中,打开标有LogDevice的下拉式框,然后选择一个数据库设备和用于日志的空间大小。注意每个数据库都有它自己的事务处理日志,它记录了对数据库每一个请求(modify,insert,delete)。日志文件是对数据库的内部处理过程的一种监视。它允许你对数据库执行updates, inserts, deletes等 *** 作。所以在需要的时候,你也可以取消这些 *** 作的结果。在系统没有正确地关闭,而只是停机或重新启动时,这些事务处理的日志是很有用的-在重新启动时,SQL Server会根据事务处理日志来恢复数据。注意当你把事务处理日志向一个dump 数据库倾倒时,你的事务处理日志会被截短。你也可以强制地使你的事务日志缩短。如果你想知道有关事务日志的更多的信息,请查询SQL 在线帮助文件,用关键字transaction log查找。6当你完成在新建数据库的对话框中的这些问题的回答,点击Create Now 按钮。你的数据库就会在Databases文件夹下显示出来。

问题六:创建数据库的两种方法 交互式创建,就是你右击数据库然后选择新建数据库按钮就可以还有一种就是sql语句创建比如创建一个数据库名为a 的数据库,那么sql语句就是,create database a;然后执行下就可以

问题七:如何建立一个数据库存储过程 由于不知道你的表结构,所以以下过程供参考(提醒:创建存储过程前,先选好要执行创建语句的数据库)

--------------------------------------------------

CREATE PROCEDURE getavg--存储过程名字为getavg

@kc varchar(255),--假设课程号字段为字符类型

@avg decimal(5,1) OUTPUT --输出平均成绩

AS

--课程号[email protected] 的平均成绩

SELECT @avg = avg(成绩字段)

from 表名

where 课程号字段 = @kc

return @avg

GO

------

以上为创建存储过程,以下为调用

declare @a decimal(5,1)

EXECUTE getavg '课程号', @avg = @a output

print @a

问题八:在电子表格中如何建立数据库?? 一、 建立数据库

方法一:使用向导,调出方法⑴可采用“文件”菜单“新建”

⑵或采用“工具”菜单“向导”

方法:使用数据库设计器

1、 使用向导建立数据库

特点:可以方便快捷地创建数据库,但只适用于一般常用的数据库。

2、 使用数据库设计器建立数据库

特点: 最大特点就是灵活性

*** 作步骤:⑴“文件”菜单“新建”,显示新建对话框

⑵选择“数据库”和单击“新建文件”钮

⑶在创建对话框中输入新数据库的名称和单击“保存”钮

效果:数据库文件已经建立完成。

显示出“数据库设计器”窗口和“数据库设计工具”

打开“数据库设计器”工具方法:“显示”菜单“工具栏”

选择“数据库设计器”

三、建立表

1、 数据库与数据表

可以先建立自由表,然后再添加到数据库中

建立新的数据库表,系统会将其自动加入到数据库中。

2、 建立自由表

注意:自由表独立于任何数据库,如需要课添加到数据库中,但不能同时

将一个表添加到多个数据库。

预备知识:建立表必须首先建立表的结构

即要描述各个字段的字段名、字段类型、字段宽度、如果是数

值型还有小数位数,以及索引、是否再字段中允许空值(选择NULL)

3、 建立数据库表

有三种方法:

法一、“文件”菜单“新建”,显示新建对话框

选择“表”和单击“新建文件”钮

在创建对话框中输入新数表名称和单击“保存”钮

法二、再建立完数据库后,不关闭“数据库设计器”窗口,单击鼠标右键后

选择快捷菜单种的“新表”,单击“新表”钮,再创建对话框输入表 名

后“保存”

法三、使用数据库设计器工具栏

(“显示”菜单“工具栏”)

选择“数据库设计器”工具栏种的第一个钮“新建表”

二、使用命令建立数据库、数据库表

1、 建立数据库

CREATE DATABASE 数据库名称

2、 建立数据库表

CREATE TABLE │DBF 表名 [FREE]

(字段名1 字段类型 [(字段宽度 [,小数位数] )]

[(字段名2……]

二、使用向导建立查询

1、查询形式分类:查询向导:标准查询

交叉表向导:以电子表格形式输出查询结果

图形向导:以电子图形形式输出查询结果

2、使用查询向导建立查询步骤:

[0]使用查询向导前必须先打开用到的库表或自由表

⑴字段选取

⑵记录筛选

⑶选择排序方式

⑷查询完成(选择保存并运行)(浏览查询)

⑸打开查询设计器,修改查询

问题九:如何建立一个数据库呢? 你上面将创建表和创建数据库等相关的东西混淆了。建议你多看下书理清下思路。一步一步来,学东西别急。

创建数据库:

create datebase db;

---这句代码创建数据库,数据库路径和大小由系统默认。

on

( 分配内存大小、数据库路径等。

)

―――创建表―――――

create table tb_(

username varchar(20) not null primary key

)-----创建字段

――――――――――――――

应该你有书,比着书多敲敲代码,有不懂的再交流。

以上就是关于mysql如何创建存储过程全部的内容,包括:mysql如何创建存储过程、sqlserver怎么创建存储过程、什么是数据库存储过程等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/sjk/10160773.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-05
下一篇 2023-05-05

发表评论

登录后才能评论

评论列表(0条)

保存