建立视图和存储过程到底能有什么作用和方便之处

MySQL中视图,函数,触发器,存储过程的概念作用及简单练习 触发器是与表相关联的特殊的存储过程,当特定的事件(如插入、更新、删除操作)发生在表上时,触发器会自动执行。还是参考的这个博主的练习,他的讲解很详细,不过我只跟练了例1想更多了解的可以点进去看一下。3. 逻辑独立性:即使底层表的结构发生变化,只要视图的定义不变,基于视图的操作通常不受影响。1. 简化查询:将复杂的查询定义为视图,后续可以直接基于视图进行简单的查询操作。我的这个练习参考的这个博主的前半段想了解更多触发器的知识的可以去看这个。函数是一组预先定义好的计算或操作逻辑,可以对数据进行处理和转换。 阅读详情

     首先视图可以将不同表中的数据通过关联实现多表数据输出,比如说,有一个类型表 uType,有字段tId,tName,有个产品表 uProduct,有字段pId,pName,tId,此时你可以通过建立一张视图vProduct将产品表和产品类型一起输出
SELECT p.pId AS 产品编号,p.pName AS 产品名称,t.tId AS 产品类型编号,t.tId AS 产品类型编号
FROM uProduct AS p INNER JOIN uType AS t ON p.tId = t.tId;

这样就可以在程序里使用
SELECT * FROM vProduct 来做产品资料的查询了
它可以减少我们编码的工作量,也方便维护。

                         SQL SERVER数据库开发之存储过程应用

序
  可能有不少朋友使用SQL SERVER做开发也已经有段日子,但还没有或者很少在项目中使用存储过程,或许有些朋友认为根本没有必要使用存储过程等等。其实当你一个项目做完到了维护阶段时,就会发现存储过程给我们带来了好处了,修改方便,不能去改我们的应用程序,只需要改存储过程的内容,而且还可以使我们的程序速度得到提高。

    要使用存储过程,首先我们必需熟悉一些基本的T-SQL语句,因为存储过程是由于一组T-SQL语句构成的,并且,我们需要了解一些关于函数、过程的概念,因为我们需要在应用程序中调用存储过程,就像我们调用应用程序的函数一样,不过调用的方法有些不同。

  下面我们来看一下存储过程的建立和使用方法。

一、创建存储过程

  和数据表一样,在使用之前我们需要创建存储过程,它的简明语法是:

QUOTE:
CREATE PROC 存储过程名称
    [参数列表(多个以“,”分隔)]
AS
SQL 语句


例:

QUOTE:
CREATE PROC upGetUserName
@intUserId        INT,
@ostrUserName NVARCHAR(20) OUTPUT                -- 要输出的参数
AS
BEGIN
        -- 将uName的值赋给 @ostrUserName 变量,即要输出的参数
        SELECT @ostrUserName=uName FROM uUser WHERE uId=@intUserId
END


  其中 CREATE PROC 语句(完整语句为CREATE PROCEDURE)的意思就是告诉SQL SERVER,现在需要建立一个存储过程,upGetUserName 就是存储过程名称,@intUserId 和 @ostrUserName 分别是该存储过程的两个参数,注意,在SQL SERVER中,所有用户定义的变量都以“@”开头,OUTPUT关键字表示这个参数是用来输出的,AS之后就是存储过程内容了。只要将以上代码在“查询分析器”里执行一次,SQL SERVER就会在当前数据库中创建一个名为“upGetUserName”的存储过程。你可以打开“企业管理器”,选择当前操作的数据库,然后在左边的树型列表中选择“存储过程”,此时就可以在右边的列表中看到你刚刚创建的存储过程了(如果没有,刷新一下即可)。

二、存储过程的调用

  之前我们已经创建了一个名为“upGetUserName”的存储过程,从字面理解该存储过程的功能是用来取得某一个用户的名称。存储过程建立好了,接下来就是要在应用程序里调用了,下面看一下在ASP程序里的调用。

QUOTE:
Dim adoComm
'// 创建一个对象,我们用来调用存储过程
Set adoComm = CreateObject("ADODB.Command")
With adoComm
        '// 设置连接,设 adoConn 为已经连接的 ADODB.Connection 对象
        .ActiveConnection = adoConn
        '// 类型为存储过程,adCmdStoredProc = 4
        .CommandType = 4
        '// 存储过程名称
        .CommandText = "upGetUserName"
        '// 设置用户编号
        .Parameters.Item("@intUserId").Value = 1
        '// 执行存储过程
        .Execute
       
        '// 取得从存储过程返回的用户名称
        Response.Write "用户名:" & .Parameters.Item("@ostrUserName").Value
End With
'// 释放对象
Set adoComm = Nothing


  通过以上两步,我们已经可以创建和使用简单的存储过程了。下面我们来看一个稍微复杂点的存储过程,以进一步了解存储过程的应用。

三、存储过程的实际应用

  用户登录在ASP项目中经常会使用到,相信很多朋友也都做过类似的系统,但使用存储过程来做验证朋友可能不多,那么我们就以它来做例子,写一个简单的用户登录验证的存储过程。

QUOTE:
CREATE PROC upUserLogin
@strLoginName        NVARCHAR(20),
@strLoginPwd        NVARCHAR(20),
@blnReturn                BIT OUTPUT
AS
-- 定义一个临时用来保存密码的变量
DECLARE @strPwd NVARCHAR(20)
BEGIN
        -- 从表中查询当前用户的密码,赋值给 @strPwd 变量,下面要对他进行比较
        SELECT @strPwd=uLoginPwd FROM uUser WHERE uLoginName=@strLoginName

        IF @strLoginPwd = @strPwd
                BEGIN
                        SET @blnReturn = 1
                        -- 更新用户最后登录时间
                        UPDATE uUser SET uLastLogin=GETDATE() WHERE uLoginName=@strLoginName
                END
        ELSE
                SET @blnReturn = 0
END


  用户登录的存储过程建立好了,现在在程序里试一下吧。注意,在一个区域内如果有多条语句时,必需使用BEGIN...END关键字。

QUOTE:
Dim adoComm
'// 创建一个对象,我们用来调用存储过程
Set adoComm = CreateObject("ADODB.Command")
With adoComm
        '// 设置连接,设 adoConn 为已经连接的 ADODB.Connection 对象
        .ActiveConnection = adoConn
        '// 类型为存储过程,adCmdStoredProc = 4
        .CommandType = 4
        '// 存储过程名称
        .CommandText = "upUserLogin"
        '// 设置登录名称
        .Parameters.Item("@strLoginName").Value = "admin"
        '// 设置登录密码
        .Parameters.Item("@strLoginPwd").Value = "123456"
        '// 执行存储过程
        .Execute
       
        '// 判断是否登录成功
        If .Parameters.Item("@blnReturn").Value = 1 Then
                Response.Write "恭喜你,登录成功!"
        Else
                Response.Write "不是吧,好像错了哦。。。"
        End If
End With
'// 释放对象
Set adoComm = Nothing


  通过以上的步骤,简单用户登录验证过程也做完了,现在只要把它整合到程序中就可以实现简单的用户登录验证了,关于其他细节就由你自己来处理了。
  上面介绍的两个存储过程都是只返回一个值的,下面我们来看一个返回一个记录集的存储过程。

QUOTE:
CREATE PROC upGetUserInfos
@intUserGroup        INT
AS
BEGIN
        -- 从数据库中抽取符合条件的数据
        SELECT uName,uGroup,uLastLogin FROM uUser WHERE uGroup=@intUserGroup
        -- 插入一列合计
        UNION
        SELECT '合计人数:',COUNT(uGroup),NULL FROM uUser WHERE uGroup=@intUserGroup
END


  现在我们来看一下ASP程序的调用。

QUOTE:
Dim adoComm
Dim adoRt
'// 创建一个对象,我们用来调用存储过程
Set adoComm = CreateObject("ADODB.Command")
Set adoRs = CreateObject("ADODB.Recordset")
With adoComm
        '// 设置连接,设 adoConn 为已经连接的 ADODB.Connection 对象
        .ActiveConnection = adoConn
        '// 类型为存储过程,adCmdStoredProc = 4
        .CommandType = 4
        '// 存储过程名称
        .CommandText = "upGetUserInfos"
        '// 设置用户组
        .Parameters.Item("@intUserGroup").Value = 1
        '// 执行存储过程,和以上几个例子不同,这里使用RecordSet的Open方法
        adoRs.Open adoComm
        '// 显示第一个值
        Response.write adoRs.Fields(0).Value
End With
'// 释放对象
Set adoRs = Nothing
Set adoComm = Nothing


  怎么样,是不是也很简单呢,不过存储过程的用处不仅仅只有这些,他还有更强大的功能,比如使用游标、临时表来从多个表,甚至是多个数据库中调用数据,然后返回给用户,这些你可以在使用过程中慢慢的去发掘。

iOS Certificates, Identifiers & Profiles简介 1. Certificates Certificates是生成开发和生产所需的证书。 2.1 certSigningRequest文件 生成证书前,需要先生成certSigningRequest文件,certSigningRequest文件由【钥匙串访问】生成。 选择菜单【钥匙串访问】,【证书助理】下的【从证书颁发机构请求证书…】 填写【用户电子邮件地址: 】,将【请求是:】的选项改为【储存到磁盘】 输入certSigningRequest文件的文件名,并指定保存位置。 保存certSignin 阅读详情

相关推荐

ABB机器人姿态与四元数(笔记)

通常使用机器人作业时,机器人的法兰轴(5轴)往往是垂直与作业平面的,此时需要将机器人的姿态调整(示教)到垂直于工作平面的状态,然后记录当前的姿态,作为之后作业的参考标准姿态。不同机器人表示控件姿态的方式不一样,但也无外乎3中:旋转矩阵、欧拉角和四元数。 ABB机器人使用的是四元数(可转欧拉角)作为机器人控件姿态的表示方式。这里主要是记录在不通过示教的方式下,如何定义四元数,使机器人达到垂直于工作平面的姿态。 5轴竖直向下(常用):此时,各轴角度为 [0,0,0,0,9...

Zythonista的博客 1万+

数据库中创建视图和索引还有存储过程起什么作用?

视图可以被看成是虚拟表或存储查询。可通过视图访问的数据不作为独特的对象存储在数据库内。数据库内存储的是 SELECT 语句。SELECT 语句的结果集构成视图所返回的虚拟表。用户可以用引用表时所使用的方法,在 Transact-SQL 语句中通过引用视图名称来使用虚拟表。使用视图可以实现下列任一或所有功能: 将用户限定在表中的特定行上。 例如,只允许雇员看见工作跟踪表内记录其工作的行。 将用户限定

峰不疯 1731

数据清洗(Data Cleansing)

数据清洗(Data Cleansing)是指对数据进行处理和纠错,以去除或修复数据集中存在的错误、不致、不完整和冗余的数据,从而使数据更加准确、可靠和有用。数据清洗是数据处理和数据分析中一个非常重要的步骤,它可以帮助我们提高数据的质量,从而提高数据分析和机器学习的准确性和可靠性。数据清洗是一个重要的过程,它可以帮助我们提高数据的质量,从而提高数据分析和机器学习的准确性和可靠性。在实际应用中,我们可以使用一些工具和技术来实现数据清洗,例如 Pandas、NumPy 和 OpenRefine 等。通过数据清洗,

meimei169500的博客 1万+

27.存储过程

【1】什么是存储过程(Stored Procedure) 通过前面章节的学习,我们已经知道SQL是一种非常便利的语言。从数据库抽取数据,或者对特定的数据集中更新时,都能通过简洁直观的代码实现。 但是这个所谓的“简洁”也是有限制,SQL基本是一个命令实现一个处理,是所谓的非程序语言。 在不能编写流程的情况下,所有的处理只能通过一个个命令来实现。当然,通过使用连接及子查询,即使使用SQL的单一命令也能实现一些高级的处理,但是,其局限性是显而易见的。例如,在SQL中就很难实现针对不同条件进行不同的处理以及循环等功

qq_61783164的博客 1001

西门子TM PosInput1模块SSI编码器配置与速度测量实战

本文详细介绍了西门子TM PosInput1模块配置SSI绝对值编码器的实战步骤,涵盖硬件组态、工艺对象配置、编程实现与速度测量优化。重点解析了高分辨率编码器的数值处理技巧和常见调试问题,帮助工程师快速实现高精度位置与速度检测,提升自动化项目效率。

emacs5lisp的博客 340

基于javaEE的图书管理系统

极简的图书管理系统,无任何样式修饰,适合新手练手(图文并释) 1、实现了用户注册、登录,图书的添加、修改、删除和修改操作 2、工具需要:eclipse、mysql、Tomcat 3、做系统之前在eclipse需要配置Tomcat服务器和导入mysql连接数据库的jar包 4、数据库中建一个user表存用户信息,一个book表存图书信息 一、各种页面 index.html文件,系统运行的首页,有登录...

qq_44357792的博客 2万+

视图、索引、存储过程优缺点

1.视图(1).什么是视图?视图(View)作为一种数据库对象,为用户提供了一个可以检索数据表中的数据方式。用户通过视图来浏览数据表中感兴趣的部分或全部数据,而数据的物理存储位置仍然在表中。视图是一个虚拟表,并不代表任何物理数据,只是用来查看数据的窗口而已。视图并不是以一组数据的形式存储在数据库中,数据库中只存储视图的定义,而不存储视图对应的数据,这些数据仍存储在导出视图的基本表中。当基本表中的数...

weixin_34391445的博客 694

老服务器焕新记:在Dell R730上折腾Nvidia K80显卡的完整记录(含Anaconda环境配置)

本文详细记录了在Dell R730服务器上为Nvidia K80计算卡安装驱动、配置CUDA及Anaconda环境的完整过程。文章重点解决了老旧硬件与CentOS 7系统的兼容性问题,提供了从BIOS设置、驱动版本精准匹配到Python机器学习环境搭建的实战指南,旨在帮助读者低成本挖掘旧服务器的GPU计算潜力。

weixin_29197835的博客 503

存储过程与视图的区别

储过程是程序化的sql可以实现一般sql不能实现的功能,而试图则不能能 3、视图与存储过程的区别 视图仅仅用来查询,而存储过程可以用来增删改查; 视图是数据库的一张虚拟表,可以像表一样使用,而存储过程本质来说还是在执行SQL语句。 ...

secret の bolg 5229

刷题单向链表

实现一个数据结构,维护一张表(最初只有一个元素 11)。接下来 qq 行,每行表示一次操作,操作具体间题目描述。a[i] 里面放的是下一个元素,为0代表链表结束。如单链表1->4 -> 2->3->0用数组表示是。对于每个操作 2,输出一个数字,用换行隔开。第一行一个整数 qq 表示操作次数。

power的专栏 1714

Orange3实战教程:文本挖掘---主题建模

主题建模通过LDA、LSI或HDP算法分析文档集合,自动发现隐含主题结构。组件输入为文档语料库,输出包括带主题权重的语料库、主题词分布及完整主题数据。不同算法特性各异:LSI允许正负权重但解释性较弱,LDA更易解释,HDP参数复杂需谨慎设置。结果可结合词云、热力图等可视化工具分析主题特征及分布。示例显示如何通过预处理文本、选择算法(如提取5个LDA主题),并利用MDS和箱线图探索主题间关系及关键词分布。

err2008的专栏 365

数据库的 索引 视图 存储过程 触发器

索引索引会加速查询, 但是会使增删改变慢 , 每次都要更新索引根据需求建索引, 经常查询的属性索引相当于是一个目录, 可以加速查询提升查询效率索引是典型的空间换时间的技术,增加了索引是的查询更加快捷查询到想要的内容 -- 创建索引   自动给 主键 和外键 加索引 create index IDxStudent on TbEmp(ename); --           给索引命...

zhang_Ming_lu的博客 4万+

Stable Diffusion 模型分享:Indigo Furry mix(人类与野兽的混合)

Indigo Furry mix 是一个混合模型,出的图具有雄性人类的体型和野兽的形态。条目内容类型大模型基础模型SD 1.5来源CIVITAI作者indigowing文件名称文件大小1.99GB。

水滴的博客 1831

MySQL 学习笔记(二):数据库更新、视图和数据控制

基础准备: 在 school 数据库下建立student、course、sc 三个表: create table student( Sno char(9) primary key, Sname char(20) unique, Ssex char(2), Sage int, Sdept char(20)); create tabl...

weixin_34061482的博客 201

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

OOracle02视图、索引、循环、游标、存储过程、存储函数、触发器

视图 —视图的概念:视图就是提供一个查询的窗口,所有数据来自于原表。 —查询语句创建表 create table emp as select * from scott.emp; select * from emp; —创建视图【必须有dba权限】 create view v_emp as select ename, job from emp; —查询视图 select * from v_emp; —修改视图[不推荐] update v_emp set job=‘CLERK’ where ename=‘ALL

weixin_45636163的博客 224

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

发现了视图和存储过程的好处

以前在学校,视图和存储过程老师几乎都不讲(可能那些老师水平有限),以前做一些小项目也不用,把sql直接写入代码中如:with data.con dobegin    close;    sql.clear;    sql.add(sql语句);    open;end;这理解起来简单得很,可是俺老碰到很复杂的sql,比如生日提醒:create proc up

Hank's Techblog 816

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

mysql视图和存储过程

MySQL作为一个强大的关系型数据库管理系统,提供了许多高级功能,其中包括视图、存储过程和函数。这些功能使得数据库的管理和操作变得更加灵活和高效。在本文中,我们将探讨MySQL视图、存储过程和函数的定义、用途以及如何创建和使用它们。一个是 view。它是一个用查询语句定义的虚拟表,在调用的时候执行查询语句并生成结果。创建视图的语法是 create view … ,而它的查询方法与表一样。通俗来讲,视图只保存了查询的 SQL 逻辑,不保存查询结果。

m0_66316879的博客 1382

视图,存储过程和函数

视图 一、含义 视图(VIEW)也被称作虚表,即虚拟的表,是一组数据的逻辑表示,其本质是对应于一条SELECT语句,结果集被赋予一个名字,即视图名字。 视图本身并不包含任何数据,它只包含映射到基表的一个查询语句,当基表数据发生变化,视图数据也随之变化。 好处: 1、简化sql语句 2、提高了sql的重用性 3、保护基表的数据,提高了安全性 二、创建 create view 视图名 as ...

lopeasd 1406

连接表、视图和存储过程

定义:SQL 中对一组语句的封装,可通过一次定义,多次调用,像函数一样执行。结构组成:包含 SQL 语句、流控制语句(如循环、条件判断等)。使用方式CREATE PROCEDURE proc_name ([参数])BEGIN-- 语句块END。

2301_81948543的博客 907

MySQL学习笔记7——视图和存储过程

视图是一种虚拟表,我们可以把一段查询语句作为视图存储在数据库中,在需要的时候,可以把视图看做一个表, 对里面的数据进行查询。创建视图语法结构: 现在,假设我们要查询一下商品的每日销售明细,这就要从销售流水表(demo.mytrans) 和商品信息表(demo.goodmaster)中获取到销售数据和对应的商品信息数据:销售流水表(mytrans): 商品信息表(goodmaster): 在不使用视图的情况下,我们可以通过对销售流水表和商品信息表进行关联查询,得到每天商品销售统计的结果,包括销售日期、商品

qq_44778824的博客 1659

使用SQL创建视图和存储过程

文章目录1.定义所有女生信息的视图“F_Student”(5分)2.通过视图“F_Student”查询小于18岁的女生人数。(5分)3.定义“计算机系”学生的视图”CS_Student”,并要求透过该视图进行的更新操作只涉及计算机系学生。(5分)4.通过视图CS_Student插入一条学生记录,数据自拟,插入的数据在Sdept是否有限制?(5分)6.建立选修了“数据库原理”这门课的学生信息视图“D...

令狐_JackieHao的博客 3348

存储过程和视图的区别

SQL里面不带参数的存储过程与视图的区别1、存储过程是程序化的sql可以实现一般sql不能实现的功能。 如:先检索一个表得到一些数据,经过一定的编辑后更新到另外一个表中、这就可以用不带参数的存储过程实现。 2、视图是虚拟表,不存储数据,存储的是sql,检索他的时候实际上是执行定义它的sql语句。说明:从你的问题上可以看出,你使用存储过程仅仅是用它检索数据,所以你会产生这样的疑问,一定要记住,存...

weixin_34054931的博客 7449

MySQL视图和存储过程

一.视图: 视图是虚拟的表,与包含数据的表不一样,视图只包含使用时动态检索数据的查询。我们要知道视图仅仅是用来查看别处的数据的一种设施。视图本身不包含任何数据,因此视图返回的数据都是从其他表中检索出来的。 创建出来的视图用法其实和基本表一样,可以对其进行各种查询和过滤操作。 下面看一个例子:创建了一个学生和课程的表的联结的视图,名为smy_view; CREATE VIEW smy_view AS SELECT student.*,sc.`C`,sc.`score` FROM student IN

apple_51801179的博客 2364

存储过程和视图

一、存储过程 SQL语句要先编译,然后再被执行。在大型数据库系统中,为了提高效率,将为了完成特定功能的SQL语句集进行编译优化后,存储在数据库服务器中,用户通过指定存储过程的名字来调用执行。 使用存储过程可以增强SQL语句的功能和灵活性,并且可以保证数据的安全性和完整性,同时存储过程可以使没有权限的用户在控制之下间接地存取数据库,也保证了数据的安全。 但存储过程不等同于函数,两者虽然本质上没有区...

up 1301

mysql视图及存储过程

视图(view)是一种虚拟存在的表,视图中的数据并不在数据表中实际存在,行和列数据来自定义视图的查询中使用的表(基础表),并且在使用视图时动态生成的存储过程是数据库中的一个重要对象,其可以封装sql语句集,可以用来完成一些较为复杂的业务逻辑并且可以入参出参类似于java中方法的书写。(创建时会先编译后保存,用户后续调用不需要再次编译)...

m0_60027772的博客 3100
上一篇: 数据绑定时 Eval 和 Bind 的区别
下一篇: DataSet和DataReader
simoGAO
博客等级 码龄19年 3粉丝 30原创
评论 2
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值