数据库系统原理与开发-数据库存储过程
- 格式:pdf
- 大小:1.35 MB
- 文档页数:17
简述存储过程概念和作用
存储过程是一组预编译的SQL语句集合,它们被存储在数据库中,并可以通过一个单独的数据库调用执行。
存储过程通常用于执行特定的任务或操作,并且可以接受参数、返回值以及执行流程控制。
存储过程的作用有多个方面。
首先,它们可以提高数据库的性能和安全性。
通过将一组SQL语句打包成一个存储过程,可以减少网络通信开销,提高执行速度。
此外,存储过程可以实现数据库逻辑的封装,减少了对数据库的直接访问,从而提高了数据库的安全性。
其次,存储过程可以简化复杂的操作。
通过将一系列SQL语句封装在一个存储过程中,可以减少客户端和应用程序的复杂性,提高了代码的重用性和可维护性。
存储过程还可以实现特定的业务逻辑,简化了客户端和应用程序的开发过程。
此外,存储过程还可以提供数据一致性和完整性。
通过存储过程,可以确保特定的业务规则和约束得到执行,从而保证了数据的一致性和完整性。
存储过程还可以实现数据验证、清理和转换,确
保数据的质量和准确性。
最后,存储过程还可以提供安全性和权限控制。
数据库管理员可以通过存储过程来控制用户对数据库的访问和操作权限,从而保护敏感数据和防止恶意攻击。
总之,存储过程是数据库中非常重要的一部分,它可以提高数据库的性能和安全性,简化复杂的操作,确保数据的一致性和完整性,以及提供安全性和权限控制。
因此,存储过程在实际数据库应用中具有非常重要的作用。
第一章数据库系统概述本章学习重点:1.数据库系统的三级模式结构2.数据模型中概念层模型(E-R)模型域逻辑层模型(关系模型)第一节数据库基本概念一、数据(Data):是描述事物的符号记录,是指用物理符号记录下来的、可以鉴别的信息包括数字、字母、文字、特殊字符组成的文本数据,也可以是图形、图像、动画、影像、声音、语言等多媒体数据。
例如,日常生活和工作中使用的客户档案记录、商品销售记录等都是数据二、数据库(Database,简称DB)1.定义:是长期储存在计算机中的有组织的、可共享的(大量)数据集合2.数据库中存储的数据具有永久存储、有组织和可共享三个基本特点三、数据库管理系统(Data Management System,简称DBMS)数据库管理系统产生的时期是20世纪60年代后期DBMS必须具有将数据库从错误状态恢复到某一已知的正确状态的功能,这就是数据库的故障恢复1.定义:是位于应用程序(用户)与操作系统之间的一层数据管理软件2.主要功能(1)数据定义功能:提供数据定义语言(DDL)定义数据库中的数据对象例如:表、视图、存储过程、触发器等(2)数据操纵功能:提供数据操纵语言(DML)操纵数据实现对数据库的基本操作例如:查询、插入、删除和修改(3)数据库的运行管理:保证数据的安全性(用户只能使用视图定义中的数据,而不能使用视图定义外的其它数据)、完整性(数据的正确性、有效性和相容性,防止错误的数据进入数据库)、多用户对数据的并发使用以及发生故障后的系统恢复(4)数据库的建立和维护功能:创建数据库及对数据库空间的维护、数据库的备份与恢复功能、数据库的重组织功能和性能监视、分析等数据库恢复采用的方法:建立检查点、建立副本、建立日志文件(5)数据组织、存储和管理功能例如:索引查找、顺序查找(6)其他功能:主要包括与其他软件的网络通信功能、不同数据库管理系统之间的数据传输以及相互访问功能等四、数据库系统(Database System,DBS):是指在计算机中引入数据库技术之后的系统1.通常一个完整的数据库系统包括数据库、数据库管理系统及相关实用工具、应用程序、数据库管理员和用户2.数据库管理员(Database Administrator,DBA):专门负责对数据库进行维护,并保证数据库正常、高效运行第二节数据管理技术的发展一、人工管理阶段(20世纪50年代中期以前)特点:1.数据不保存2.应用程序管理数据3.数据面向应用注意:记录内无结构,整体无结构二、文件系统阶段(20世纪50年代后期到60年代中期)缺陷:数据冗余、数据不一致、数据联系弱特点:1.数据的管理者:文件系统,数据可长期保存2.数据面向的对象:某一应用程序3.数据的共享程度:共享性差、冗余度大4.数据的结构化:记录内有结构,整体无结构5.数据的独立性:独立性差,数据的逻辑结构改变必须修改应用程序6.数据控制能力:应用程序自己控制三、数据库系统阶段(20世纪60年代后期以来)特点:1.数据集成2.数据共享性高3.数据冗余度小4.数据一致性5.数据独立性高6.实施统一管理与控制7.减少应用程序开发与维护的工作量第三节数据库系统的结构一、数据库系统的三级模式结构1.模式:也称为概念模式或逻辑模式,它是数据库中全体数据的逻辑结构和特征的描述,是所有用户的公共数据视图2.外模式:也称为子模式(Subschema)或用户模式,它是数据库用户(包括应用程序员和最终用户)能够看见和使用的局部数据的逻辑结构和特征的描述DBMS提供子模式描述语言(Subschema DDL)来严格地定义子模式3.内模式:也称为存储模式(Storage Schema),它是对数据库中数据物理结构和存储方式的描述,是数据在数据库内部的表示形式4.三级模式结构的两层映像与数据独立性(1)外模式/模式映像(逻辑独立性)(2)模式/内模式映像(物理独立性)数据独立性:不会因为系统数据库存储(物理)结构与数据逻辑结构的变化而影响应用程序二、数据库系统的运行与应用结构1.客户/服务器(Client/Server,C/S)模式(需要下载)例如:QQ、桌面客户端游戏2.浏览器/服务器(Browser/Server,B/S)模式例如:网站、在线web游戏第四节数据模型一、数据特征与数据模型组成要素1.数据结构:描述的是系统的静态特性及数据对象的数据类型、内容、属性以及数据对象之间的联系2.数据操作:描述的是系统的动态特性,是对各种对象的实例允许执行的操作的集合,包括操作及有关的操作规则3.数据约束:描述数据结构中数据间的语法和语义关联,包括相互制约与依存关系以及数据动态变化规则,以保证数据的正确性,有效性与相容性二、数据模型的分类1.概念层数据模型(1)信息世界中的基本概念A.实体(Entity): 客观存在并可相互区别的事物称为实体,可以是具体的人、事、物或抽象的概念,B.属性(Attribute):实体所具有的某种特性称为实体的属性,一个实体可以由多个属性来描述C.码或键(Key):唯一标识实体的属性集称为码D.域(Domain):属性的取值范围称为该属性的域E.实体型(Entity Type):用实体名及其属性名集合来抽象和刻画同类实体,称为实体型F.实体集(Entity Set):同型实体的集合称为实体集G.联系(Relationship):现实世界中事物内部以及事物之间的联系在信息世界中反映为实体内部的联系和实体之间的联系实体型间联系:★一对多1:N★一对一1:1★多对多N:M(2)概念模型的表示方法概念模型:用来描述现实世界的事物,与具体的计算机系统无关表达用户需求观点的数据全局逻辑结构的模型最典型的概念模型是实体联系(E-R)2.逻辑层数据模型(1)层次模型(2)网状模型(3)关系模型(4)面向对象模型在面向对象技术中,相同元素的有序集合,并且允许有重复的元素的复合数据类型是列表类型3.物理层数据模型:也称为数据的物理模型(Physical Model),其描述数据在存储介质上的组织结构,是逻辑模型的物理实现,即每一种逻辑模型在实现时都有与其相对应的物理模型逻辑模型是从数据库实现的观点出发,对数据建模第二章关系数据库本章学习重点:1.关系数据库的相关概念2.关系规范化理论,各个范式之间的转化关系第一节关系数据库概述系统而严格地提出关系模型的是美国IBM公司的E.F.Codd1.1970年提出关系数据模型2. E.F.Codd在1970年发表了论文《Communication of the ACM》3.之后,提出了关系代数和关系演算的概念4.1972年提出了关系的第一、第二、第三范式5.1974年提出了关系的BC范式关系数据库应用数学方法来处理数据库中的数据80年代后,关系数据库系统成为最重要、最流行的数据库系统典型实验系统:System R、University INGRES典型商用系统:ORACLE(占有率最高)、SYBASE、INFORMIX、IBM DB2课程中使用的是MySQL第二节关系数据模型一、关系数据结构关系模型的数据结构非常简单,只包含单一的数据结构,即关系基本术语:1.表(Table):表,也称为关系,是一个二维的数据结构,它由表名构成表的各个列(如学号、姓名等)及若干行数据(各个学生的具体信息)组成。
《数据库系统原理》实验指导书《数据库系统原理》实验指导书实验1 熟悉SQL Server 2000环境及数据库⽂件管理⼀、实验⽬的1、掌握登录SQL Server 2000的⽅法,熟悉SQL Server实⽤⼯具的使⽤;2、了解SQL Serve数据库的存储结构,掌握估算数据库⼤⼩技术;3、掌握创建数据库技术,掌握扩⼤和压缩数据库技术;4、掌握使⽤企业管理器⼯具和T-SQL语句及系统存储过程对数据库进⾏管理。
⼆、实验要求1、熟悉SQL Server 2000的⼯作环境,了解SQL Server主要管理⼯具的⽤途和使⽤⽅法。
2、掌握在SQL Server 2000环境下,利⽤企业管理器和T-SQL语⾔创建和管理数据库的⽅法。
三、实验设备、环境设备:奔腾II或奔腾II以上计算机环境:WINDOWS 98或WINDOWS NT、SQL SERVER 2000中⽂版四、实验原理、⽅法上机操作五、实验步骤及内容(⼀)实验步骤1、教师讲授2、教师演⽰3、学⽣实际操作(⼆)实验内容1、熟悉SQL Server 2000管理⼯具(1)企业管理器(Enterprise Manager)(2)查询分析器(Query Analyzer)(3)服务管理器(Service Manager)(4)事件探查器(Profiler)(5)导⼊和导出数据(Import and Export Data)(6)SQL Server其他管理⼯具2、数据库⽂件管理(1)数据库的创建和删除。
①在企业管理器中建⽴⼀个图书读者库。
图书读者数据库中将包括⼀个数据⽂件和⼀个⽇志⽂件,各⽂件的属性见表1-1。
②删除上题所建的数据库然后⽤T-SQL语句重新创建。
(2)修改数据库①查看图书读者数据库的属性及数据⽂件和⽇志⽂件的空间使⽤情况。
②在企业管理器中,⾸先扩⼤图书读者数据库的主数据⽂件的⼤⼩,然后查看扩⼤后的数据库属性,接着收缩主数据⽂件到定义时的⼤⼩。
数据库原理及应用实验教案一、实验目的1. 理解数据库的基本概念,掌握数据库的基本操作。
2. 熟悉数据库管理系统,了解数据库设计原则。
3. 学会使用SQL语言进行数据的增、删、改、查等操作。
4. 掌握数据库的索引、视图和存储过程等高级功能。
5. 培养实际操作数据库的能力,提高解决实际问题的技能。
二、实验内容1. 数据库的创建与管理创建新数据库打开现有数据库数据库的备份与恢复2. 表的创建与管理表的创建表结构的修改表的删除表的数据插入、删除和修改3. SQL语言基础数据定义语句(CREATE、ALTER、DROP)数据查询语句(SELECT)数据操纵语句(INSERT、UPDATE、DELETE)数据控制语句(GRANT、REVOKE)4. 索引与约束索引的创建、修改和删除主键、外键的设置与维护唯一约束和检查约束的设置5. 视图与存储过程视图的创建、修改和删除存储过程的创建、修改和删除存储过程的调用三、实验环境1. 硬件环境:计算机实验室,每台计算机配备数据库管理系统软件。
2. 软件环境:数据库管理系统软件(如MySQL、Oracle、SQL Server 等),编程语言环境(如Python、Java等),文本编辑器或集成开发环境(如Visual Studio Code、Eclipse等)。
四、实验步骤1. 实验准备:安装并配置数据库管理系统软件,了解实验内容和要求。
2. 实验一:数据库的创建与管理创建一个名为“实验数据库”的新数据库。
打开已存在的数据库,进行备份和恢复操作。
3. 实验二:表的创建与管理创建一个名为“学生”的表,包括学号、姓名、年龄、性别等字段。
插入、删除和修改表中的数据。
4. 实验三:SQL语言基础使用SELECT语句查询学生表中的数据。
使用INSERT、UPDATE和DELETE语句操作学生表数据。
5. 实验四:索引与约束为学生表的学号字段创建索引。
设置主键、外键、唯一约束和检查约束。
《数据库原理》教案高技一、课程简介1.1 课程背景随着信息技术的快速发展,数据库技术已成为现代计算机系统的重要组成部分。
数据库原理课程旨在帮助学生了解并掌握数据库的基本概念、原理和技术,培养学生运用数据库技术解决实际问题的能力。
1.2 课程目标通过本课程的学习,学生将能够:(1)理解数据库的基本概念和原理;(2)掌握关系型数据库的设计和操作;(3)熟悉数据库管理系统的基本功能;(4)了解数据库技术的发展趋势。
二、教学内容2.1 数据库概述数据库的基本概念数据模型数据库系统的三级模式结构2.2 关系型数据库关系模型关系代数和SQL数据库设计原则2.3 数据库操作数据查询数据更新事务管理2.4 数据库管理系统的功能数据库的创建和管理用户权限管理备份与恢复三、教学方法3.1 讲授法通过讲解数据库的基本概念、原理和技术,使学生掌握数据库知识。
3.2 案例分析法分析实际案例,帮助学生理解数据库的应用场景和解决实际问题的能力。
3.3 实验操作法安排实验课程,让学生动手操作,巩固所学知识。
四、教学评价4.1 平时成绩包括课堂表现、作业完成情况等,占总评的30%。
4.2 期末考试包括选择题、填空题、简答题和案例分析题,占总评的70%。
五、教学计划5.1 课时安排共计32课时,其中理论课24课时,实验课8课时。
5.2 教学进度第1-4周:数据库概述和关系型数据库第5-8周:数据库设计原则和关系代数第9-12周:SQL和数据查询第13-16周:数据更新和事务管理第17-20周:数据库管理系统的功能第21-24周:案例分析和实验操作六、数据库设计原则与范式6.1 设计原则数据独立性数据完整性数据一致性数据共享性6.2 数据库范式第一范式(1NF)第二范式(2NF)第三范式(3NF)巴特卡规则七、关系代数与SQL7.1 关系代数选择(Selection)投影(Projection)连接(Join)除(Division)7.2 SQL基本操作数据查询(SELECT)数据更新(INSERT、UPDATE、DELETE)数据定义(CREATE、ALTER、DROP)数据控制(GRANT、REVOKE)八、数据库性能优化8.1 查询优化索引查询重写查询转换8.2 存储优化数据文件组织缓冲区管理磁盘I/O优化九、数据库安全与权限管理9.1 数据库安全用户认证访问控制数据加密9.2 权限管理用户角色权限分配与回收审计策略十、数据库发展趋势与新技术10.1 分布式数据库分布式数据库的概念分布式数据库的优缺点分布式数据库的实现技术10.2 云计算与大数据云计算数据库大数据技术数据仓库与OLAP10.3 数据库新技术内存数据库列存储数据库NoSQL数据库新型SQL数据库十一、数据库编程与应用11.1 数据库应用系统设计需求分析系统设计11.2 数据库编程技术存储过程触发器应用程序示例11.3 数据库应用开发工具集成开发环境(IDE)数据库访问接口(ODBC、JDBC)第三方库与框架十二、实验与实践12.1 实验目的与要求掌握数据库基本操作练习数据库设计与优化体验数据库应用开发12.2 实验内容数据库创建与管理数据表设计与操作存储过程与触发器编写数据库应用系统开发十三、案例分析13.1 案例一:企业员工信息管理系统需求分析系统实现13.2 案例二:在线书店数据库设计需求分析数据库设计系统实现十四、数据库项目实践14.1 项目概述项目背景项目需求项目目标14.2 项目实施数据库设计与实现系统开发与测试项目部署与维护14.3 项目评价功能完整性系统性能用户体验十五、课程总结与展望15.1 课程回顾主要知识点回顾实践技能总结15.2 数据库技术发展趋势新型数据库技术数据库与其他技术融合行业应用与创新15.3 课程建议与反馈教学方法改进教材与资源推荐学生学习建议重点和难点解析本文主要介绍了《数据库原理》课程的教案内容,包括课程简介、教学内容、教学方法、教学评价、教学计划等五个部分,以及后续的十五个章节。
答案仅供参考第一章数据库系统概述选择题B、B、A简答题1.请简述数据,数据库,数据库管理系统,数据库系统的概念。
P27数据是描述事物的记录符号,是指用物理符号记录下来的,可以鉴别的信息。
数据库即存储数据的仓库,严格意义上是指长期存储在计算机中的有组织的、可共享的数据集合。
数据库管理系统是专门用于建立和管理数据库的一套软件,介于应用程序和操作系统之间。
数据库系统是指在计算机中引入数据库技术之后的系统,包括数据库、数据库管理系统及相关实用工具、应用程序、数据库管理员和用户。
2.请简述早数据库管理技术中,与人工管理、文件系统相比,数据库系统的优点。
数据共享性高数据冗余小易于保证数据一致性数据独立性高可以实施统一管理与控制减少了应用程序开发与维护的工作量3.请简述数据库系统的三级模式和两层映像的含义。
P31答:数据库的三级模式是指数据库系统是由模式、外模式和内模式三级工程的,对应了数据的三级抽象。
两层映像是指三级模式之间的映像关系,即外模式/模式映像和模式/内模式映像。
4.请简述关系模型与网状模型、层次模型的区别。
P35使用二维表结构表示实体及实体间的联系建立在严格的数学概念的基础上概念单一,统一用关系表示实体和实体之间的联系,数据结构简单清晰,用户易懂易用存取路径对用户透明,具有更高的数据独立性、更好的安全保密性。
第二章关系数据库选择题C、C、D简答题1.请简述关系数据库的基本特征。
P48答:关系数据库的基本特征是使用关系数据模型组织数据。
2.请简述什么是参照完整性约束。
P55答:参照完整性约束是指:若属性或属性组F是基本关系R的外码,与基本关系S的主码K 相对应,则对于R中每个元组在F上的取值只允许有两种可能,要么是空值,要么与S中某个元组的主码值对应。
3.请简述关系规范化过程。
答:对于存在数据冗余、插入异常、删除异常问题的关系模式,应采取将一个关系模式分解为多个关系模式的方法进行处理。
一个低一级范式的关系模式,通过模式分解可以转换为若干个高一级范式的关系模式,这就是所谓的规范化过程。
《数据库系统原理》课程实验姓名:班级:学号:佛山科学技术学院计算机系2012年12月目录一、实验所需表格 (3)二、实验内容 (3)2.1实验一SQL数据定义 (3)2.2实验二SQL数据查询 (7)2.3实验三连接、嵌套和集合查询 (14)2.4实验四SQL的数据更新 (21)2.5实验五视图的建立和维护 (24)2.6实验六触发器和存储过程 (330)三、实验感想 (37)参考资料1.王珊萨师煊.《数据库系统概论》(第四版).高等教育出版社,20062.李存斌.数据库应用技术---SQL Server2000简明教程.中国水利水电出版社,2001一、实验所需表格学生-课程数据库xskc中用到的三个表文件如下:学生表:StudentSno(学号)Sname(姓名)Ssex(性别)Sage(年龄)Sdept(所在系)200215121李勇男20CS(计算机科学系)200215122刘晨女19CS(计算机科学系)200215123欧阳原野女18MA(数学系)200215125刘阳光男19IS(信息系)课程表:CourseCno(课程号)Cname(课程名)Cpno(先修课)Ccredit(学分)1数据库542数学23信息系统144操作系统635数据结构746数据处理27PASCAL64学生选课表:SCSno(学号)Cno(课程号)Grade(成绩)200215121192200215121285200215121388200215122290200215122380二、实验内容2.1实验一SQL数据定义一、实验目的和要求1.掌握利用SQL查询分析器和企业管理器进行数据库及基本表的定义、删除与修改;2.掌握索引的建立与删除的方法。
二、实验内容及结果(一)建立数据库通过查询分析器或企业管理器建立学生-课程数据库xskc。
create database xskcon(name=xskc_data,filename='e:\sjksy\xskc_data.mdf')log on(name=xskc_log,filename='e:\sjksy\xskc_log.ldf')注:先在E:盘上建立一个文件夹(例如:E:\sjksy),数据库文件保存到自建的文件夹中。
名词解释1.数据独立性:是指应用程序和数据库的数据结构之间相互独立,不受影响。
2.物理数据独立性:就是对内模式的修改尽量不影响逻辑模式,当然对外模式和应用程序的影响更小。
3.逻辑数据独立性:4.DBMS;是指数据库系统中对数据进行管理的软件系统,它是数据库的核心组成部分。
5.关键码;能唯一标识实体的属性或属性集;能唯一标识文件中每个记录的字段或字段集。
6.概念模型:表达用户需求观点的数据全局逻辑结构的模式型7.逻辑模型:表达计算机实现观点的DB全局逻辑结构的模型。
8.外部模型:表达用户使用观点的DB局部逻辑结构的模型。
9.内部模型:表的DB物理结构的模型。
10.,11.外模式:是用户与数据系统的接口,使用户用到的那部分数据的描述。
12.内模式:是数据库在物理方面的描述,定义所有内部记录类型,索引和文件的组织方式,以及数据控制方面的细节。
13.逻辑模式:是数据库中全部数据的整体逻辑结构的描述。
二.1数据库系统的生存期:数据库应用系统从开始规划,设计,实现,维护,到最后被新的系统取代而停止使用的整个时间。
2.DFD(数据流图):是从“数据”和“对数据的加工”两方面表达数据处理系统工作过程的一种图形表示法,具有直观,已于被用户和软件人员双方都能理解的一种表达系统功能的描述方式。
3.简单属性:是不可在分割的属性。
4.复合属性:是不可分解其他属性的属性。
三.1.数据冗余:是指同一数据在系统中多次重复出现。
2.数据依赖:对于当前关系r的任意两个元组,如果x值相同,则要求Y值也相同,即有一个X值就有一个Y值与之相对应,或者说Y 值由X值决定。
]3.平凡函数依赖:4.候选键:X是R的一个超键,如果X→U在R上成立,但对于X的任意一个真子集X1,都有X1→U不成立,那么称X1是R上的一个候选键。
5,无损分解:6第一范式:如果关系模式R的每个关系r的属性值都是不可分的原子值,那么称R是第一范式。
7.第二范式:如果关系R是1NF,且每个非主属性完全函数依赖候选键。
数据库原理与应用教材《数据库原理与应用》是一本介绍数据库原理和应用的教材,适用于高等学校计算机相关专业的本科生和研究生以及相关从业人员。
以下是几本常用的数据库原理与应用教材的介绍:1. 《数据库系统概论》(第5版)- 王珊、萨师煊这本教材重点介绍数据库系统的基本概念、数据模型、数据库设计、查询处理和优化、事务管理和并发控制以及数据库安全等内容。
通过理论与实践相结合的方式,帮助学生理解数据库系统的基本原理与技术,并具备设计、开发和管理数据库系统的能力。
2. 《数据库原理与应用》(第4版)- 王晓敏该教材系统地介绍了数据库原理、数据库结构和组织、SQL语言、数据库设计与应用、数据库完整性、数据库安全性、数据库管理技术与工具、关系数据库规范化理论与方法、关系数据库性能优化及存储过程等内容。
通过大量的案例和实践操作,帮助学生在实际应用中掌握数据库的设计与管理。
3. 《数据库系统概论》(第7版)- 李晓东、杨立民该教材以分层模块化的方式,系统地介绍了数据库系统的原理、结构和应用。
内容包括数据库概述、关系数据库理论、关系数据库设计、关系数据库语言SQL、关系数据库管理系统、数据库安全性与完整性、数据库备份与恢复、数据库性能与优化等方面的知识。
通过案例和实践项目,帮助学生理解和应用数据库技术。
4. 《数据库系统概念》(第6版)- 西安交通大学出版社这本教材主要介绍了数据库系统的设计与实现、数据库语言和数据库管理系统的理论与技术。
内容包括数据模型、关系数据模型、关系数据库设计理论、SQL语言、数据库编程、查询处理和优化、并发控制和事务管理、数据库安全与完整性等方面的知识。
通过丰富的实例和实践操作,帮助学生全面了解数据库系统的原理与应用。
以上是一些常用的数据库原理与应用教材,选择适合自己学习需要和实际情况的教材进行学习和参考。
同时,还可以通过查阅学术论文、参考书籍和相关网络资源深入学习和理解数据库原理与应用。
实验五存储过程和触发器一、实验目的(1) 通过实践理解存储过程和触发器的概念、作用及优点;(2) 掌握存储过程的定义与调用,实现存储过程中带有不同参数的应用;(3) 掌握创建触发器。
二、实验原理1.存储过程一个被命名的存储在服务器上的T-SQL语句的集合,是封装重复性工作的一种方法。
(1)创建存储过程CREATE PROC[DURE]PROCDURE_NAME [{@PARAMENT DATA_TYPE}[VARYING][=DEFAULT][OUTPUT]] [, (1)AS SQL_STATEMENTPROCEDURE_NAME:新存储过程的名称,必须符合标识符规则且唯一。
@PARAMETER:过程中的参数。
可以声明一个或多个参数。
用户必须在执行过程时提供每个所声明参数的值(除非定义了该参数的默认值)。
使用 @ 符号作为第一个字符来指定参数名称。
参数名称须符合标识符规则。
每个过程的参数仅用于该过程本身;相同的参数名称可用在其它过程中。
默认情况下参数只能代替常量,不能代替表名、列名或其它数据库对象名称。
DATA_TYPE:参数的数据类型。
DEFAULT:参数的默认值。
如果定义了默认值,不必指定该参数的值即可执行过程。
默认值必须是常量或 NULL。
OUTPUT:表明参数是返回参数。
该选项的值可以返回给 EXEC[UTE]。
使用 OUTPUT 参数可将信息返回给调用过程。
(2)执行存储过程SQL SERVER系统中,可以使用EXECUTE语句执行存储过程。
EXECUTE语句也可以简写为EXEC。
如果将要执行的存储过程需要参数,那么应该在存储过程名称后面带上参数值。
[EXEC[UTE]]{[@RETURN_STATUS=]{PROCEDURE_NAME[;NUMBER]|@PROCEDURE_NAME_VAR}[@PARAMETER={VALUE|@VARIABLE[OUTPUT]|[DEFAULT]}[,…N](3) 删除存储过程使用DROP PROCEDURE语句可永久地删除存储过程。
6.3 数据库存储过程
【本节的主要内容】
•了解存储过程的概念
•掌握存储过程创建、删除的方法•掌握存储过程的执行方法
•掌握PostgreSQL的PL/SQL基本语法•理解存储过程的优缺点
一、什么是存储过程
•存储过程(Stored Procedure)是一种数据库的对象;
•由一组能完成特定功能的SQL 语句集构成;
•是把经常会被重复使用的SQL语句逻辑块封装起来,经编译后,存储在数据库服务器端;
•当被再次调用时,而不需要再次编译;
•当客户端连接到数据库时,用户通过指定存储过程的名字并给出参数,数据库就可以找到相应的存储过程予以调用。
二、创建存储过程
•不同的数据库系统创建存储过程的语法存在差异;
•许多数据库为创建存储过程和函数提供不同命令;
•如ORACLE、MySQL、SQL SERVER等数据库,使用CREATE PRECEDURE命令创建存储过程,使用CREATE FUNCTION命令创建函数。
•PostgreSQL使用CREATE FUNCTION命令创建存储过程。
4
三、创建存储过程的语法
CREATE [ OR REPLACE ] FUNCTION name
( [ [ argmode ] [ argname ] argtype [ { DEFAULT | = } default_expr ] [, ...] ] )
[ RETURNS retype | RETURNS TABLE ( column_name column_type [, ...] ) ]
AS $$ //$$用于声明存储过程的实际代码的开始
DECLARE
-- 声明段
BEGIN
--函数体语句
END;
$$ LANGUAGE lang_name; //$$ 表明代码的结束, LANGUAGE 后面指明所用的编程语言
(1)name :要创建的存储过程名;(3)argmode :存储过程参数的模式可以为IN 、OUT 或INOUT ,缺省值是IN 。
(4)argname :形式参数的名字。
(5)RETURNS :返回值;RETURNS TABLE :返回二维表(2)OR REPLACE :覆盖同名的存储过程;
四、创建存储过程的示例
创建一个名为countRecords()的存储过程统计STUDENT表的记录数。
CREATE OR REPLACE FUNCTION countRecords ()
RETURNS integer AS $count$
declare
count integer;
BEGIN
SELECT count(*) into count FROM STUDENT;
RETURN count;
END;
$count$ LANGUAGE plpgsql;
五、执行存储过程
如果程序员需要在查询窗口执行存储过程,语法形式如下:select存储过程名(参数);
或者:select * from 存储过程名(参数);
例如: select countRecords ( );
或者:select * from countRecords ( );
五、执行存储过程(续)
如果程序员需要存储过程调用其它存储过程,语法形式如下:
select into 自定义变量from 存储过程名(参数);
CREATE OR REPLACE FUNCTION testExec()
returns integer AS $$
declare
rec integer;
BEGIN
select into rec countRecords();
//如果不关心countRecords()的返回值,则可用 PERFORM countRecords() 代替;
return rec;
END;
$$ LANGUAGE plpgsql;
六、删除存储过程
如果程序员需要删除存储过程,语法形式如下:
DROP FUNCTION [ IF EXISTS ] name ( [ [ argmode ] [ argname ] argtype [, ...] ] ) [ CASCADE | RESTRICT ]主要参数:
(1)IF EXISTS:如果指定的存储过程不存在,那么发出提示信息。
(2)name :现存的存储过程名称。
(3)argmode:参数的模式:IN(缺省), OUT, INOUT, VARIADIC。
请注意,实际并不注意OUT参数,因为判断存储过程的身份只需要输入参数。
(4)argname:参数的名字。
请注意,实际上并不注意参数的名字,因为判断函数的身份只需要输入参数的数据类型。
(5)argtype:如果有的话,是存储过程参数的类型。
(6)CASCADE:级联删除依赖于存储过程的对象(如触发器)。
(7)RESTRICT:如果有任何依赖对象存在,则拒绝删除该函数;这个是缺省值。
六、删除存储过程(续)
例子:假如需要删除前面定义的存储过程testExec() DROP FUNCTION IF EXISTS testExec()
七、PL/SQL基本语法
1、声明局部变量。
变量声明的语法如下:
declare
变量名变量类型;
如果声明变量为记录类型,变量声明格式为: variable_name RECORD;
注:RECORD不是真正的数据类型,只是一个占位符。
例如:declare
count intger;
rec RECORD ;
2、条件语句
在PL/pgSQL中有以下三种形式的条件语句,与其他高级语言的条件语句意义相同。
1). IF-THEN
IF boolean-expression THEN statements
END IF;
2). IF-THEN-ELSE
IF boolean-expression THEN statements
ELSE 3). IF-THEN-ELSIF-ELSE
IF boolean-expression THEN
statements
ELSIF boolean-expression THEN
statements
ELSIF boolean-expression THEN
statements
ELSE
statements
END IF;
3、循环语句
1). LOOP 语句
LOOP
statements
END LOOP [ label ];
2). EXIT
EXIT [ label ] [ WHEN expression ];例如:LOOP
count=count+1;
EXIT WHEN count >100;
END LOOP;3). CONTINUE
CONTINUE [ label ] [ WHEN expression ];例如:LOOP
count=count+1;
EXIT WHEN count > 100;
CONTINUE WHEN count < 50;
count=count+1;
END LOOP;
3、循环语句
4). WHILE
WHILE expression LOOP
statements
END LOOP ;
例如:
WHILE amount_owed > 0 AND balance > 0 LOOP --do something
END LOOP;5). FOR
FOR name IN [ REVERSE ] expression ... expression LOOP
statements
END LOOP;
例如: FOR i IN 1...10 LOOP
RAISE NOTICE 'i IS %', i;
END LOOP;
FOR i IN REVERSE 10...1 LOOP
--do something
END LOOP;
4、遍历命令结果
FOR record_or_row IN query LOOP
statements
END LOOP ;
FOR循环可以遍历命令的结果并操作相应的数据,例如: declare
rec RECORD ;
FOR rec IN SELECT sid , sname FROM student LOOP raise notice ‘%-,%-’,rec.sid, rec.sname;
END LOOP;
1、使用存储过程的优点
(1) 减少网络通信量
(2) 执行速度更快
(3) 更强的适应性
(4) 降低了业务实现与应用程序的耦合
(5) 降低了开发的复杂性
(6) 保护数据库元信息
(7) 增强了数据库的安全性
2、使用存储过程的缺点
(1) SQL本身是一种结构化查询语言,而存储过程本质上是过程化的程序;面对复杂的业务逻辑,过程化处理逻辑相对比较复杂;而SQL语言的优势是面向数据查询而非业务逻辑的处理。
(2) 如果存储过程的参数或返回数据发生变化,一般需要修改存储过程的代码,同时还需要更新主程序调用存储过程的代码。
(3) 开发调试复杂,由于缺乏支持存储过程的集成开发环境,存储过程的开发调试要比一般程序困难。
(4) 可移植性差。