数据库原理-过程化sql

sql语言是高度非过程化的语言

SQL是一种典型的非过程化程序设计语言

特点

只指定哪些数据被操纵,至于对这些数据要执行哪些操作,以及这些操作是如何执行的,则未被指定。

优点

在于它的简单易学,完全不用考虑上下文,因此已经成为关系数据库访问和操纵数据的标准语言。

与之相对应的是过程化程序设计语言,类似c/c++等高级语言都是过程化程序设计语言。

特点

一条语句的执行是与其前后的语句和控制结构(如条件语句、循环语句等)相关的

优点

与SQL相比,这些语言显得比较复杂,但优点是使用灵活,数据操纵能力非常强大。

为了弥补SQL在过程化控制方面的不足,许多商用数据库系统,都对标准SQL语言进行了扩充,增加了过程化控制部分,即所谓的PL/SQL。当然不同的数据库系统所做的扩充程度是很不同的。

过程化sql的两种形式

过程化SQL程序的基本结构是块,所有的过程化SQL程序都是由块组成的.

  1. 匿名块--每次执行都需要进行编译,不能被存储到数据库中,不能被其他过程化sql块调用。
  2. 命名块--编译后被保存在数据库中,可以反复调用,运行速度较快。

匿名块

注意:变量赋值和表达式赋值需要添加:

变量定义

变量名 数据类型[[not null ] :=初始表达式]
变量名 数据类型[[not null] 初值表达式]

常量定义

常量名  数据类型 constant:=常量表达式

条件控制语句

if condition then
    sequence_of_statements;
end if
if condition then
    sequence_of statement1;
else
    sequence_of statement2;
end if;

循环控制语句

loop
    sequence_of_statement
end loop
while condition loop
    sequence_of_statement
end loop

赋值

变量名:=表达式

错误处理

如果过程化SQL在执行时出现异常,则应该让程序在产生异常的语句处停下来,根据异常的类型去执行异常处理语句.

命名块

命名块有两种主要方式:

  1. 存储过程
  2. 函数

存储过程

定义

存储过程是由过程化SQL语句书写的过程,这个过程经过编译和优化后存储在数据库服务器中,因此称它为存储过程,使用时只要调用即可.

优点

  1. 存储过程是早已经在数据库管理软件编译好的代码,当客户需要时可以直接调用服务器端的过程函数,也就是早就写好的sql语句,这样就节约大量的编译和优化时间,加快了服务速度。
  2. 存储过程降低了客户机和服务器之间的通信量.客户机上的应用程序只需要通过网络向服务器发出调用存储过程的名字和参数,就可以让关系数据库执行其中多条sql语句并进行数据处理。
  3. 方便管理和维护.可以把需要用到的规则或是程序提前写成过程放入数据库中,由数据库管理软件集中管理和维护。
  4. 当一个业务同时对多个表进行处理的时候采用存储过程比较合适。

缺点

  1. 存储过程化处理大量集中在数据库上,很多程序之间在数据库端被修改,没有经过验证测试,影响应用程序的安全性。
  2. sql语言本来是高度非过程化的语言,其开发目的就是简单易学不用向高级语言学习编程,即使添加了过程化处理,也不能像c语言等自由处理逻辑程序。。
  3. 没办法应用缓存。虽然有全局临时表之类的方法可以做缓存,但同样加重了数据库的负担。如果缓存并发严重,经常要加锁,那效率实在堪忧。
  4. 无法适应数据库的切割(水平或垂直切割)。数据库切割之后,存储过程并不清楚数据存储在哪个数据库中。

使用方式

  • 创造存储过程
create or replace procedure 过程名([参数1,参数2...])
as <过程化块>
  • 调用存储过程块
call/perform procedure 过程名([参数1...]);
  • 修改存储过程
alter procedure 过程名 compile
  • 删除存储过程
drop procedure 过程名()

函数

函数就是自定义函数,使用后u自己使用过程化sql设计定义的。函数和存储过程类似。

使用方式:

  • 创造函数
Create function function_name(参数列表)returns返回值类型
  • 删除函数
Dropfunction if existsfunction_name;
  • 修改函数
Alter functionfunction_name函数选项
  • 查看函数
Show function status like ‘partten’

Show create functionfunction_name;

二者之间的区别

本质没有区别,但是参数、调用和返回值等细节上有些许差别。

参考文章:

http://www.cnblogs.com/ego/archive/2012/12/06/2804592.html

http://www.cnblogs.com/lengbingshy/archive/2010/02/25/1673476.html

时间: 2024-10-11 17:17:56

数据库原理-过程化sql的相关文章

数据库原理及应用(SQL Server 2016数据处理)【上海精品视频课程】

  信息无处不在,数据处理无处不用.物质.信息.能源已经成为人类生存和发展的重要保障.数据库的应用广度深度及建设规模已经成为衡量一个国家信息化程度的一项重要标志.数据库技术是计算机学科的一个重要分支,反映了数据管理的最新技术.数据库技术与计算机网络.人工智能一起被称为计算机三大热门技术,是现代信息化管理的重要工具.学习本课程具有非常重要的实际意义.数据库技术已经成为各类计算机信息系统的核心技术和重要基础.现代信息社会,数据已经成为重要的资源和开发利用的新"能源",数据库技术已应用到各行

你所不知道的SQL Server数据库启动过程(用户数据库加载过程的疑难杂症)

前言 本篇主要是上一篇文章的补充篇,上一篇我们介绍了SQL Server服务启动过程所遇到的一些问题和解决方法,可点击查看,我们此篇主要介绍的是SQL Server启动过程中关于用户数据库加载的流程,并且根据加载过程中所遇到的一系列问题提供解决方案. 其实SQL Server作为微软的一款优秀RDBMS,它启动的过程中,本身所带的那些系统库发生问题的情况相对还是很少的,我们在平常使用中,出问题的大部分集中于我们自己建立的用户数据库. 而且,相对于侧重面而言,其实我们更关注的是我们自己建立的用户数

数据库技能实战进阶之常用结构化sql语句(上)

常用的结构化查询语言主要分为数据定义语言(DDL).数据操作语言(DML).数据控制语言(DCL)和数据查询语言(DQL).特别在关系型的数据库例如(mysql.mariadb. percona.DB2.Oracle.SQL server)等都是采用共同的SQL语句来实现增删改查等数据的管理.本文会针对以下的四种类型的结构化SQL来进行介绍. DDL 数据定义语言  create     drop     alter DML 数据操作语言  insert    delete   update D

数据库原理与应用 基于SQL Server 2005pdf

下载地址:网盘下载 <数据库原理与应用 基于SQL Server 2005>介绍数据库基本原理,并以sql server 2005为平台介绍数据库管理系统的应用.全书分为3部分,第l-5章介绍数据库的一般原理,第6-18章介绍sql server 2005的数据管理功能,第19-20章介绍以vb作为前端设计工具.以sql server 2005作为数据库平台开发数据库应用系统的技术.本书最后的附录还给出了一个数据库系统设计过程. 本书由浅入深.循序渐进地介绍各个知识点.书中提供了大量例题,有助

JAVA-Unit01: 数据库原理 、 SQL(DDL、DML)

Unit01: 数据库原理 . SQL(DDL.DML) SQL语句是不区分大小写的,但是行业里习惯将关键字与分关键字用大小写岔开以提高可读性. SELECT SYSDATE FROM dual DDL语句 数据定义语言 用于操作数据库对象 数据库对象有:表,视图,索引,序列 创建表: CREATE TABLE employee( id NUMBER(4), name VARCHAR2(20), gender CHAR(1), birth DATE, salary NUMBER(6,2), jo

sql学习笔记(18)-----------数据库创建过程

手动创建数据库的步骤: 第一步:决定数据库实例的SID 数据库实例的SID用来将当前实例和以后可能创建的实例进行区分 % setenv ORACLE_SID mynewdb 第二步:建立数据库管理员认证方法 第三步:创建初始化參数文件 实例(由内存结构SAG和后台进程组成)启动过程中要读取初始化參数文件.得到初始化參数文件的一个好办法是改动一个已有的初始化參数文件.为了简化操作,将初始化參数文件放在Oracle默认的位置上.这种话.当数据库启动时,就没有必要再指定pfile參数了.由于Oracl

你所不知道的SQL Server数据库启动过程,以及启动不起来的各种问题的分析及解决技巧(转)

目前SQL Server数据库作为微软一款优秀的RDBMS,其本身启动的时候是很少出问题的,我们在平时用的时候,很少关注起启动过程,或者很少了解其底层运行过程,大部分的过程只关注其内部的表.存储过程.视图.函数等一系列应用方式,而当有一天它运行的正常的时候突然启动不起来了,这时候就束手无策了,能做的或许只能是重装.配置.还原等,但这一个过程其实是一个非常耗时的过程,尤其当我们面对是庞大的生产库的时候,可能在这火烧眉毛的时刻,是不允许你再重搭建一套环境的. 所以作为一个合格的数据库使用者,我们要了

sql数据库原理

数据库原理第一章 关系模型与关系代数1.完整性约束(1)实体完整性规则(主码不为null)(2)参照完整性,用来描述实体之间的联系(3)用户自定义完整性 2.关系代数(1)传统的集合运算并 (t属于r或者s)t = r U s 差(t属于r不属于s) t = r – s 交(t属于r并且属于s)t=r n s 笛卡尔积(t的个数为r*s) t=rxs 3.表达式 连接和笛卡尔积一样 除(在R中具备S的集) 第二章 SQL语言1.sql语言(1)数据查询 select(2)数据定义 create

SQL Server数据库原理及部署

一.使用数据库的必要性 使用数据库可以高效且条理分明地存储数据,使工作人员能够更加迅速.方便地管理数据.数据库具有以下特点: 可以结构化的存储大量的数据信息,方便用户进行有效的检索和访问: 可以有效地保持数据信息的一致性.完整性.降低数据冗余: 可以满足应用的共享和安全方面的要求: 常见的数据库有:SQL Server.MySQL.Oracle等,SQL Server是运行在Windows操作环境中,拥有相对比较友好的图形化界面. 二.数据库的基本概念 1.数据 描述事物的符号记录称为数据,数据