文档详情

数据库应用技术教程第四章数据库对象.ppt

发布:2025-04-08约1.7万字共40页下载文档
文本预览下载声明

视图是一个虚表不存储数据,在使用时对原有数据的重新组织。它是一个逻辑结构,不占据存储空间。基于表、在大部分SQL中,特别是DQL和DML,语法地位等价于表010302044.3视图View01不同用户不同视角和权限。限制存取(字段级权限和行级权限)。02如,在求和值上做TOP-N查询简化查询:别名、减少代码长度和复杂性03可以将常用的连接查询构造成视图。提供不同的查询角度:04新表拼出旧表,视图兼容旧表的程序。兼容数据库设计的修改:使用视图的意义视图的创建与删除创建视图CREATE[ORREPLACE]VIEW名字[(字段列表)]ASSELECT子查询[WITHCHECKOPTION]ORREPLACE:对已有同名视图进行替换,有违反定义的修改,不允许。无则返错。如省略字段列表则用子查询返回的字段名定义删除视图DROPVIEW视图名视图上的DML简单视图可以直接执行复杂视图表的数目多于1个有字段表达式作为视图的列有聚组函数作为视图的列复杂视图的DML不一定能够正确执行带有CHECKOPTION的视图的DML,不能违反条件目的自动产生唯一编号,可看作编号发生器。1数字要求递增(或按一定规律变化),2不重复3不断号用作主键避免并发冲突减少应用程序代码提高性能4一个错误的例子54.4唯一性编号在MSSQL和MYSQL中,使用自增长字段作为解决方案01自增长字段是表格定义时,依附于某个字段(通常是主键)的属性02插入时无须为此字段指定值,即自增长03不同表之间不能复用必须有一种方式,获得上次insert的值04自增长字段在一个事务中,通过访问序列的NEXTVAL和CURRVAL可以获得序列的下一个值和当前值保证多个事务之间不会出现并发冲突不与某个表绑定,可以在多个表之间复用序列是一个独立的编号发生器序列SequencesDROPSEQUENCE序列名删除创建CREATESEQUENCE序列名[INCREMENTBYn][STARTWITHn][MAXVALUEn|NOMAXVALUE][MINVALUEn|NOMINVALUE][CYCLE|NOCYCLE][CACHEN|NOCACHE]序列的创建与维护使用序列的例子对象定义CREATETABLEINV_MASTER(INV_NONUMBER,…)CREATETABLEINV_DETAIL(INV_NONUMBER,LINE_NONUMBER,…)CREATESEQUENCESEQ_INV插入数据INSERTINTOINV_MASTER(INV_NO,…) VALUES (SEQ_INV.NEXTVAL,…)INSERTINTOINV_DETAIL(INV_NO,LINE_NO,…)VALUES (SEQ_INV.CURRVAL,1,…)4.5索引索引是这样一种数据库对象,它占据一定的存储空间,能够在查询时被自动使用,从而提高查询性能。基于一个表中某个字段或字段的联合索引的使用不影响语句的正确性和结果避免全表扫描由查询优化器自动使用,并非所有查询都能获益通过某些额外选项可以提示查询优化器利用索引可能会加快DQL速度,但对DML速度的影响是双重的建立索引的考虑建立索引字段取值范围较大字段中NULL值比例较大字段经常做为查询或连接条件多数查询期望返回行数较少不建立索引表较小表经常更新字段不常做为条件或出现在表达式内期望返回行数较多根据系统运行情况,对性能瓶颈进行优化逻辑分类唯一索引vs非唯一索引自动索引vs手工创建的索引UK,PK,FK基于函数的索引?物理分类Partitionedornon-partitionedB-treeNormalorreversekeyBitmap索引的分类B-TreeIndex的作用IndexentryheaderKeycolumnlengthKeycolumnvalueROWIDRootBranchLeafIndexentryBitmapIndex的作用Blue,10.0.3,12.8.3,1000100100010010100Green,10.0.3,12.8.3,0001010000100100000Red,10.0.3,12.8.3,0100000011000001001

显示全部
相似文档