《SQLServer数据库应用.ppt》由会员分享,可在线阅读,更多相关《SQLServer数据库应用.ppt(23页珍藏版)》请在金锄头文库上搜索。
1、武汉大学计算机学院数据库课程组8.1 SQL Server 2005 SQL Server 2005 系统概述系统概述8.2 数据库创建与程序设计数据库创建与程序设计8.3 数据库应用系统设计例数据库应用系统设计例第第8 8章章 SQL ServerSQL Server数据库应用数据库应用武汉大学计算机学院数据库课程组8.1 SQL Server 2005 系统概述系统概述n1. SQL Server 2005的组成集成服务 报表服务 分析 服务数据库引擎 服务 代理复制 全文 搜索 通知 服务图8-1 SQL Server 2005的组成武汉大学计算机学院数据库课程组8.1 SQL Serv
2、er 2005 系统概述系统概述n2. SQL Server 2005的组件 服务器组件 数据库引擎 分析服务工具 报表服务工具 通知服务工具 集成服务工具等 连接 组件 DB_Library ODBC 驱动 程序 OLD_DB 客户机 组件 SQL Server管理控制器 SQL Server 配置管理器 数据库引擎优化顾问 商业智能开发平台SQL Server分析器 图8-2 SQL Server系统组件分布图武汉大学计算机学院数据库课程组8.1 SQL Server 2005 系统概述系统概述n3 .SQL Server 2005的工具武汉大学计算机学院数据库课程组8.2 8.2 数据库
3、创建与程序设计数据库创建与程序设计n1. 1. 数据库的创建数据库的创建n常使用SQL Server管理控制器建立数据库。【例8.1】n2 2 表的创建表的创建 n(1)student表。该表用于存放所有学生记录nstudent(sno,sname,ssex,sbirthday,sclass)n(2)teacher表。该表用于存放所有教师记录nteacher(tno,tname,tsex,tbirthday,prof,depart)n(3)course表。该表用于存放所有课程记录ncourse(cno,cname,tno)n(4)score表。该表用于存放所有学生成绩记录nscore(sno,
4、cno,grade)n两种创建数据库表的方法,一种是利用SQL Server管理控制器;另一种是利用T-SQL语句中的CREATE TABLE命令。n【例8.2】 武汉大学计算机学院数据库课程组8.2 8.2 数据库创建与程序设计数据库创建与程序设计n3.T-SQL3.T-SQL程序基础程序基础n1 1常规标识符与数据类型常规标识符与数据类型n在SQL Server中,标识符就是指用来定义服务器、数据库、数据库对象和变量等的名称。可以分为常规标识符和分隔标识符。T-SQL中不区分大小写字母。n数据类型包括系统数据类型和用户自定义数据类型。n2. 2. 变量变量n在SQL Server中,变量分
5、为局部变量和全局变量。n全局变量记录了SQL Server的各种状态信息。全局变量的名称前面为“”,由系统定义和维护。n局部变量前面有一个at符号(),由用户定义和使用,一般格式如下:nDECLARE 变量名 数据类型 n在SQL Server中,一次可以定义多个变量。n例如:例如:DECLARE f float,cn char(8) 武汉大学计算机学院数据库课程组8.2 8.2 数据库创建与程序设计数据库创建与程序设计n3. 3. 控制流语句控制流语句nT-SQL提供称为控制流的特殊关键字,用于控制T-SQL语句、语句块和存储过程的执行流。这些关键字可用于T-SQL语句、批处理和存储过程中。
6、n4执行T-SQL语句n在SQL Server管理控制器中,用户可在全文窗口中输入T-SQL语句,执行语句并在结果窗口中查看结果。可以使用SQL Server管理控制器交互式地执行T-SQL语句。控制流控制流语句句 说明明BEGINEND定义语句块IFELSE条件处理语句CASE分支语句WHILE循环语句GOTO无条件跳转语句WAITFOR延迟语句BREAK跳出循环语句CONTINUE重新开始循环语句武汉大学计算机学院数据库课程组8.2 8.2 数据库创建与程序设计数据库创建与程序设计n4.4.存储过程存储过程: :是在数据库服务器端执行的一组T-SQL语句的集合,经编译后存放在数据库服务器端
7、。n存储过程作为一个单元进行处理并以一个名称来标识。编程中只需要给出存储过程的名称和必需的参数,就可以方便地调用它们。n存储过程的分类存储过程的分类nSQL Server 2005提供了多种存储过程,分为:n(1)用户存储过程。用户编定的可以重复使用的T-SQL语句功能模块,并且在数据库中有唯一的名称,可以附带参数。后面主要介绍用户存储过程。n(2)系统存储过程。通常使用“sp_”为前缀,主要用于管理SQL Server和显示有关数据库及用户的信息。系统存储过程在master数据库中创建并保存,可从任何数据库中执行这些存储过程。n(3)扩展存储过程。允许用户使用编程语言创建自己的外部例程。【例
8、8.7】【例8.8】 8.3 DBDB应用系统设计例应用系统设计例见教材见教材 【例8.7】【例8.8】 武汉大学计算机学院数据库课程组9.1 Oracle产品及功能介绍产品及功能介绍9.2 PL/SQL程序设计程序设计9.3 数据库应用系统设计数据库应用系统设计第第9 9章章 OracleOracle数据库应用数据库应用武汉大学计算机学院数据库课程组9.1 Oracle产品及功能介绍产品及功能介绍n1.1.主要产品主要产品:Oracle电子商务套件;Oracle10g。n2. 2. 数据库的基本概念数据库的基本概念n模式模式是与每个Oracle数据库用户相关的一组数据库对象的集合。n表表是数
9、据库中基本存储的逻辑单位,由多行和多属性(列)组成。n视图视图可从表(或其他视图)中派生出来。n包包是存储过程和函数的封装,由一组相关的存储过程和函数组成。n触发器触发器是完成特定功能的程序单元。n数据块数据块是Oracle服务器所能分配、读取或写入的最小存储单位。n区区是DB存储空间分配的逻辑单位,由许多连续的数据块组成。n段段是构成表空间的逻辑存储结构,段由一组区组成。n表空间表空间是数据库中最大的逻辑单位。n序列生成器序列生成器可产生一组唯一的序列号。n数据库链路数据库链路是指一个数据库与另一个数据库之间的通信路径。n快照快照是对远程数据库上表的复制,自动按时间间隔定时刷新表的数据。 武
10、汉大学计算机学院数据库课程组9.2 PL/SQL9.2 PL/SQL程序设计程序设计n1、过程化SQL- PLSQLn 是Oracle对标准数据库语言的过程化扩展。n2、PL/SQL程序的基本结构n(1)PL/SQL块结构nDECLARE /声明部分nBEGIN /执行部分 EXCEPTION /异常处理部分nEND;n(2)变量类型与赋值 n分为数字型、布尔型、字符型和日期型。n (1) 直接给变量赋值: := n (2)通过查询语句给变量赋值:PL/SQL操作符分为:算术、关系、比较及逻辑操作符,与其他程序设计语言类同。武汉大学计算机学院数据库课程组3. 3. 控制结构控制结构n主要有条件
11、控制和循环控制语句:主要有条件控制和循环控制语句:n(1) 条件控制语句n条件结构有三种形式:IFTHEN,IFTHENELSE和嵌套的IF语句。n常用常用: IF THEN ;ELSE END IF ;n(2) 循环控制语句n有三种循环结构,提供EXIT、BREAK等循环结束语句。形式:n LOOP END LOOP; n WHILE LOOP END LOOP;n FOR IN . LOOP END LOOP武汉大学计算机学院数据库课程组3. 3. 控制结构控制结构n例:通过循环变量i来控制n增加的次数并输出结果。nSET SERVEROUTPUT ONnDECLARE n INTEGER
12、 :=80;i INTEGER :=0;nBEGIN FOR i IN 1.10 LOOP n:=n+1; END LOOP; DBMS_OUTPUT.PUT_LINE(n的值:|TO_CHAR(n)nEND;武汉大学计算机学院数据库课程组4.4.存储过程存储过程 nOracle提供了四种类型的可存储的命名程序块: 存储过程、函数、包和触发器。n存储过程是一个PL/SQL程序块,可有多个参数作为输入或输出源。它不能由SQL语句直接使用,只能通过EXECUT命令或PL/SQL程序块内部调用。n可通过SQL语句创建、重命名、执行和删除存储过程。n(1)创建存储过程 n CREATEP OR REP
13、LACE PROCEDURE (,.) /过程首部n AS ; /存储过程体n(2)调用存储过程nCALL PROCEDURE(实参1,实参2) 武汉大学计算机学院数据库课程组n(1)(1)建表并输入数据建表并输入数据n 创建员工表:创建员工表:nCREATE TABLE CREATE TABLE empemp ( eno NUMBER(5), ename VARCHAR2(20), salary NUMBER(4),dno NUMBER(1), PRIMARY KEY ( PRIMARY KEY (enoeno););n 创建部门表:创建部门表: n 给给empemp表添加记录。存储过程如下
14、:表添加记录。存储过程如下:nCREATE OR REPLACE PROCEDURE CREATE OR REPLACE PROCEDURE ins_table_empins_table_emp ( (e_ide_id NUMBER,e_nameNUMBER,e_name VARCHAR2,e_sal VARCHAR2,e_sal NUMBER,e_dnoNUMBER,e_dno NUMBER) NUMBER) AS AS BEGINBEGIN INSERT INTO INSERT INTO emp(eno,ename,salaryemp(eno,ename,salary, , dnodno)
15、 ) VALUES(e_id,e_name,e_sal,e_dnoVALUES(e_id,e_name,e_sal,e_dno); ); END;END;存储过程举例:存储过程举例:n设:有员工表;部门表。设:有员工表;部门表。 emp表表 dept表表 enoenamesalarydno7369王利王利 30002dnodnametel2销售销售68779880武汉大学计算机学院数据库课程组(2)(2)(2)(2)操作相关表,使得某部门职工的薪水增加操作相关表,使得某部门职工的薪水增加操作相关表,使得某部门职工的薪水增加操作相关表,使得某部门职工的薪水增加15%15%15%15%。n给指定部
16、门的员工加薪,首先要把该部门的员工选出来,再对这些员工的薪水进行改动。n这里用存储过程表示,将要加薪的部门作为参数:nCREATE OR REPLACE PROCEDURE CREATE OR REPLACE PROCEDURE add_saladd_sal ( (deptnamedeptname varchar2) varchar2)nAS BEGINAS BEGINnUPDATE UPDATE empempnSET SET emp.salaryemp.salary= =emp.salaryemp.salary*1.15 *1.15 nWHERE WHERE emp.enoemp.eno I
17、N IN(SELECT (SELECT enoeno FROM dept FROM dept WHERE WHERE dnamedname= = deptnamedeptname););nEND ; END ; 武汉大学计算机学院数据库课程组(3)(3)(3)(3)利用触发器建立追踪利用触发器建立追踪利用触发器建立追踪利用触发器建立追踪n通过对emp表的salary属性创建一个触发器,来监视其更新并进行记录,以追踪薪水变动情况:nCREATE OR REPLACE TRIGGER salary_change BEFORE DELETE OR INSERT OR UPDATE ON emp -触
18、发事件FOR EACH ROW - 每更新一行都需要调用此触发器nDECLARE -只有触发器的声明需要DECLARE,过程和函数都不要salary1 NUMBER;BEGIN -:new与:old分别代表该行在修改前、改后的记录salary1=:new.salary - old.salary;DBMS_OUTPUT.PUT_LINE(old salary is:| :old.salary);DBMS_OUTPUT.PUT_LINE(new salary is:| :new.salary);DBMS_OUTPUT.PUT_LINE(add is:|to_char(salary1);END ;
19、武汉大学计算机学院数据库课程组5 5、游标的使用游标的使用与与设计设计 游标:游标:是系统开设的一个数据缓冲区,存放是系统开设的一个数据缓冲区,存放SQLSQL语句的执行结果。语句的执行结果。作用:作用:用户可通过游标获取记录,并赋给变量。用户可通过游标获取记录,并赋给变量。游标名游标名.一条记录一条记录变量变量游标游标指针指针SQLSQL查询结果查询结果 n当对数据库的查询操作返回一组结果集时,存入游标,以后通过对游标的操作来获取结果集中的数据信息。n游标分:显式游标和隐式游标。当查询语句返回多条记录时,必须显式地定义游标以处理每一行。其他的SQL语句(更新操作或查询操作只返回一条记录)都使
20、用隐式游标。武汉大学计算机学院数据库课程组5 5、游标的使用游标的使用与与设计设计游标属性 描 述 ISOPEN如果游标已打开,取值为TRUE,否则为FALSE NOTFOUND若最近一次FETCH操作无结果,则值为TRUE,否则为FALSE FOUND若最近一次FETCH操作无结果,则值为FALSE,否则为TRUE ROWCOUNT值是到当前为止返回的记录数,初值为0,每取一条记录,该属性值加ln定义游标:定义游标:CURSOR CURSOR IS IS ;n例:CURSOR c_emp IS SELECT * FROM emp WHERE dno=3; n当需要操作结果集时,须完成:打开游
21、标、使用FETCH语句将游标里的数据取出以及关闭游标操作。n游标的四个属性游标的四个属性: :其值代表游标的状态信息。游标属性的值是由系统自动赋值,用户只能使用,不能改变。武汉大学计算机学院数据库课程组为为为为empempempemp表的员工增加表的员工增加表的员工增加表的员工增加10101010的工资的工资的工资的工资, , , ,总额限制在总额限制在总额限制在总额限制在50505050万元以内。万元以内。万元以内。万元以内。nCURSOR CURSOR addsaladdsal IS IS nSELECT SELECT enoeno, salary FROM , salary FROM e
22、mpemp ORDER BY salary ORDER BY salary nFOR UPDATE OF salary;FOR UPDATE OF salary;n emp_numemp_num number:= 0; number:= 0; -声明员工计数变量声明员工计数变量n s_sals_sal emp.salary%TYPEemp.salary%TYPE; ; -声明员工总工资变量声明员工总工资变量n e_sale_sal emp.salary%TYPEemp.salary%TYPE; ; -声明员工工资变量声明员工工资变量n e_no emp.eno%e_no emp.eno%TYP
23、ETYPE; ; -声明员工号变量声明员工号变量nBEGINBEGIN OPEN OPEN addsaladdsal; ;n SELECT SELECT sum(salarysum(salary) INTO ) INTO s_sals_sal FROM FROM empemp; ;n WHILE WHILE s_sals_sal 500000 500000n LOOP FETCH LOOP FETCH addsaladdsal INTO INTO e_noe_no, , e_sale_sal; ;n EXIT WHEN EXIT WHEN addsaladdsal % NOTFOUND; %
24、NOTFOUND;n UPDATE UPDATE empemp SET salary= SET salary=salarysalary*1.1 WHERE CURRENT OF *1.1 WHERE CURRENT OF addsaladdsal; ;n s_sals_sal:=:=s_sals_sal + + e_sale_sal*0.1; *0.1; emp_numemp_num:=:=emp_numemp_num + 1 ; + 1 ;n END LOOP; END LOOP; nCLOSE CLOSE addsaladdsal; ;nINSERT INTO INSERT INTO ms
25、gmsg VALUES(emp_numVALUES(emp_num , , s_sals_sal) ; ) ; -将结果存入表将结果存入表msgmsgnCOMMIT; COMMIT; END;END;武汉大学计算机学院数据库课程组PL/SQLPL/SQL程序块的区别程序块的区别 程序块 描 述 应用环境 存储过程 、函数可接受参数并返回结果的PLSQL块,存储在服务器端,可被重复调用 任何客户端和服务器环境 包 有名PLSQL块,是相关过程、函数、标识符的集合,存储在服务器端,可被重复调用。任何客户端和服务器环境 数据库 触发器与数据库表相关的PLSQL块,存储在服务器端,在客户与服务器端的触
26、发事件发生时自动触发。任何客户端和服务器环境 应用 触发器与一个应用事件相关的PLSQL块,存储在应用程序中,在应用程序的触发事件发生时自动触发。各种工具武汉大学计算机学院数据库课程组9.3 数据库应用系统设计数据库应用系统设计。n9.3.1 9.3.1 系统需求与设计目标系统需求与设计目标n9.3.2 9.3.2 系统功能模块设计系统功能模块设计n9.3.3 9.3.3 系统实现方式及开发环境系统实现方式及开发环境n9.3.4 9.3.4 数据库设计与表的创建数据库设计与表的创建n9.3.5 9.3.5 系统应用程序设计系统应用程序设计n9.3.6 9.3.6 系统测试运行图系统测试运行图 DBDB应用系统设计例应用系统设计例见教材见教材 武汉大学计算机学院数据库课程组第第8章章-第第9章数据库应用章数据库应用 小结小结n数据库应用开发的一般过程是数据库应用开发的一般过程是: :n(1) 进行需求分析,确定应用系统的功能需求和性能需求。n(2) 根据需求分析的结果划分系统的功能模块,并进行数据库各种结构设计。n(3) 建立数据库与创建数据库连接。n(4) 应用程序设计与编码(包括界面)的实现。n(5) 装入数据、测试及维护。