SQL 数据库 存储过程 视图
一、存储过程
1、概述
存储过程是一组编译在单个执行计划中的T-SQL语句
存储过程:就像函数一样的会保存在数据库中(可编程性)
存储过程的优点:
1、允许模块化程序设计
2、允许更快执行如果某操作需要大量T-SQL代码或需要重复执行,存储过程将比T-SQL批代码的执行要快。将在创建存储过程时对其进行分析和优化,并可以在首次执行该过程后使用该过程的内存中版本。
3、减少网络流量
4、一个需要数百行T-SQL代码的操作由一条执行过程代码的单独语句就可实现,而不需要在网络中发送数百行代码。
5、作为安全机制使用
2、编写
创建存储过程:
create proc JiaFa
--需要的参数
@a int,
@b int
as
--存储过程的内容
declare @c int;
set @c = @a + @b;
return @c;
go public int JiaFa(int a, int b)
{
int c = a+b;
return c;
}
--执行完毕后全部选中,执行创建
执行存储过程:
declare @f int;
exec @f = JiaFa 3,5;
print @f;
二、视图
1.视图的概述
视图其实就是一条查询sql语句,用于显示一个或多个表或其他视图中的相关数据。视图将一个查询的结果作为一个表来使用,因此视图可以被看作是存储的查询或一个虚拟表。视图来源于表,所有对视图数据的修改最终都会被反映到视图的基表中,这些修改必须服从基表的完整性约束,并同样会触发定义在基表上的触发器。(Oracle支持在视图上显式的定义触发器和定义一些逻辑约束)
2.视图的存储
与表不同,视图不会要求分配存储空间,视图中也不会包含实际的数据。视图只是定义了一个查询,视图中的数据是从基表中获取,这些数据在视图被引用时动态的生成。由于视图基于数据库中的其他对象,因此一个视图只需要占用数据字典中保存其定义的空间,而无需额外的存储空间。
3.视图的作用
用户可以通过视图以不同形式来显示基表中的数据,视图的强大之处在于它能够根据不同用户的需要来对基表中的数据进行整理。视图常见的用途如下:
(1)通过视图可以设定允许用户访问的列和数据行,从而为表提供了额外的安全控制
(2)隐藏数据复杂性:视图中可以使用连接(join),用多个表中相关的列构成一个新的数据集。此视图就对用户隐藏了数据来源于多个表的事实。
(3)简化用户的SQL 语句:用户使用视图就可从多个表中查询信息,而无需了解这些表是如何连接的。
(4)以不同的角度来显示基表中的数据::视图的列名可以被任意改变,而不会影响此视图的基表
(5)使应用程序不会受基表定义改变的影响::在一个视图的定义中查询了一个包含4 个数据列的基表中的3 列。当基表中添加了新的列后,由于视图的定义并没有被影响,因此使用此视图的应用程序也不会被影响。
(6)保存复杂查询::一个查询可能会对表数据进行复杂的计算。用户将这个查询保存为视图之后,每次进行类似计算只需查询此视图即可。
(7)逻辑数据独立性::视图可以使应用程序和数据库表在一定程度上独立。如果没有视图,应用一定是建立在表上的。有了视图之后,程序可以建立在视图之上,从而程序与数据库表被视图分割开来。
用代码创建视图

用鼠标建立视图

在弹出的页面选择要建立关系的表的名称,

选择需要的列的名称,并保存取名。

练习:
超市购物小票打印
create proc jinchuhuo
@code int,
@shu int
as
declare @name varchar(10)
declare @price decimal(18,2)
declare @time datetime
declare @count int
select @count=COUNT(*) from mendian where scode = @code
if @count =1
BEGIN
if @shu<=(SELECT sshu from mendian where scode=@code)
BEGIN
SELECT @name=sname,@price=sprice from mendian where scode=@code
insert into xiaopiao VALUES(@name,@price,@shu,@shu*@price,GETDATE())
UPDATE mendian set sshu=sshu-@shu where scode=@code
select top 1 * from xiaopiao order by pcode DESC
END ELSE
BEGIN
print '货物量不够,请及时补充'
select *from gongying where gcode=(select sgong from mendian where scode=@code)
end
END
ELSE
BEGIN
print '没有此物品' end
EXEC jinchuhuo 2,25
SQL 数据库 存储过程 视图的更多相关文章
- 我的sql数据库存储过程分页- -
以前用到数据库存储过程分页的时候都是用 not in 但是最近工作的时候,随着数据库记录的不断增大,发现not in的效率 真的不行 虽然都设置了索引,但是当记录达到10w的时候就发现不行了,都是需要 ...
- SQL数据库—<5>视图、索引…简单学习
视图 掌握:1.视图是个什么东西?2.会建视图,会查视图3.知道视图的主要功能是查询,不是增删除改. 视图的定义: 视图可以认为是从一个数据表或者多个数据表中导出的表,视图本身没有任何数据,它是用来存 ...
- SQL数据库存储过程
添加修改 create PROCEDURE sp_insert_1(pid int,pname varchar(200),page varchar(200),pscore int,out code i ...
- MS SQL 中判断 数据库, 存储过程,表,临时表,视图,函数,用户,用户创建对象 等是否存在 SQL脚本
摘自: http://www.111cn.net/database/mssqlserver/39107.htm sql判断存储过程是否存在 判断数据库教程是否存在 Sql代码 if exists (s ...
- 刷新SQL Server所有视图、函数、存储过程
刷新SQL Server所有视图.函数.存储过程 更多 sql 此脚本用于在删除或添加字段时刷新相关视图,并检查视图.函数.存储过程有效性. [SQL]代码 --视图.存储过程.函数名称 DE ...
- 刷新SQL Server所有视图、函数、存储过程 更多 sql 此脚本用于在删除或添加字段时刷新相关视图,并检查视图、函数、存储过程有效性。 [SQL]代码 --视图、存储过程、函数名称 DECLARE @NAME NVARCHAR(255); --局部游标 DECLARE @CUR CURSOR --自动修改未上状态为旷课 SET @CUR=CURSOR SCROLL DYNAMIC FO
刷新SQL Server所有视图.函数.存储过程 更多 sql 此脚本用于在删除或添加字段时刷新相关视图,并检查视图.函数.存储过程有效性. [SQL]代码 --视图.存储过程.函数名称 DE ...
- 在易语言中调用MS SQL SERVER数据库存储过程方法总结
Microsoft SQL SERVER 数据库存储过程,根据其输入输出数据,笼统的可以分为以下几种情况或其组合:无输入,有一个或多个输入参数,无输出,直接返回(return)一个值,通过output ...
- 存储过程系列之存储过程sql数据库调用和程序代码调用
1.存储过程,无参数的存储过程 创建无参数存储存储过程 Create Procedure DCEMREMR_TEMPLATEAs SELECT TOP 10 [FILENAME],[FILETITLE ...
- 数据库存储过程 — Sql Server
Mysql.Oracle等主流关系型数据库基本都支持存储过程,这里使用Sql Server为例进行说明. 存储过程的概念: Sql Server存储过程 SQL Server 中的存储过程是由一个或多 ...
随机推荐
- PureBasic—数控编辑框与调节块和进度条
三个有关上下限问题的控件,它们也是主要控件的组成部分,分别为:SpinGadget() 数控编辑框TrackBarGadget() 调节块控件ProgressBarGadget() ...
- Lazarus IDE的几个小技术
delphi+cnpack用惯了,转移到lazarus有点难受是不是!其实,lazaurs的编辑器也是蛮强大的,支持代码补全,自动完成,模板编辑,多行缩进注释,选定代码后批量更改里面的单词!目前,我知 ...
- android ListView详解继承ListActivity
[转]http://www.cnblogs.com/allin/archive/2010/05/11/1732200.html 在android开发中ListView是比较常用的组件,它以列表的形式展 ...
- 低功耗蓝牙4.0BLE编程-nrf51822开发(5)-链路层
链路层定义设备处于状态机中五种状态的一种: (1)旁路状态: 处于此状态下的设备不发送或接收数据,处于其它状态下都可以转到此状态. (2)广告状态: 处于此状态的设备发送广播包或者监听.响应广播包.可 ...
- 图算法(一)——基本图算法(BFS,DFS及其应用)(2)
2)DFS 深度优先搜索总是对最近发现的节点v的出发边进行搜索,直到该节点的所有出发边都被发现 一旦节点v的所有出发边都被发现,搜索回溯到v的前驱结点进行 实现细节:时间戳 每一个结点有一个发现时间和 ...
- Hue协作框架
http://archive.cloudera.com/cdh5/cdh/5/hue-3.7.0-cdh5.3.6/manual.html 一:框架 1.支持的框架 ->job ->yar ...
- 101个LINQ示例,包含几乎全部操作
Restriction Operators Where - Simple public void Linq1() { , , , , , , , , , }; var lowNums = from n ...
- SqlServer2008R2 如何插入多条数据
列id 为自增列 insert into Websites2values('Google','https://www.google.cm/','USA',1),('淘宝','https://www.t ...
- windows7 密码保护 共享文件
windows7 密码保护 共享文件 2台windows7之间设置文件共享,本想使用ftp,但是配置指定用户连接,配置权限比较繁琐. 所以就想到使用window7的文件共享,并设置密码,共享整个硬盘的 ...
- FTP文件夹打开错误,Windows无法访问此文件夹
错误提示: Windows 无法访问此文件夹,请确保输入的文件夹是正确的,并且你有权访问此文件夹. 解决方法/步骤如下 1.请确保输入的文件夹是正确的,并且你有权访问此文件夹.可以在浏览器 ...