2016年11月20日--存储过程、视图

存储过程:

存储过程(stored procedure)有时也称为sproc。存储过程存储于数据库中而不是在单独的文件中,有输入参数、输出参数以及返回值等。

在数据库中,创建存储过程和创建其他对象的过程一样,除了它使用的AS关键字外。

create proc 存储过程名  --创建存储过程   或    alter proc 存储过程名  --  修改存储过程

参数1 参数类型,参数2 参数类型……参数n 参数类型

as

begin---  ={

    查、插、删、改

end---  =}

  1 --存储过程
  2 create proc firstproc--创建一个存储过程
  3 as                                --存储过程关键字
  4 select * from student--存储过程的语句
  5 go
  6 --执行存储过程的语句(两个都可以)
  7 exec firstproc
  8 execute firstproc
  9
 10 --存储过程可以有返回值
 11 --定义一个变量去接收
 12 declare @fanhui int
 13 exec @fanhui = firstproc--需要执行之后才会有返回值,用变量接收
 14 select @fanhui as 返回值    --查看返回值
 15
 16 --修改存储过程的语句
 17 alter proc firstproc
 18 as
 19 select * from score
 20 go
 21
 22 --利用存储过程查找三个表内的信息
 23 create proc secondproc
 24 as
 25 select * from student
 26 select * from teacher
 27 select * from score
 28 go
 29
 30 --执行
 31 exec secondproc
 32
 33
 34
 35 --利用存储过程查找语文教师张晓华所教课程的学生的分数,
 36 --过80的算优秀,优秀人数超过3个人即为【教师评测达标】
 37 --若不到三个人,【不达标】
 38 create proc thirdproc
 39 as
 40 declare @code int
 41 select @code=code from teacher where name =‘张晓华‘
 42 declare @count int
 43 select @count= COUNT(*) from score where code
 44 in(select code from student where yujiao = @code)
 45 and yufen>80
 46 if @count >3
 47     print ‘教师评测达标‘
 48 else
 49     print ‘教师评测不达标‘
 50 go
 51
 52 exec thirdproc
 53
 54
 55 --带一个参数的存储过程
 56 create proc fourthproc
 57 @one char(10)    --as前面写上参数的名称,类型
 58 as
 59     print @one--存储过程中就可以使用上面的变量
 60 go
 61 --执行
 62 exec fourthproc ‘你好啊‘ --执行时需要将此参数传给存储过程
 63
 64 --带两个参数的存储过程
 65 create proc fifthproc
 66 @two varchar(50),   --两个参数或者多个参数时中间用,隔开
 67 @three varchar(50)
 68 as
 69     print @two + @three
 70 go
 71 --执行
 72 exec fifthproc ‘你好啊!‘,‘你在干嘛?‘--两个参数用逗号隔开
 73
 74
 75 --查询学号为我们输入的号码的学生的数学成绩
 76 create proc sixproc
 77 @one int
 78 as
 79 select shufen from score where code=@one
 80 go
 81 --执行
 82 exec sixproc 8
 83
 84
 85 --练习:存储过程
 86 --查看所输入编号的学生是否能够结业,两门以上及格即可结业
 87 --三门都及格,【优秀】
 88 --两门及格,【结业】
 89 --一门及格,【不结业】
 90 --三门都不及格,【请重修】
 91 create proc eighthproc
 92 @code int
 93 as
 94 declare @yu decimal(18,2),@shu decimal(18,2),@ying decimal(18,2)
 95 select @yu=yufen from score where code=@code  --分别查询语数英的分数
 96 select @shu=shufen from score where code=@code
 97 select @ying=yingfen from score where code=@code
 98 declare @count int--定义标记变量
 99 set @count=0            --标记变量在下面需要先使用再赋值,所以先给他为0
100 if @yu>=60        --判断语数英是否及格
101     set  @count=@count+1--及格的时候count+1
102  if @shu>=60
103     set  @count=@count+1
104 if @ying>=60
105     set  @count=@count+1
106
107 if @count=3--判断count的值:判断几门课及格
108     print ‘优秀‘
109 else if @count=2
110     print ‘结业‘
111 else if @count=1
112     print ‘不结业‘
113 else
114     print ‘请重修‘
115 go
116 exec eighthproc 6
117
118
119
120 --不带参数带返回值的存储过程
121 create proc elevenproc
122 as
123     return 5
124 go
125 --执行
126 --需要一个变量来接收这个返回值
127 declare @fan int
128 exec @fan= elevenproc
129 print @fan
130
131
132 --带参数,带返回值的存储过程
133 create proc twelveproc
134 @one int,
135 @two int
136 as
137     declare @sum int
138     set @sum = @one +@two
139     return @sum
140 go
141 --执行
142 declare @fanhuizonghe int
143 exec @fanhuizonghe = twelveproc 2,4
144 print @fanhuizonghe
145
146
147
148 --输入一个学生的学号,想要经过存储过程之后得到在这个学生的总分
149 create proc oneproc
150 @code int
151 as
152 declare @yu int
153 select @yu=yufen from score where code=@code
154 declare @shu int
155 select @shu=shufen from score where code=@code
156 declare @ying int
157 select @ying=yingfen from score where code=@code
158 declare @sum int
159 select @sum=@yu+@shu+@ying
160 return @sum
161 go
162 declare @fan int
163 exec @fan = oneproc 5
164 print @fan
165
166
167
168 --在创建存储过程时,我们可以设置它有一个默认值。
169 create proc twoproc
170 @sum int =10        --设置默认值
171 as
172     set @sum =@sum +10
173     return @sum
174 go
175 --执行
176 declare @sumfan int
177 exec @sumfan= twoproc --可以不写默认值的参数,或者写上default  缺省,默认
178 print @sumfan
179
180
181 --存储过程练习:输入一个数,求1~n的和
182 create proc threeproc
183 @shu int
184 as
185 declare @i int,@sum int
186 set @i=0
187 set @sum=0
188 while  @i<=@shu
189 begin
190     set @sum=@sum+@i
191     set @i=@i+1
192 end
193 return @sum
194 go
195 declare @he int
196 exec @he=threeproc 10
197 print @he
198
199
200 --存储过程练习:输入一个数求这个1!+2!+...+n!的阶乘
201 create proc cproc
202 @n  int
203 as
204    declare @i  int,@jie  int,@sum  int
205   set @i=1
206   set @jie=1
207   set @sum=0
208   while @i<=@n
209    begin
210       set  @jie*=@i
211       set @sum+=@jie
212       set @i=@i+1
213  end
214 return @sum
215 go
216
217 declare @jiefan  int
218 exec @jiefan=cproc  3
219 print @jiefan

示例

视图:

1.视图的概述       视图其实就是一条查询sql语句,用于显示一个或多个表或其他视图中的相关数据。视图将一个查询的结果作为一个表来使用,因此视图可以被看作是存储的查询或一个虚拟表。视图来源于表,所有对视图数据的修改最终都会被反映到视图的基表中,这些修改必须服从基表的完整性约束,并同样会触发定义在基表上的触发器。(Oracle支持在视图上显式的定义触发器和定义一些逻辑约束)

2.视图的存储       与表不同,视图不会要求分配存储空间,视图中也不会包含实际的数据。视图只是定义了一个查询,视图中的数据是从基表中获取,这些数据在视图被引用时动态的生成。由于视图基于数据库中的其他对象,因此一个视图只需要占用数据字典中保存其定义的空间,而无需额外的存储空间。

3.视图的作用

用户可以通过视图以不同形式来显示基表中的数据,视图的强大之处在于它能够根据不同用户的需要来对基表中的数据进行整理。视图常见的用途如下:

(1)通过视图可以设定允许用户访问的列和数据行,从而为表提供了额外的安全控制

(2)隐藏数据复杂性:视图中可以使用连接(join),用多个表中相关的列构成一个新的数据集。此视图就对用户隐藏了数据来源于多个表的事实。 

(3)简化用户的SQL 语句:用户使用视图就可从多个表中查询信息,而无需了解这些表是如何连接的。 

(4)以不同的角度来显示基表中的数据::视图的列名可以被任意改变,而不会影响此视图的基表 

(5)使应用程序不会受基表定义改变的影响::在一个视图的定义中查询了一个包含4 个数据列的基表中的3 列。当基表中添加了新的列后,由于视图的定义并没有被影响,因此使用此视图的应用程序也不会被影响。 

(6)保存复杂查询::一个查询可能会对表数据进行复杂的计算。用户将这个查询保存为视图之后,每次进行类似计算只需查询此视图即可。

(7)逻辑数据独立性::视图可以使应用程序和数据库表在一定程度上独立。如果没有视图,应用一定是建立在表上的。有了视图之后,程序可以建立在视图之上,从而程序与数据库表被视图分割开来。

示例1:将下列两个语句写成一个语句

示例2:利用语句来建立视图,将示例1中的语句写进视图中

示例3:利用鼠标来建立视图的过程

在视图上右击选择新建视图,

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

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

保存完毕后就可以利用语句直接调用视图。视图就是一个虚拟的新建表。

时间: 2024-10-05 01:41:22

2016年11月20日--存储过程、视图的相关文章

2016年11月20日 星期日 --出埃及记 Exodus 20:11

For in six days the LORD made the heavens and the earth, the sea, and all that is in them, but he rested on the seventh day. Therefore the LORD blessed the Sabbath day and made it holy. 因为六日之内,耶和华造天,地,海,和其中的万物,第七日便安息,所以耶和华赐福与安息日,定为圣日.

软考高项学员:2016年4月20日作业

软考高项学员:2016年4月20日作业 一.战略管理1.企业战略的特点有哪些?2.企业战略决策的特点有哪些?3.战略管理分为哪三步?(记)4.组织的使包括组织哲学和组织宗旨,请写下2者的定义.5.要确定一个组织的宗旨,首先做什么?(记)6.什么是长期目标,什么是短期目标?7.战略制订包括哪五个步骤?(记)8.战略分析中的外部分析有哪些?9.宏观趋势分析包括哪些?请列出名称,并简述之.10.行业分析包括哪些?11.五力模型认为,行业中的竞争包括哪五种基本的竞争力量?(记)(可以参看图20.1五力模

struts2练习时犯的错误(2016年11月4日)

1.Tomcat启动时报错 严重: 文档无效: 找不到语法. at (null:3:8) org.xml.sax.SAXParseException; systemId: file:/F:/Program%20Files%20(x86)/Tomcat%206.0/webapps/struts2_11_4/WEB-INF/classes/struts.xml; lineNumber: 3; columnNumber: 8; 文档无效: 找不到语法. 错误原因:struts.xml中忘记写<!DOC

2016年5月20日~21日,杨学明老师为北京某著名上市企业提供内训课程服务!

2016年5月20日~21日,在北京市中关村软件园,杨学明老师为北京某著名上市企业提供内训课程服务!20日上午9点,人力资源部曹经理宣布课程准时开始,在大家一片掌声中,杨学明老师开始了为期了两天的<软件测试需求分析与测试用例设计>的课程.杨学明老师分别从软件测试的概论.软件测试需求分析.软件测试设计的五个维度.基于质量属性的测试设计.测试缺陷分析与度量.课程总结等几个维度讲述了软件测试设计的内容.课程中有电影,FLASH,研讨和问答等环节,并且安插了许多游戏环节,整个课程十分丰富而多彩,学员普

2019-03-18 Python time 将2015年11月20日转换为2015-11-20

#ReportingDate = soup.select('body > div.main > div > div.ctr > div.recruit > ul > li > a')[0].text.split('(')[-1].split(')')[0] ReportingDate ="2015年11月20日" array = time.strptime(ReportingDate, u"%Y年%m月%d日") try:

tmux使用——2019年11月20日16:40:15

1.tmux 命令行的典型使用方式是,打开一个终端窗口(terminal window,以下简称"窗口"),在里面输入命令.用户与计算机的这种临时的交互,称为一次"会话"(session) . 会话的一个重要特点是,窗口与其中启动的进程是连在一起的.打开窗口,会话开始:关闭窗口,会话结束,会话内部的进程也会随之终止,不管有没有运行完. 一个典型的例子就是,SSH 登录远程计算机,打开一个远程窗口执行命令.这时,网络突然断线,再次登录的时候,是找不回上一次执行的命令的

2016年11月19日 星期六 --出埃及记 Exodus 20:10

but the seventh day is a Sabbath to the LORD your God. On it you shall not do any work, neither you, nor your son or daughter, nor your manservant or maidservant, nor your animals, nor the alien within your gates. 但第七日是向耶和华你 神当守的安息日.这一日你和你的儿女,仆婢,牲畜,并

2016年11月27日 星期日 --出埃及记 Exodus 20:18

When the people saw the thunder and lightning and heard the trumpet and saw the mountain in smoke, they trembled with fear. They stayed at a distance 众百姓见雷轰,闪电,角声,山上冒烟,就都发颤,远远地站立.

2016年11月26日 星期六 --出埃及记 Exodus 20:17

"You shall not covet your neighbor's house. You shall not covet your neighbor's wife, or his manservant or maidservant, his ox or donkey, or anything that belongs to your neighbor." 不可贪恋人的房屋,也不可贪恋人的妻子,仆婢,牛驴,并他一切所有的.