第4章 数据库常用对象对象_第1页
第4章 数据库常用对象对象_第2页
第4章 数据库常用对象对象_第3页
第4章 数据库常用对象对象_第4页
第4章 数据库常用对象对象_第5页
已阅读5页,还剩87页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

.,1,第4章数据库对象,从数据库用户的角度看,数据库中的数据是以表、视图等方式存储的。此外,用户还可以通过为表创建索引,以提高查询的执行速度。在Oracle系统中,对表、视图和索引的创建、维护是通过模式实现的。在本章中,我们将初步介绍Oracle中的模式概念,并重点介绍如何在模式中创建基本对象基本表、索引以及其他数据库常用对象,.,2,本章学习目标:,理解什么是模式了解模式对象与非模式对象之间的区别初步掌握如何创建用户账户,并进行基本的管理了解在创建表时Oracle允许使用的数据类型掌握如何在SQL*Plus环境中创建、修改基本的表了解其他索引的的创建和管理了解索引组织表、临时表、视图、同义词、序列的创建和基本使用,.,3,4.1.1用户和模式,在Oracle中,用户不能直接操作物理结构。用户可以直接操作的是表、索引和视图这样的逻辑对象。在Oracle数据库中,逻辑对象不是随意保存在数据库中的,Oracle是通过“模式”来组织和管理这些数据库对象。一个模式下对象不能重名,但是两个不同模式下可以存在同名的对象。一个模式对象可能被存于多个数据文件中(因为存于某一个表空间,而表空间包含多个数据文件),.,概述,Oracle模式(方案)是逻辑结构与对象的集合模式包含相关的数据库对象,与物理存储无关。一个模式对应一个数据库用户,且跟用户同名。用户可以创建模式对象,用于包含或引用数据。模式对象的创建:OEM工具语句,.,表1Oracle数据库模式对象,.,Oracle非模式对象,表空间用户角色模式和用户一一对应关系,模式是对象集合,用户可以管理创建模式对象,有时可以替换使用,对应的名称是一致的。但概念是完全不同的。比如创建表时可以指定创建到某个模式,也可以说成用户。,.,4.1.2用户,用户的创建和授权(必须具有connect或createsession权限)创建表必须有createtable和unlimitedtablespace权限,resource权限比较大,包含了创建表等的权限。默认用户创建对应的用户表空间是users,除非显式指定,临时表空间temp还可以给用户指定使用的空间配额quota关键字账户的锁定和解除锁定方法删除用户,如果用户中有对象必须指定cascade选项,.,8,4.2表,在Oracle系统中,表是主要的模式对象,也是基本的数据存储结构。一个表通常由多个列(字段)组成,并且每个列都具有名称,表中的每一行存放一条信息。,.,4.2.1创建表,用户必须具备:CREATETABLE的权限一定的存贮空间需要指定:表名列名、列的类型及列的宽度,CREATETABLEschema.table(columndatatypeDEFAULTexpr;,.,命名规则,必须以字母开头长度为130个字符只能包含AZ,az,09,_,$和#对于同一个用户不能使用和其他对象相同的名字不能是Oracle的保留字,.,DEFAULT选项,指定在插入数据时,列的默认值,hiredateDATEDEFAULTSYSDATE,合法的值可以是字面值、表达式或SQL函数非法的值是另一个列的名称或虚拟列默认的数据类型必须和列的类型匹配,.,数据类型,类型描述VARCHAR2(size)变长字符串CHAR(size)固定长度字符串NUMBER(p,s)变长数值DATE,timestamp日期和时间值,date用户转换LONG可存放高达2GB的变长字符数据CLOB可存放高达4GB的变长单字节数据RAWandLONGRAW二进制数据BLOB可存放高达4GB二进制数据BFILEBinarydatastoredinanexternalfile;upto4gigabytes,建议使用固定长度类型,nchar表示uncode类型,一个字符占两个字节位置,rowid和rownum的使用。,.,创建表,SQLCREATETABLEdept12(deptnoNUMBER(2),3dnameVARCHAR2(14),4locVARCHAR2(13);Tablecreated.,创建表,验证是否创建成功,SQLDESCRIBEdept1,NameNull?Type-DEPTNONOTNULLNUMBER(2)DNAMEVARCHAR2(14)LOCVARCHAR2(13),.,表特性,Tablespace子句指定表创建在哪个表空间,可以用user_tables查看表空间Storage子句,指定表如何使用存储空间,可以根据不同表进行设置设置数据块子句,主要减少行迁移重做子句,指定对表的操作是否记录到日志Cache子句可以指定将某个常用的表数据常驻内存的数据库高速缓存中。,.,查询数据字典,列出当前用户的表,列出当前用户不同的对象类型,查询当前用户的表、视图、同义词及序列,SQLSELECTtable_name2FROMuser_tables;,SQLSELECTDISTINCTobject_type2FROMuser_objects;,SQLSELECT*2FROMuser_catalog;,.,用子查询创建表,在CREATETABLE语句的AS子句中使用子查询可以在创建表的同时插入数据所指定列的数量和类型必须和子查询中列的数量和类型相匹配由列名和默认值定义列,CREATETABLEtablecolumn(,column.)ASsubquery;,.,使用子查询创建表,NameNull?Type-EMPNONOTNULLNUMBER(4)ENAMEVARCHAR2(10)ANNSALNUMBERHIREDATEDATE,SQLDESCRIBEdept30,SQLCREATETABLEdept302AS3SELECTempno,ename,sal*12ANNSAL,hiredate4FROMemp5WHEREdeptno=30;Tablecreated.,.,18,4.2.2修改表,在表被创建之后,如果发现对表的定义有不满意的地方,还可以对表进行修改操作。对表进行修改操作包括:增加或删除表中的字段、改变表的存储参数设置,以及对表进行增加、删减和重命名等操作。同样对表的修改即可以通过在SQL*Plus中使用ALTERTABLE语句实现,也可以通过OEM图形化工具实现。,.,ALTERTABLE语句,使用ALTERTABLE语句可以:添加一个列修改已存在的列为新列定义默认值,ALTERTABLEtableADD(columndatatypeDEFAULTexpr,columndatatype.);,ALTERTABLEtableMODIFY(columndatatypeDEFAULTexpr,columndatatype.);,.,添加新列,DEPT30,EMPNOENAMEANNSALHIREDATE-7698BLAKE3420001-MAY-817654MARTIN1500028-SEP-817499ALLEN1920020-FEB-817844TURNER1800008-SEP-81.,DEPT30,EMPNOENAMEANNSALHIREDATE-7698BLAKE3420001-MAY-817654MARTIN1500028-SEP-817499ALLEN1920020-FEB-817844TURNER1800008-SEP-81.,JOB,新列,.,添加新列,使用ADD子句添加新列columns.,EMPNOENAMEANNSALHIREDATEJOB-7698BLAKE3420001-MAY-817654MARTIN1500028-SEP-817499ALLEN1920020-FEB-817844TURNER1800008-SEP-81.6rowsselected.,SQLALTERTABLEdept302ADD(jobVARCHAR2(9);Tablealtered.,新列成为表的最后一列,.,修改列,可以修改列的数据类型、长度及默认值改变列的默认值仅仅影响后来插入的新记录删除列,altertablet_namedropcolumncol_n(删除一个列的话必须带column关键字,如果两个以上的列不能带关键字,并且用小括号括起来),ALTERTABLEdept30MODIFY(enameVARCHAR2(15);Tablealtered.,.,设置列为无用状态Altertableempsetunused(job,sal)数据字典user_unused_col_tabs,all_unused_col_tabsAltertableempdropunusedcolumn调整表特性Move子句手动给表分配存储空间回收无用表空间,.,24,4.2.3删除表定义,当删除表定义时,需要注意用户一般情况下只能删除自己模式中的表,如果用户要删除其他模式中的表,则用户必须具有DROPANYTABLE系统权限。要删除不再需要的表,可以使用DROPTABLE语句。如下面的语句删除了表EMPLOYEE。,.,删除表,表中的所有数据和结构都被删除任何悬而未决的事务都将被提交所有的索引被删除.不能回滚该语句,SQLDROPTABLEdept30;Tabledropped.,.,4.2.4修改对象的名称,要修改表、视图、序列或同义词的名称,可以使用RENAME语句必须拥有对象的所有权.,SQLRENAMEdept1TOdepartment;Tablerenamed.,.,4.2.5截断表,TRUNCATETABLE语句:删除表中所有记录释放该表的存储空间使用TRUNCATE移除后不能回滚换一种方法可以使用DELETE语句删除记录,SQLTRUNCATETABLEdepartment;Tabletruncated.,.,4.2.6给表添加注释,使用COMMENT语句,可以为表或列添加注释注释可以通过以下字典表查询ALL_COL_COMMENTSUSER_COL_COMMENTSALL_TAB_COMMENTSUSER_TAB_COMMENTS,SQLCOMMENTONTABLEemp2ISEmployeeInformation;Commentcreated.,.,4.3数据完整性(约束),数据库不仅仅是存储数据,它也必须保证所保存的数据的正确性。如果数据不准确或不一致,那么该数据的完整性可能会受到破坏,从而给数据库本身的可靠性带来问题。为了维护数据库中数据的完整性,在创建表时常常需要定义一些约束。通过为表中的字段定义约束,可以防止将错误的数据插入到表中。对约束的定义即可以在CREATETABLE语句中进行,也可以在ALTERTABLE语句中进行。,.,4.3.1什么是约束,约束在表一级实施相应规则约束可以阻止删除和其它表具有相关性的表以下是Oracle中有效的约束类型:NOTNULLUNIQUEKeyPRIMARYKEYFOREIGNKEYCHECK,.,约束准则,给约束命名或者由Oreacle服务器产生一个形式为SYS_Cn的名称创建约束:创建表的同时便创建约束表创建以后再创建约束在列或者表一级定义约束在数据字典中可以查询约束,.,4.3.2定义约束,.,定义约束,列约束级表约束级,columnCONSTRAINTconstraint_nameconstraint_type,column,.CONSTRAINTconstraint_nameconstraint_type(column,.),.,NOTNULL约束,确保该列不允许存放空值,EMP,EMPNOENAMEJOB.COMMDEPTNO7839KINGPRESIDENT107698BLAKEMANAGER307782CLARKMANAGER107566JONESMANAGER20.,.,NOTNULL约束,在列一级上定义约束,SQLCREATETABLEemployee(2empnoNUMBER(4),3enameVARCHAR2(10)NOTNULL,4jobVARCHAR2(9),5mgrNUMBER(4),6hiredateDATE,7salNUMBER(7,2),8commNUMBER(7,2),9deptnoNUMBER(7,2)NOTNULL);,.,UNIQUE约束,DEPT,DEPTNODNAMELOC-10ACCOUNTINGNEWYORK20RESEARCHDALLAS30SALESCHICAGO40OPERATIONSBOSTON,UNIQUE约束,.,UNIQUE约束,可以定义在表或列一级,SQLCREATETABLEdeptment(2deptnoNUMBER(2),3dnameVARCHAR2(14),4locVARCHAR2(13),5CONSTRAINTdept_dname_ukUNIQUE(dname);,.,PRIMARYKEY约束,DEPT,DEPTNODNAMELOC-10ACCOUNTINGNEWYORK20RESEARCHDALLAS30SALESCHICAGO40OPERATIONSBOSTON,PRIMARYKEY,.,PRIMARYKEY约束,可以定义在表或列一级,SQLCREATETABLEdeptment(2deptnoNUMBER(2),3dnameVARCHAR2(14),4locVARCHAR2(13),5CONSTRAINTdept_dname_ukUNIQUE(dname),6CONSTRAINTdept_deptno_pkPRIMARYKEY(deptno);,.,FOREIGNKEY约束,DEPT,DEPTNODNAMELOC-10ACCOUNTINGNEWYORK20RESEARCHDALLAS.,PRIMARYKEY,EMP,EMPNOENAMEJOB.COMMDEPTNO7839KINGPRESIDENT107698BLAKEMANAGER30.,FOREIGNKEY,.,FOREIGNKEY约束,可以定义在表或列一级,SQLCREATETABLEemployee(2empnoNUMBER(4),3enameVARCHAR2(10)NOTNULL,4jobVARCHAR2(9),5mgrNUMBER(4),6hiredateDATE,7salNUMBER(7,2),8commNUMBER(7,2),9deptnoNUMBER(7,2)NOTNULL,10CONSTRAINTemp_deptno_fkFOREIGNKEY(deptno)11REFERENCESdept(deptno);,.,FOREIGNKEY约束中的关键字,FOREIGNKEY在表或列一级上定义外键REFERENCES标识父表及相应的列ONDELETECASCADE如果删除父表中的记录则允许级联删除子表中相关连的记录,.,CHECK约束,定义每条记录都必须满足的条件表达式不允许使用:对伪列的引用,例如:CURRVAL,NEXTVAL,LEVEL及ROWNUM可以调用SYSDATE,UID,USER及USERENV函数对其它记录其它值的查询,.,deptnoNUMBER(2),CONSTRAINTemp_deptno_ckCHECK(DEPTNOBETWEEN10AND99),.,.,添加约束,添加、删除但不是删除约束启用一个已经禁用的约束使用MODIFY子句增加NOTNULL约束,ALTERTABLEtableADDCONSTRAINTconstrainttype(column);,.,添加约束,为EMP表添加一个FOREIGNKEY约束,指定雇员的管理员编号必须是在EMP表中已经存在的雇员的雇员编号。,SQLALTERTABLEemp2ADDCONSTRAINTemp_mgr_fk3FOREIGNKEY(mgr)REFERENCESemp(empno);Tablealtered.,.,删除约束,从EMP表删除管理员约束,SQLALTERTABLEemp2DROPCONSTRAINTemp_mgr_fk;Tablealtered.,从DEPT表删除主键约束PRIMARYKEY,同时删除也删除了与该约束关联的EMP表DEPTNO上的外键FOREIGNKEY约束。,SQLALTERTABLEdept2DROPPRIMARYKEYCASCADE;Tablealtered.,.,禁用约束,在ALTERTABLE语句中使用DISABLE子句可以使约束失效使用CASCADE选项可以使与该约束是从属关系的约束同时失效,SQLALTERTABLEdeptment2DISABLECONSTRAINTdept_deptno_pkCASCADE;Tablealtered.,.,启用约束,使用ENABLE子句可以激活已经禁用的约束如果您启用唯一UNIQUE或主键PRIMARYKEY约束,唯一UNIQUE或主键PRIMARYKEY索引便自动创建,SQLALTERTABLEdeptment2ENABLECONSTRAINTdept_deptno_pk;Tablealtered.,.,查询约束,查询USER_CONSTRAINTS表可以检索出所有约束名称及定义,CONSTRAINT_NAMECSEARCH_CONDITION-DEPT_DEPTNO_CKCdeptnoBETWEEN10AND99DEPT_DEPTNO_PKPDEPT_DNAME_UKU,SQLSELECTconstraint_name,constraint_type,2search_condition3FROMuser_constraints4WHEREtable_name=DEPTMENT;,.,查询与约束相关的列,CONSTRAINT_NAMECOLUMN_NAME-EMP_DEPTNO_FKDEPTNOEMP_EMPNO_PKEMPNOEMP_MGR_FKMGRSYS_C00674EMPNOSYS_C00675DEPTNO,SQLSELECTconstraint_name,column_name2FROMuser_cons_columns3WHEREtable_name=DEPTMENT;,在USER_CONS_COLUMNS中查询与约束相关的列,.,小结,在Oracle中可以创建下列类型的约束:NOTNULLUNIQUEkeyPRIMARYKEYFOREIGNKEYCHECK通过数据字典表USER_CONSTRAINTS可以查询约束名称及其定义。,.,4.4查看表信息,在Oracle系统中,用户可以通过数据字典或OEM图形界面查询Oracle系统内部表和用户创建表的信息。对于数据库管理员而言,可以利用ANALYZE语句可以对表进行分析,通过分析可以获取关于指定对象的状态和统计信息,并且能够对指定对象的存储格式进行验证。分析表存储空间验证存储结构查看统计信息查看链接记录和迁移记录,.,4.4索引,索引(INDEX)是为了加快数据的查找而创建的数据库对象,特别是对大表,索引可以有效地提高查找速度,也可以保证数据的惟一性。索引是由Oracle自动使用和维护的,一旦创建成功,用户不必对索引进行直接的操作。索引是独立于表的数据库结构,即表和索引是分开存放的,当删除索引时,对拥有索引的表的数据没有影响。,.,在创建PRIMARYKEY和UNIQUE约束条件时,系统将自动为相应的列创建惟一(UNIQUE)索引。索引的名字同约束的名字一致。索引有两种:B*树索引和位图(BITMAP)索引。B*树索引是通常使用的索引,也是默认的索引类型。在这里主要讨论B*树索引。B*树是一种平衡2叉树,左右的查找路径一样。这种方法保证了对表的任何值的查找时间都相同。B*树索引可分为:惟一索引、非惟一索引、一列简单索引和多列复合索引。,.,创建索引一般要掌握以下原则:只有较大的表才有必要建立索引,表的记录应该大于50条,查询数据小于总行数的2%4%。虽然可以为表创建多个索引,但是无助于查询的索引不但不会提高效率,还会增加系统开销。因为当执行DML操作时,索引也要跟着更新,这时索引可能会降低系统的性能。一般在主键列或经常出现在WHERE子句或连接条件中的列建立索引,该列称为索引关键字。,.,索引的创建,CREATEUNIQUE|BITMAPINDEX索引名ON表名(列名1,列名2,.);其中:UNIQUE代表创建惟一索引,不指明为创建非惟一索引。BITMAP代表创建位图索引,如果不指明该参数,则创建B*树索引。列名是创建索引的关键字列,可以是一列或多列。,.,删除索引的语法,DROPINDEX索引名;删除索引的人应该是索引的创建者或拥有DROPANYINDEX系统权限的用户。索引的删除对表没有影响。,.,查看索引,通过查询数据字典USER_INDEXES可以检查创建的索引。通过查询数据字典USER_IND_COLUMNS可以检查索引的列。【训练1】显示emp表的索引:SELECTINDEX_NAME,INDEX_TYPE,UNIQUENESSFROMUSER_INDEXESWHERETABLE_NAME=EMP;,.,执行结果:INDEX_NAME-EMP_JOBSALNORMALNONUNIQUEPK_EMPNORMALUNIQUE说明:由本训练可见,emp表共有两个索引,其中EMP_JOBSAL是刚刚创建的,属于非惟一索引。PK_EMP为生成主键时系统创建的索引,属于惟一索引。,.,视图,视图是基于一张表或多张表或另外一个视图的逻辑表。视图不同于表,视图本身不包含任何数据。表是实际独立存在的实体,是用于存储数据的基本结构。而视图只是一种定义,对应一个查询语句。视图的数据都来自于某些表,这些表被称为基表。通过视图来查看表,就像是从不同的角度来观察一个(或多个)表。视图有如下一些优点:可以提高数据访问的安全性,通过视图往往只可以访问数据库中表的特定部分,限制了用户访问表的全部行和列。,.,简化了对数据的查询,隐藏了查询的复杂性。视图的数据来自一个复杂的查询,用户对视图的检索却很简单。一个视图可以检索多张表的数据,因此用户通过访问一个视图,可完成对多个表的访问。视图是相同数据的不同表示,通过为不同的用户创建同一个表的不同视图,使用户可分别访问同一个表的不同部分。视图可以在表能够使用的任何地方使用,但在对视图的操作上同表相比有些限制,特别是插入和修改操作。对视图的操作将传递到基表,所以在表上定义的约束条件和触发器在视图上将同样起作用。,.,视图的创建,创建视图需要CREAEVIEW系统权限,视图的创建语法如下:CREATEORREPLACEFORCE|NOFORCEVIEW视图名(别名1,别名2.)AS子查询WITHCHECKOPTIONCONSTRAINT约束名WITHREADONLY其中:ORREPLACE表示替代已经存在的视图。FORCE表示不管基表是否存在,创建视图。NOFORCE表示只有基表存在时,才创建视图,是默认值。,.,别名是为子查询中选中的列新定义的名字,替代查询表中原有的列名。子查询是一个用于定义视图的SELECT查询语句,可以包含连接、分组及子查询。WITHCHECKOPTION表示进行视图插入或修改时必须满足子查询的约束条件。后面的约束名是该约束条件的名字。WITHREADONLY表示视图是只读的。,.,删除视图,DROPVIEW视图名;删除视图者需要是视图的建立者或者拥有DROPANYVIEW权限。视图的删除不影响基表,不会丢失数据。,.,视图的操作,对视图经常进行的操作是查询操作,但也可以在一定条件下对视图进行插入、删除和修改操作。对视图的这些操作最终传递到基表。但是对视图的操作有很多限定。如果视图设置了只读,则对视图只能进行查询,不能进行修改操作。基表本身的限制和约束也必须要考虑。如果生成子查询的语句是一个分组查询,或查询中出现计算列,这时显然不能对表进行插入。主键和NOTNULL列如果没有出现在视图的子查询中,也不能对视图进行插入。在视图中插入的数据,也必须满足基表的约束条件。,.,视图的查看,USER_VIEWS字典中包含了视图的定义。USER_UPDATABLE_COLUMNS字典包含了哪些列可以更新、插入、删除。USER_OBJECTS字典中包含了用户的对象。可以通过DESCRIBE命令查看字典的其他列信息。在这里给出一个训练例子。,.,同义词,同义词(SYNONYM)是为模式对象起的别名,可以为表、视图、序列、过程、函数和包等数据库模式对象创建同义词。同义词有两种:公有同义词和私有同义词。公有同义词是对所有用户都可用的。创建公有同义词必须拥有系统权限CREATEPUBLICSYNONYM;创建私有同义词需要CREATESYNONYM系统权限。私有同义词只对拥有同义词的账户有效,但私有同义词也可以通过授权,使其对其他用户有效。同义词通过给本地或远程对象分配一个通用或简单的名称,隐藏了对象的拥有者和对象的真实名称,也简化了SQL语句。,.,如果同义词同对象名称重名,私有同义词又同公有同义词重名,那么,识别的顺序是怎样的呢?如果存在对象名,则优先识别,其次识别私有同义词,最后识别公有同义词。比如,执行以下的SELECT语句:SELECT*FROMABC;如果存在表ABC,就对表ABC执行查询语句;如果不存在表ABC,就去查看是否有私有同义词ABC,如果有就对ABC执行查询(此时ABC是另外一个表的同义词);如果没有私有同义词ABC,则去查找公有同义词;如果找不到,则查询失败。,.,同义词的创建和使用,CREATEPUBLICSYNONYM同义词名FOR模式名.对象名数据库链路名;其中:PUBLIC代表创建公有同义词,若省略则代表创建私有同义词。模式名代表拥有对象的模式账户名。,.,数据库链路名是指向远程对象的数据库链接。删除同义词的语法如下DROPSYNONYM同义词名;删除同义词的人必须是同义词的拥有者或有DROPANYSYNONYM权限的人。删除同义词不会删除对应的对象。,.,同义词的查看,通过查询数据字典USER_OBJECTS和USER_SYNONYMS,可以查看同义词信息,.,4系统定义同义词系统为常用的对象预定义了一些同义词,利用它们可以方便地访问用户的常用对象。这些同义词如表5-2所示。,表5-2Oracle数据库模式对象,.,序列,序列(SEQUENCE)是序列号生成器,可以为表中的行自动生成序列号,产生一组等间隔的数值(类型为数字)。其主要的用途是生成表的主键值,可以在插入语句中引用,也可以通过查询检查当前值,或使序列增至下一个值。创建序列需要CREATESEQUENCE系统权限。,.,CREATESEQUENCE序列名INCREMENTBYnSTARTWITHnMAXVALUEn|NOMAXVALUEMINVALUEn|NOMINVALUECYCLE|NOCYCLECACHEn|NOCACHE;,.,INCREMENTBY用于定义序列的步长,如果省略,则默认为1,如果出现负值,则代表序列的值是按照此步长递减的。STARTWITH定义序列的初始值(即产生的第一个值),默认为1。MAXVALUE定义序列生成器能产生的最大值。选项NOMAXVALUE是默认选项,代表没有最大值定义,这时对于递增序列,系统能够产生的最大值是10的27次方;对于递减序列,最大值是-1。,.,MINVALUE定义序列生成器能产生的最小值。选项NOMAXVALUE是默认选项,代表没有最小值定义,这时对于递减序列,系统能够产生的最小值是?10的26次方;对于递增序列,最小值是1。CYCLE和NOCYCLE表示当序列生成器的值达到限制值后是否循环。CYCLE代表循环,NOCYCLE代表不循环。如果循环,则当递增序列达到最大值时,循环到最小值;对于递减序列达到最小值时,循环到最大值。如果不循环,达到限制值后,继续产生新值就会发生错误。CACHE(缓冲)定义存放序列的内存块的大小,默认为20。NOCACHE表示不对序列进行内存缓冲。对序列进行内存缓冲,可以改善序列的性能。,.,DROPSEQUENCE序列名;删除序列的人应该是序列的创建者或拥有DROPANYSEQUENCE系统权限的用户。序列一旦删除就不能被引用了。序列的某些部分也可以在使用中进行修改,但不能修改SATRTWITH选项。对序列的修改只影响随后产生的序号,已经产生的序号不变。修改序列的语法如下:,删除序列,.,ALTERSEQUENCE序列名INCREMENTBYnMAXVALUEn|NOMAXVALUEMINVALUEn|NOMINVALUECYCLE|NOCYCLECACHEn|NOCACHE;,.,方法是使用CURRVAL和NEXTVAL来引用序列的值。调用NEXTVAL将生成序列中的下一个序列号,调用时要指出序列名,即用以下方式调用:序列名.NEXTVALCURRVAL用于产生序列的当前值,无论调用多少次都不会产生序列的下一个值。如果序列还没有通过调用NEXTVAL产生过序列的下一个值,先引用CURRVAL没有意义。调用CURRVAL的方法同上,要指出序列名,即用以下方式调用:序列名.CURRVAL.,序列的使用,.,产生序列的第一个值:SELECTABC.NEXTVALFROMDUAL;执行结果:NEXTVAL-10产生序列的下一个值:SELECTABC.NEXTVALFROMDUAL;执行结果:NEXTVAL-11,.,SELECTABC.CURRVALFROMDUAL;执行结果:CURRVAL-11说明:第一次调用NEXTVAL产生序列的初始值,根据定义知道初始值为10。第二次调用产生11,因为序列的步长为1。调用CURRVAL,显示当前值11,不产生新值。,.,序列的应用:产生员工序列号。创建序列:CREATESEQUENCEEMPIDINCREMENTBY1STARTWITH10MAXVALUE9999999NOCYCLENOCACHE;执行结果:序列已创建。使用序列生成新的员工编号:INSERTINTOemp(empno)VALUES(TO_CHAR(EMPID.NEXTVAL);注意:通过查询看到插入的序号是连续的,但如果在插入的过程中使用了回退或发生了系统崩溃等情况,可能会产生序号的间隔。,.,同过数据字典USER_OBJECTS可以查看用户拥有的序列。通过数据字典USER_SEQUENCES可以查看序列的设置。【训练1】查看用户的序列:SELECTSEQUENCE_NAME,MIN_VALUE,MAX_VALUE,INCREMENT_BY,LAST_NUMBERFROMUSER_SEQUENCES;,查看序列,.,Cluster,如果一组表有一些共同的列,则将这样一组表存储在相同的数据库块中;

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论