版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、4.4 嵌入式嵌入式SQLl为什么使用嵌入式SQL?l嵌入式SQL执行过程l需要解决的几个问题为什么使用嵌入式为什么使用嵌入式SQL?l有些操作对于交互式SQL是不可能的任务不可能的任务 SQL的表达能力相比高级语言有一定的限制,有些数据访问要求单纯使用SQL无法完成。一方面,SQL在逐渐增强自己的表达能力(参见习题4.10),另一方面,太多的扩展会导致优化能力及执行效率的降低l非声明性动作 实际的应用系统是非常复杂的,数据库访问只是其中一个部件。有些动作如与用户交互、图形化显示数据等只能用高级语言实现嵌入式嵌入式SQL执行过程执行过程主语言 + 嵌入SQL 预处理 主语言 + 函数调用 主语
2、言编译器 主语言执行程序 需要解决的几个问题需要解决的几个问题l区分SQL语句与C语言语句嵌入的SQL语句以EXEC SQLEXEC SQL开始,以分号(; ;) 或END_EXECEND_EXEC结束EXEC SQLEXEC SQL delete fromdelete from PROF where where DNO = 10;需要解决的几个问题需要解决的几个问题l嵌入SQL语句与C语言之间的数据传递 宿主变量lC变量,既可以用在C语句中,也可用在SQL语句中,用来在两者之间传递数据 宿主变量的声明l声明为通常的C变量,并将其放在下列标识语句之间EXEC SQL BEGIN DECLARE
3、 SECTIONEXEC SQL BEGIN DECLARE SECTIONEXEC SQL END DECLARE SECTIONEXEC SQL END DECLARE SECTION需要解决的几个问题需要解决的几个问题EXEC SQL BEGIN DECLARE SECTIONEXEC SQL BEGIN DECLARE SECTIONint prof_no;char prof_name30;int salary;EXEC SQL END DECLARE SECTIONEXEC SQL END DECLARE SECTION需要解决的几个问题需要解决的几个问题注:宿主变量出现于注:宿主变
4、量出现于SQLSQL语句中时,前面加(语句中时,前面加(: :)以)以区别列名区别列名 宿主变量可出现的地方:宿主变量可出现的地方:SQLSQL的数据操纵语句中可的数据操纵语句中可出现出现常数常数的任何地方,的任何地方,selectselect,fetchfetch等语句的等语句的intointo子句中子句中示例:示例:EXEC SQL select PNAME , SALEXEC SQL select PNAME , SAL into :prof_name , :salary into :prof_name , :salary from PROF from PROF where PNO =
5、:prof_no ; where PNO = :prof_no ; 需要解决的几个问题需要解决的几个问题lSQL与主语言之间操作方式的协调 执行方式的差别lSQL:一次一集合lC语言:一次一记录 游标l在查询结果的记录集合中移动的指针l若一个SQL语句返回单个元组,则不用游标l若一个SQL语句返回多个元组,则使用游标需要解决的几个问题需要解决的几个问题不需要游标的数据操作l结果是一个元组的select语句EXEC SQLEXEC SQL selectselect PNAME , SALintointo : :prof_name, : :salary fromfrom PROFwherewher
6、e PNO = :prof_no ; ;需要解决的几个问题需要解决的几个问题linsert语句 EXEC SQLEXEC SQL insert intoinsert into PROF valuesvalues (: :prof_no, : :prof_name , : :salary , : :dept_no , : : salary) ; ;ldelete语句 EXEC SQL delete from EXEC SQL delete from PROF where where PNO :prof_no ; ;lupdate语句 EXEC SQL update PROF set EXEC S
7、QL update PROF set SAL = :salary where where PNO = : prof_no ; ;需要解决的几个问题需要解决的几个问题 需要游标的数据操作当select语句的结果中包含多个元组时,使用游标可以逐个存取这些元组活动集:活动集:select语句返回的元组的集合当前行:当前行:活动集中当前处理的那一行。游标即是指向当前行的指针需要解决的几个问题需要解决的几个问题 定义与使用游标的语句ldeclaredeclare定义一个游标,使之对应一个select语句 declaredeclare 游标名 cursor forcursor forselect语句for
8、 updatefor update ofof列表名for update:该游标可用于对当前行的修改删除lopenopen打开游标,执行对应的查询,结果集为该游标的活动集open 游标名需要解决的几个问题需要解决的几个问题lfetchfetch在活动集中将游标移到特定的行,并取出该行数据放到相应的宿主变量中fetch fetch 游标名 into into 宿主变量表lcloseclose关闭游标,释放活动集及其所占资源。需要再使用该游标时,执行open语句closeclose 游标名需要解决的几个问题需要解决的几个问题 推进游标指针 EXEC SQL FETCH INTO ,. FETCH语句
9、通常用在一个循环结构中,逐条取出结果集中的记录进行处理。许多关系数据库管理系统对FETCH语句做了扩充,允许向任意方向以任意步长移动游标指针。 关闭游标 EXEC SQL CLOSE 释放缓冲区及其他资源。需要解决的几个问题需要解决的几个问题说明游标说明游标EXEC SQL DECLARE CURSOR FOR 其中其中SELECT语句可以是简单查询,也可以是语句可以是简单查询,也可以是复杂的连接查询和嵌套查询。复杂的连接查询和嵌套查询。打开游标EXEC SQL OPEN执行相应的SELECT语句,把查询记录取到缓冲区中。这时游标处于活动状态,指针指向查询结果集中第一条记录。 需要解决的几个问
10、题需要解决的几个问题lSQL语句执行信息反馈 良好的应用程序必须提供对错误的处理,应用程序需要知道SQL语句是否正确执行了,发生错误时的错误代码,执行时遇到特殊情况时的警告信息 SQL通讯域SQLCASQLCA是一结构,每一嵌入SQL语句的执行情况在其执行完成后写入SQLCA结构中的各变量中, 根据SQLCA中的内容可以获得每一嵌入SQL语句执行后的信息,应用程序就可以做相应的处理 在PB中,一个SQL语句执行结束后,SQLCA.SQLCODE=0,100,-1分别表示执行成功,未查找到符合条件的元组,执行出错PB中的游标中的游标Declare cur_a cursor for Select
11、a,b,c from;Open cur_a;If sqlca.sqlcode0 then returnDo while true Fetch cur_a into :va,:vb,:vc; If sqlca.sqlcode=100 then exit If sqlca.sqlcode=-1 then return LoopClose cur_a;If sqlca.sqlcode0 then return嵌入式嵌入式 SQL 编程编程l嵌入式嵌入式SQL语句与主语言之间的通信过语句与主语言之间的通信过程程l1数据库工作单元与源程序工作单元之间通信主要包括:l 向主语言传递SQL语句的执行状态信息
12、,使主语言能够据此控制程序流程。l 主语言向SQL语句提供参数。l 将SQL语句查询数据库的结果交主语言进一步处理。嵌入式嵌入式 SQL 编程编程l2嵌入式SQL与主语言之间通信的实现lSQL语句通过SQL通信区SQLCA(SQL communiction area)向主语言传递SQL执行状态信息。l主语言通过自己的主变量(host vaiable)向SQL语句输入数据参数。l 两者数据传送通过主变量和游标(crusor)实现。嵌入式嵌入式 SQL 编程编程l3SQL通信区lSQL语句执行后,系统将当前工作状态送到SQL通信区SQLCA中。应用程序从SQLCA中取出这些状态信息,据此决定接下来
13、执行的语句。l主语言程序中用EXEC SQL INCLUDE SQLCA定义通信区。lSQLCA中有一个返回代码的变量SQLCODE。 执行完一条SQL语句后可以测试一下SQLCODE的值,如果是SUCCESS,则表示SQL语句成功,否则表示错误。嵌入式嵌入式 SQL 编程编程l4主变量l在SQL语句中使用的主语言程序的变量称为主变量。l输入主变量由主语言程序对其赋值,SQL语句引用。l输出主变量由SQL语句对其赋值,返回给主语言程序。l一个主变量附带一个任选的指示变量, 整型变量,指示主变量的值或条件。输入主变量可以利用指示变量赋空值,输出主变量可以利用指示变量检测出是否空值,值是否被截断。
14、嵌入式嵌入式 SQL 编程举例编程举例l 例 查询某个系全体学生的信息。系名在主程序中指定。EXEC SQL INCLUDE SQLCA EXEC SQL BEGIN DECLARE SECTION CHAR deptname (20) CHAR HSno (6) CHAR HSnmae (8) CHAR HSsex (2)嵌入式嵌入式 SQL 编程举例编程举例CHAR HSdept (20)INT HSageEXEC SQL END DECLARE SECTION;main() WHILE (gets(deptname != NULL) 嵌入式嵌入式 SQL 编程举例编程举例EXEC SQL
15、 DECLARE SX CURSOR FOR SELECT Sno,Sname,Ssex,Sage,Sdept FROM Student WHERE Sdept=:deptname EXEC SQL OPEN SX WHILE(1) EXEC SQL FETCH SX INTO 嵌入式嵌入式 SQL 编程举例编程举例:HSno,:HSname,:HSsex,:Hsage,:HSdept if (sqlca.sqlcodeSUCCESS) break; printf(%s, %s, %s,%d,%s, HSno,HSname, HSsex,Hsage,HSdept); ;嵌入式嵌入式 SQL 编
16、程举例编程举例 EXEC SQL CLOSE SX ; End;l例 修改学生的年龄。 . main() Char yn (1); Int Newage;嵌入式嵌入式 SQL 编程举例编程举例 gets(deptname ); EXEC SQL DECLARE SX CURSOR FOR SELECT Sno,Sname,Ssex,Sage,Sdept FROM Student WHERE Sdept=:deptname FOR UPDATE OF Sage ; EXEC SQL OPEN SX; WHILE(1) 嵌入式嵌入式 SQL 编程举例编程举例 EXEC SQL FETCH SX I
17、NTO :HSno,:HSname,:HSsex,:Hsage,:HSdept if (sqlca.sqlcodeSUCCESS) break; printf(%s, %s, %s,%d,%s, HSno, HSname,HSsex,Hsage,HSdept); printf(“修改该学生的年龄?”); 嵌入式嵌入式 SQL 编程举例编程举例 scanf(“%c”,&yn); if(yn=y or yn=Y) printf(输入新的年龄:) scanf(%d,&Newage); EXEC SQL UPDATE Student SET Sage=:NEWAge WHERE CUR
18、RENT OF SX; 嵌入式嵌入式 SQL 编程举例编程举例 ; ; EXEC SQL CLOSE SX; End ;lUPDATE语句分为CURRENT形式和非CURRENT形式,非CURRENT形式是集合操作,一次修改所有满足条件的记录。CURRENT形式只修改其中某个记录。 嵌入式嵌入式 SQL 编程举例编程举例l例 删除某些学生的记录。 . EXEC SQL DECLARE SX CURSOR FOR SELECT Sno,Sname,Ssex,Sage FROM Student WHERE SDept=:deptname; EXEC SQL OPEN SX WHILE(1) 嵌入式
19、嵌入式 SQL 编程举例编程举例 EXEC SQL FETCH SX INTO :HSno, :HSname, :HSsex, :HSage, :HSdept; if(sqlca.sqlcodeSUCCESS) break; printf(%s, %s, %s,%d,%s, HSno, HSname,HSsex,Hsage,HSdept) printf(删除该记录?); 嵌入式嵌入式 SQL 编程举例编程举例 scanf(%c,&yn); if(yn=y or yn=Y) EXEC SQL DELETE FROM Student WHERE CURRENT OF Sx; ; EXEC
20、SQL CLOSE SX; .5.3 触发器触发器l触发器:触发器是一条语句,当对数据库做修触发器:触发器是一条语句,当对数据库做修改时,它自动被系统执行改时,它自动被系统执行 触发器的定义触发器的定义l指明什么条件下触发器被执行指明什么条件下触发器被执行l指明触发器执行的动作是什么指明触发器执行的动作是什么 触发器的作用触发器的作用l示警示警l满足特定条件时自动执行某项任务满足特定条件时自动执行某项任务 触发器事件触发器事件lInsertInsert、 deletedelete、updateupdate触发器定义触发器定义create trigger trigger-namebeginaft
21、erinsertdeleteupdateon table-nameof column-namereferencingold row as identifiernew row as identifiertriggered-SQL-statementfor each rowwhen(search-condition)begin atomicend触发器举例触发器举例EMP(ENO, ENAME, SAL, JOB) EMP(ENO, ENAME, SAL, JOB) 职工工资增幅不得超过职工工资增幅不得超过10%10%create trigger create trigger RAISE_LIMI
22、T RAISE_LIMIT after update of SAL on after update of SAL on EMPEMPreferencing new row as referencing new row as nrow nrow old row as old row as oroworowfor each rowfor each rowwhen when (nrow.SAL 1.1 (nrow.SAL 1.1 * * orow.SAL) orow.SAL)begin atomicbegin atomicsignal SQLSTATE( 7500 ,Salary increase
23、signal SQLSTATE( 7500 ,Salary increase 10%)10%)endend触发器举例触发器举例当帐户透支时,将帐户余额设为0,并建一笔贷款,其金额为透支额create triggercreate trigger overdraft-trigger after update onafter update on accountreferencing new row asreferencing new row as nrow for each rowfor each rowwhenwhen nrow.balance 0begin atomicbegin atomic
24、insert intoinsert into borrower( (selectselect customer-name, account-number fromfrom depositor wherewhere nrow.account-number = depositor.account-number); insert intoinsert into loan valuesvalues(nrow.account-number, nrow.branch-name, nrow.balance); updateupdate account set set balance = 0where whe
25、re account.account-number = nrow.account-numberendend 5.6 OLAPl数据仓库的主要任务是数据仓库的主要任务是OLAPOLAP(联机分(联机分析处理)析处理) lOLTPOLTP面向客户、办事员、操作员的事面向客户、办事员、操作员的事务和查询处理务和查询处理lOLAPOLAP面向经理、主管、分析人员的数面向经理、主管、分析人员的数据分析据分析lOLTPOLTP处理的数据是基本表中的元组数处理的数据是基本表中的元组数据据lOLAPOLAP处理的数据是不同粒度的汇总数处理的数据是不同粒度的汇总数据据 OLAP综述综述lOLTPOLTP采用采用
26、E-RE-R模型和面向应用的数据模型和面向应用的数据库设计库设计 lOLAPOLAP采用星型或雪花模型和面向主题采用星型或雪花模型和面向主题的多维数据立方体设计的多维数据立方体设计 lOLTPOLTP主要功能是主要功能是DBMSDBMSlOLAPOLAP主要功能是检索查询工具,多维主要功能是检索查询工具,多维数据分析工具、统计分析及数据挖掘数据分析工具、统计分析及数据挖掘工具工具 多维数据模型多维数据模型lOLAPOLAP基于多维数据模型基于多维数据模型-数据立方体数据立方体 三季度一季度二季度宁波四季度杭州济南莱芜计算机电话电视 音响605825872970 多维数据模型多维数据模型l数据立
27、方体允许以多维对数据建模和数据立方体允许以多维对数据建模和观察,由维表和事实表组成观察,由维表和事实表组成l例:商品销售立方体例:商品销售立方体l维表:时间维表、商品维表、商店维维表:时间维表、商品维表、商店维表、表、 地区维表地区维表l事实表:各维表的码和度量(销售金事实表:各维表的码和度量(销售金额、销售量)额、销售量) 多维数据模型多维数据模型l多维数据模型分为星型模型和雪花模型多维数据模型分为星型模型和雪花模型 时间键时间键天天星期几星期几月月季季年年时间键时间键商品键商品键商店键商店键地区键地区键销售金额销售金额销售量销售量商店键商店键商店名商店名商 店 类商 店 类型型地区键地区键
28、街道街道城市城市省省国家国家商品键商品键商品名商品名商标商标类别类别供 应 商供 应 商类型类型商店维商店维时间维时间维销售事实表销售事实表地区维地区维商品维商品维 多维数据模型多维数据模型l 时间键时间键天天星期几星期几月月季季年年时间键时间键商品键商品键商店键商店键地区键地区键销售金额销售金额销售量销售量商店键商店键商店名商店名商 店 类商 店 类型型地区键地区键街道街道城市键城市键商品键商品键商品名商品名商标商标类别类别供应键供应键商店维商店维时间维时间维销售销售事实表事实表地区维地区维商品维商品维城市键城市键城市城市省省国家国家供应键供应键供 应 商供 应 商类型类型 多维数据模型多维
29、数据模型l常用的多维数据模型,见曹译本常用的多维数据模型,见曹译本l产品缺陷与质量分析产品缺陷与质量分析l商标管理商标管理-促销分析促销分析l咨询服务咨询服务-费用分析费用分析l咨询服务咨询服务-使用分析使用分析l金融金融-帐目分析帐目分析l金融金融-信贷分析信贷分析 多维数据模型多维数据模型l保健保健服务使用服务使用l人力资源人力资源雇员停工期和调动雇员停工期和调动l人力资源人力资源-工资津贴分析工资津贴分析l生产生产-循环时间循环时间l生产生产-库存事务处理分析库存事务处理分析l生产生产-劳动时间分析劳动时间分析l生产生产-定期发货分析定期发货分析 多维数据模型多维数据模型l生产生产-产品
30、成本分析产品成本分析l生产生产-供应能力分析供应能力分析l产品管理产品管理-市场分析市场分析l销售销售-顾客人口统计分析顾客人口统计分析l销售销售-商品供应线管理分析商品供应线管理分析l销售销售-销售分析销售分析l销售销售-软件产品销售分析软件产品销售分析 多维数据模型多维数据模型l销售销售-电信产品销售分析电信产品销售分析l服务中心服务中心-寻呼分析寻呼分析 多维数据模型多维数据模型l数据挖掘查询语言数据挖掘查询语言DWQLDWQL定义定义l define cube define cube 销售事实表销售事实表 时间键,商品键,时间键,商品键,商店键,地区键商店键,地区键 : : 销售金额销
31、售金额, , 销售量销售量 ldefine dimension define dimension 时间时间 as (as (时间键时间键, ,天天, ,星期,星期,, ,月月, ,季季, ,年年) )ldefine dimension define dimension 商店商店 as (as (商店键,商店名,商店键,商店名,商店类别商店类别) ) 多维数据模型多维数据模型ldefine dimension define dimension 地区地区 as (as (地区键地区键, ,街道街道, ,城市城市, ,省省, ,国家国家) )ldefine dimension define dime
32、nsion 商品商品 as (as (商品键,商品名,商品键,商品名,商品类别,商品大类别,供应商类型商品类别,商品大类别,供应商类型) )l维表、事实表三种存放形式维表、事实表三种存放形式l1 1)关系)关系OLAPOLAP(ROLAPROLAP)服务器)服务器l 使用关系表存放使用关系表存放l2 2)多维)多维OLAPOLAP(MOLAPMOLAP)服务器)服务器 多维数据模型多维数据模型l基于数组的多维存储引擎基于数组的多维存储引擎l3)混合混合OLAPOLAP(HOLAPHOLAP)服务器)服务器l详细数据保存在详细数据保存在ROLAPROLAP,聚集数据保,聚集数据保存在存在MOLA
33、PMOLAPl产生事实表中的数据产生事实表中的数据l按关系按关系OLAPOLAP(ROLAPROLAP)服务器的关)服务器的关系表存放维表、事实表的关系模式如系表存放维表、事实表的关系模式如下:下: 多维数据模型多维数据模型l日常销售日常销售= =(时间键,商品键,商店键,(时间键,商品键,商店键,地区键,地区键, 销售量,价格)销售量,价格)l时间时间= (= (时间键时间键, ,天天, ,星期星期, ,月月, ,季季, ,年年) )l商店商店= (= (商店键,商店名,商店类别商店键,商店名,商店类别) )l地区地区= (= (地区键地区键, ,街道街道, ,城市城市, ,省省, ,国家国
34、家) )l商品商品= (= (商品键,商品名,商品类别,商品键,商品名,商品类别,商品大类别,供应商类型商品大类别,供应商类型) ) 多维数据模型多维数据模型l销售事实表销售事实表 = =(时间键,商品键,商(时间键,商品键,商店键,地区键,销售金额,店键,地区键,销售金额, 销售量)销售量)l形成销售事实表的数据形成销售事实表的数据 lInsert into Insert into 销售事实表销售事实表 as aslselect s.select s.时间键,时间键,s. s.商品键,商品键,s. s.商店键,商店键,s. s.地区键地区键, sum(s., sum(s.销售量销售量* *s
35、. s.价格价格,) , sum(s.,) , sum(s.销售量销售量) ) 多维数据模型多维数据模型lFrom From 时间时间 as tas t,商品,商品 as ias i,商店,商店 as bas b,地区地区as l, as l, 日常销售日常销售 as sas slWhere Where s. s.时间键时间键=t=t. .时间键时间键 and s.and s.商品键商品键=i.=i.商店键商店键 and s.and s.地区键地区键=b.=b.商品键商品键 and and s. s.商店键商店键=l.=l.地区键地区键lGroup by Group by s. s.时间键,时
36、间键,s. s.商品键,商品键,s. s.商店商店键,键,s. s.地区键地区键l 多维数据模型多维数据模型OLAP操作操作l以此立方体为例以此立方体为例 三季度一季度二季度宁波四季度 杭州济南莱芜计算机电话电视 音响605825872970672634619623812845867 多维数据模型多维数据模型OLAP操作操作l维表的概念分层维表的概念分层l例如:例如:allall、国家、省、城市、街道国家、省、城市、街道 l分层的目的是为形成不同粒度的立方分层的目的是为形成不同粒度的立方体体l事实表中保存的数据是最基本的方格事实表中保存的数据是最基本的方格(日,(日, 商品名,街道),其中的数
37、据商品名,街道),其中的数据是最小粒度的数据是最小粒度的数据l取维表不同层的值形成不同立方体的取维表不同层的值形成不同立方体的和值,代表着和值,代表着OLAPOLAP的典型操作。的典型操作。 多维数据模型多维数据模型OLAP操作操作l上卷(上卷(roll up)roll up)操作操作l沿维的概念分层向上攀升,然后在数据立方沿维的概念分层向上攀升,然后在数据立方体上进行的聚集。体上进行的聚集。l 例如:如上图,例如:如上图, 对于时间维:对于时间维:allall、国家、国家、省、城市、街道省、城市、街道 ,l维层次为城市时,(维层次为城市时,(一季度,济南,音响)一季度,济南,音响)=605,
38、(一季度,莱芜,音响),(一季度,莱芜,音响)=672,l维层次为省时,(维层次为省时,(一季度,山东,音响)一季度,山东,音响)=1544 多维数据模型多维数据模型OLAP操作操作l下钻(下钻(drill down)drill down)操作操作l沿维的概念分层向下延伸,然后在大的数据沿维的概念分层向下延伸,然后在大的数据立方体上进行小立方体上值的细化。立方体上进行小立方体上值的细化。l例如:如上图,对于时间维:例如:如上图,对于时间维:allall、年、年, ,季季, ,月,月,星期星期, ,天天 l维层次为季度时,(维层次为季度时,(一季度,宁波,计算机)一季度,宁波,计算机)=605l
39、维层次为月时,(维层次为月时,(一月,宁波,计算机)一月,宁波,计算机)=200, ,(,(二月,宁波,计算机)二月,宁波,计算机)=203, ,(,(三月,宁波,计算机)三月,宁波,计算机)=202 多维数据模型多维数据模型OLAP操作操作l切片(切片(slice)slice)操作操作l在数据立方体的一个维上选择。在数据立方体的一个维上选择。l例如:如上图,对于商品维上确定为计算机,例如:如上图,对于商品维上确定为计算机,可以切出一个片的立方体数据(可以切出一个片的立方体数据(16个格)个格)l切块(切块(dice)操作操作l在数据立方体的两个或多个维上选择。在数据立方体的两个或多个维上选择
40、。l例如:如上图,对于商品维上确定为计算机,例如:如上图,对于商品维上确定为计算机,电话。时间维上确定为一季度、二季度,电话。时间维上确定为一季度、二季度,可可以切出一个小立方体数据(以切出一个小立方体数据(16格)。若再格)。若再选地区维的宁波、杭州,切出立方体(选地区维的宁波、杭州,切出立方体(8个个格)格) 多维数据模型多维数据模型OLAP操作操作l转轴(转轴(pivot)pivot)操作操作 l转动数据的视角,一种目视操作转动数据的视角,一种目视操作l例如:如上图,对于商品维上确定为计算机,例如:如上图,对于商品维上确定为计算机,可以切出一个片的立方体数据,可以切出一个片的立方体数据,
41、l视角是纵轴是时间,横轴是城市,视角是纵轴是时间,横轴是城市,l转轴操作后,转轴操作后,纵轴是城市,横轴是时间纵轴是城市,横轴是时间l转轴操作也可以在三维上进行转轴操作也可以在三维上进行 多维数据模型多维数据模型OLAP操作操作l数据立方体的预计算数据立方体的预计算物化物化l以此立方体为例以此立方体为例 三季度一季度二季度宁波四季度 杭州济南莱芜计算机电话电视 音响605825872970672634619623812845867 多维数据模型多维数据模型OLAP操作操作l三维:是格,(商品,季度,城市),三维:是格,(商品,季度,城市),保存最基本的数据保存最基本的数据 (6464个格)个格
42、)l 二维:是条求和,二维:是条求和,(商品,季度)有(商品,季度)有1616个条,(商品,城市)有个条,(商品,城市)有1616个条,个条, (季度,城市)有(季度,城市)有1616个条个条,(,(6464条)条)l一维:是面求和,(商品)有一维:是面求和,(商品)有4 4个面,个面,(季度)有(季度)有4 4个面,(城市)有个面,(城市)有4 4个面,个面,l零维:记为零维:记为 all, all, 是整个立方体,是整个立方体,1 1个个 多维数据模型多维数据模型OLAP操作操作l查询查询 l例:找出例:找出20002000年各月的销售总额和销售总量年各月的销售总额和销售总量lSelect
43、 Select 月,商品名月,商品名 ,商店名,城市,商店名,城市,SUM(RSUM(R:销售金额销售金额) ), SUM(R:SUM(R:销售量销售量) )lfrom from 销售事实表,时间销售事实表,时间 ,商品,地区,商,商品,地区,商店店lwhere where 年年=“2000”=“2000”lCube by Cube by (月,商品名(月,商品名 ,商店名,城市,商店名,城市:R:R) 多维数据模型的多维数据模型的OLAP操作操作l说明:说明: Cube byCube by子句对后面的属性月,商品子句对后面的属性月,商品名名 ,商店名,城市,所有可能的集合计算,商店名,城市,
44、所有可能的集合计算聚集聚集l例:找出各季度的销售总额和销售总量例:找出各季度的销售总额和销售总量lSelect Select 商品键,商店键,季度,商品键,商店键,季度,SUM(SUM(销售金销售金额额) ), SUM(SUM(销售量销售量) )lfrom from 销售事实表销售事实表 as Aas A,时间,时间 as Bas BlWhere A.Where A.时间键时间键=B.=B.时间键时间键lCube by Cube by (商品键,商店键,季度)(商品键,商店键,季度) 多维数据模型的多维数据模型的OLAP操作操作l同样,聚集的方式有:同样,聚集的方式有:lCube by Cub
45、e by (“电视电视”,“济南济南”,“银银座座”,“,“一季度一季度”)l Cube by Cube by (all, “all, “济南济南”,“银座银座”, “, “一季一季度度”)lCube byCube by( all, all, “all, all, “银座银座”,“一季度一季度”)lCube by Cube by (all, all, allall, all, all, allall) 多维数据模型的多维数据模型的OLAP操作操作l同样,聚集的方式有:同样,聚集的方式有:lCube by Cube by (“电视电视”,“济南济南”,“银银座座”,“,“一季度一季度”)+ Cube by+ Cube by(“音音响响”,“,“济南济南”,“银座银座”,“,“一季度一季度”)lCube by Cube by (all, all, “all, all, “银座银座”,“一季一季度度”)/ Cube by/ Cube by( all, all, allall, all, all, allall)* *100%100% 多维数据模型的多维数据模型的OLAP操作操作l上卷:上卷:lSelect Select 商品键,商店键,日期键,商品键,商店键,日期键,SUM(SUM(销售金额销售金额) ),
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025学生食堂承包合同书
- 2025餐饮发服务业保密协议合同
- 2025石料运输合同
- 2025年度青年人才公寓租赁合同关于房屋出租3篇
- 2025年度建筑钢结构质量检测与安全评估合同3篇
- 二零二五年度新能源汽车企业职工招聘与产业链整合合同3篇
- 2025年度餐饮连锁合伙经营合同样本2篇
- 二零二五年度农村有机垃圾堆肥处理与清理服务合同2篇
- 二零二五年度餐饮兼职煮饭人员培训协议3篇
- 2025年度模特与造型师拍摄服务合同3篇
- GB/T 1535-2017大豆油
- 植物细胞信号转导课件
- 医院感染质量控制中心工作总结和计划课件
- 第二章-地方理论-《旅游目的地管理》课件
- 河北省唐山市药品零售药店企业药房名单目录
- 水上运输大型构件安全交底
- 《保障农民工工资支付条例》口袋书课件
- 2020 新ACLS-PCSA课前自我测试-翻译版玉二医【复制】附有答案
- 危险化学品安全周知卡氧气
- DB13∕T 5517-2022 大田作物病虫草害防控关键期植保无人飞机作业技术规程
- 《编译原理》考试试习题及答案(汇总)
评论
0/150
提交评论