




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、ORACLE数据库命名编码规范1、编写目的使用统一的命名和编码规范,使数据库命名及编码风格标准化,以便于阅读、理解和继承,在实现业务功能的同时具有较佳的运行性能。2、适用范围本规范适用于公司范围内所有以ORACLE作为后台数据库的应用系统和项目开发工作。3、对象命名规范应遵守的通用规则1、必须使用拼写正确的英文单词。不允许使用汉语拼音或者其他首拼等缩写。2、词汇必须完整。不允许使用随意的简写形式。3、如果名字代表复数意义,应使用其正确的复数形式。4、约定俗成的字母缩写,可作为一个单词使用。5、应尽量将标志符的意义描述清楚。即使用一个以上的单词来表示一项内容。6、所有的对象名都是大写3.1数据库
2、和SID1、全局数据库名和例程SID名要求一致2、数据库名定义为系统+功能名称,例如核心业务生产,可以命名为lisprod3、因SID名只能包含字符和数字,所以全局数据库名和SID名中不能含有等字符3.2表空间建议在表空间的命名前面统一加上系统名,比如一个数据库有多个系统的DATA的情况下1、面向用户的专用数据表空间以系统名用户名+DATA命名,如AUD用户专用数据表空间可命名为PI_AUD_DATA(PI表示个险)2、面向用户的专用索引表空间以系统名用户名+_+IDX命名3、面向用户的专用临时表空间以系统名用户名+_+TMP命名4、面向用户的专用回滚段表空间以系统名_用户名+_+RBS命名5
3、、面向应用的表空间以系统名_应用名+_DATA/系统名_应用名+_IDX/系统名应用名+_TMP/应用名+_RBS命M6、LOB段数据专用表空间以其数据表空间+_+LOBS命名,如上例中数据表空间为AUD_DATA,贝ULOB段表空间可命名为AUD_DATA_LOBS7、表空间文件表空间文件命名以表空间名+两位数6号(序号从01开始)组成,如AUD_DATA01等3.3表3.3.1表和视图的命名表要存放在所对应的表空间下,命名的时候可以加上表空间的简称,表命名要遵循以下原则1、一般表采用模块名+_+表义名”格式构成2、若数据库中只含有单个模块,命名可采用装义名”格式构成3、模块名或表义名均以其
4、英文的字符命名,4、表别名命名规则:取表义名的前3个字符加最后一个字符。如果存在冲突,适当增加字符(如取表义名的前4个字符加最后一个字符等)5、临时表采用模块名+表义名+TMP”格式构成6、关联表命名为RE表A_<B,RE是RELATIVE的缩写,表A和表B均采用其表义名或缩写形式。备注:资料表用来存储历史资料,命名以HISTORY结尾._HISTORY.资料表用来存储日志资料,命名以LOG结尾._LOG.资料表用来存储类别资料,命名以TYPE结尾._TYPE.视图的命名规则和表基本上不变,但是一定要加上前缀V_/MV_3.3.2属性(列或字段)属性命名遵循以下原则:命名只能使用英文字母
5、,数字和下划线;表主键名称为:PK_+表名+column_name,如DOCUMENT表的主键名为:PK_DOCUMENT_columuname避血使用ORACLE的保留字如LEVEL、关键字如TYPE;各个表之间相关列名尽量同名,而且属性要一致采用有意义的列名,为实际含义的英文意思,且字符间根据需求添加分割符属性名前不要加表名等作为前缀所有标记ID的字段都为NUMBER型.属性后不加任何类型标识作为后缀基本数据表需要添加DISABLE字段,如果发生删除操作,则该字段记载操作时问,否则为空,另外需要添加LAST_UPDATE_TIME,LAST_UPDATE_USER,LAST_UPDATE_
6、PROGRAM,CREATE_USER,CREATE_TIME命名最好望文生义,避免使市数据库关键词.英文单词单数命名.例:MAIL.英文单词缩写命名.例:DEPT_ID.英文单词之间用下划线连结,且每个单词皆为单数.例:USER_NAME.字段用来存储流水号命名以ID结尾.例:BARCODE_ID.字段用来存储代码,命名以CODE结尾.例:ERROR_CODE.字段用来存储日期,命名以DATE结尾.例:CREATE_DATE.字段用来存储数量命名以QTY结尾.例:PLAN_QTY.字段用来存储类别,命名以TYPE结尾.例:STATION_TYPE.字段用来存储名称,命名以NAME结尾.例:E
7、NDUSER_NAME.字段用来存储描述,命名以DESC结尾.例:STATION_DESC.字段用来存储标志,命名以FLAG开头.例:DEBUG_FLAG.字段用来存储英文名称或描述,命名以EN结尾.例USER_NAME_EN或CODE_DESC_EN.3.3.3主键1、任何表都必须定义主键2、表主键命名为:PK+_+表名(或缩写)+_+主键标识”1.1.4 外键表外键命名为:FK+_+表名(或缩写)+_主表名(或缩写)+_+主键标识”对能会引起命名长度过长的问题)1.1.5 CHECK约束CHECK约束命名为:CHK_+表名+_CHECK约束的列名(或缩写)”1.1.6 UNIQUE约束UN
8、IQUE约束命名为:UNQ_+表名+_UNIQUE约束的列名(或缩写)”(不加表名可能会引起重名)1.1.7 索引索引的命名为:“IDX联名(或缩写)+_列名”。其中多单词组成的属性列列名取前几个单词首字符再加末单词首字符组成.1.1.8 触发器.?AFTER型触发器TRI_+<表名>_+<I,U,D的任意组合>+_ROW.?BEFORE型触发器TRI_+<表名>_+BEF_<I,U,D的任意组合>+_ROW.?INSTEADOF型触发器TRI_+<表名>_+<I,U,D的任意组合>+_ROW.?各种类型的触发器中I,U,
9、D分别表示INSERT、UPDATE和DELETE行级触发器,后加_ROW标识3.4 序列序列命名以SEQ_坳义名组成3.5 同义词同义词命名与其基础对象的名称一致,但要去除其用户前缀或含有远程数据库链接的后缀3.6 存储对象相关3.6.1 存储过程存储过程命名由PRO_+存储过程标识(缩写)”组成存储过程标识要以实际含义的英文构成,并用下划线分割各个组成部分。3.6.2 函数函数命名由FUN_+函数标识”组成3.6.3 包包命名由PKG_+包标识”组成3.6.4 函数函数文本中的变量采用下列格式命名:.?参数变量命名采用I'(O或IO)+_+名称”形式,前缀I或O表输入还是输出参数.
10、?过程变量命名采用L+_+名称”形式.?全局包变量命名采用G+_+名称”形式.?游标变量命名采用“CUR名称”形式.?常量型变量命名采用C+_+名称”形式.?变量名采用小写,若属于曲组形式,用下划线分隔每个单词.?变量用来存放表中的列或行数据值时,使用TYPE、ROWTYPE方式声明变量,使变量声明的类型与表中的保持同步,随表的变化而变化3.7 用户及角色.?用户命名由系统名称名词(或缩写)或名词短语(或缩写】组成.?角色命名由ROLE+_+名词(或缩写)或名词短语(或缩写)'组成3.8 数据库链接.?数据库链接命名由远程服务器名+_+数据库名+_+LINK”组成.?若远程服务器名和数
11、据库名一致,上去二+数据正名”部分省去3.9 命名中的其它注意事项.?命名都不得超过30个字符。.?命名不要使用双引号。.?不要在对象名的字符之间留空格。.?小心保留词,要保证你的命名没有和保留词、数据库系统或者常用访问方法冲突。4.1 编码规范4.2 一般性注释1、注释尽可能简洁、详细而全面2、创建每一数据库对象时都要加上COMMENTON注释,以说明该对象的功能和用途;建表时,对某些数据列也要加上COMMENTON注释,以说明该列和/或列取值的含义。如:XX表中有YY列属性为NUMBER(10,0)可力口COMMENTON注释如下COMMENTONCOLUMNXX.YYIS'0=正
12、常,1=等待,2=超时,3=登出3、注释语法包含两种情况:单行注释、多行注释单行注释:注释前有两个连字符(-),一般对变量、条件子句可以采用该类注释。多行注释:符号/*和*/之间的内容为注释内容。对某项完整的操作建议使用该类注释。4.3 函数文本注释1、在每一个块和过程(存储过程、函数、包、触发器、视图等)的开头放置注释/*NAME:-函数名"FUNCTION-函数功能*INPUT:-输入参数*OUTPUT:-输出参数*AUTHOR-作者*CREATEDATE-创建时间*UPDATEDATE:-函数更改信息(包括作者、时间、更改内容等)*/CREATEORREPLACEPROCEDU
13、REDFSP_XXX2、传入参数的含义应该有所说明。如果取值范围确定,也应该一并说明。取值有特定含义的变量(如BOOLEAN类型变量),应给出每个值的含义。3、在每一个变量声明的旁边添加注释。说明该变量要用作什么通常,简单使用单行注释就行了,例如L_USER_CODECHAR(18)-身份证号码4、在块的每个主要部分之前添加注释在块的每个主要部分之前增加注释,解释下一组语句目的,最好是说明该段语句及算法的目的以及要得到的结果,但不要对其细节进行过多的描述5、在块和过程的开头注释中还可以增加要访问的数据库等信息4.4 常用SQL语句的编写规范4.4.1 CREATE语句CREATETABLEDF
14、T_DKSZ(YHBSVARCHAR2(20)NOTNULL,ZHGXDATE,DKKHDVARCHAR2(24),CONSTRAINTPK_DKSZ_YHBSPRIMARYKEY(YHBS)4.4.2 SELECT语句查询语句采用以下原则编写(可最大化重用共享池中的SQL语句,提高应用程序性能):.?将SELECT语句分为5部分:1 .由SELECT开头,后跟一个显示查询结果的列表;2 .由FROM开头,后跟一个或多个获取数据所涉及的表;3 .由WHERE开头,后跟一个或多个确定所需值的条件;4 .由GROUPBY开头,后跟一个或多个表列名,通过这些列以对查询结果进行汇总;5 .由ORDER
15、BY开头,后跟一个或多个表列名,通过这些列以对查询结果进行排序。.?每个部分分行编写,将每一行的第一个关键字与第一行的SELECT尾部对齐,如SELECTCOL1,COL2,COL3FROMTABLE1WHERECOL1COL2GROUPBYCOL1,COL2ORDERBYCOL1;?关键字用大写,列名和表名采用小写?当语句的同一部分要延续到下一行时,按下列格式排列:SELECTCOL1,COL2,COL3,COL4,COL5,COL6,COL7,COL8,COL9,COL10?将语句中WHERE和AND部分格式化,书写布局类似于WHEREANDAND?当语句中出现括号时,括号的两边不留空格1
16、.1.3 INSERT语句INSERTINTO要插入的表名(歹11,歹2,.,歹UN-1,歹UN)VALUES(歹1值,列2值,.,歹UN-1值,歹UN值)1.1.4 UPDATE语句UPDATE要更新的表名SET要更新的列=列值1.1.5 DELETE语句DELETEFROMTABLE1WHERECOL1='?'4.4 条件执行语句(IF)编写规范条件执行语句IFELSE按以下格式编写IF条件表达式THEN一条或多条语句ELSE(或ELSIF条件表达式)THEN一条或多条语句ENDIF;注:1、在IFTHEN和ELSE(或ELSIF)及ELSE-THEN和ENDIF间可包含一
17、条或多条PL/SQL语句,而不需要加BEGIN和END2、IF-ELSE-ENDIF语句可以嵌套3、注意ELSIF的写法4.5 循环语句编写规范4.5.1 简单循环语句LOOP零条或多条语句EXITWHEN条件表达式零条或多条语句ENDLOOP;4.5.2 FOR循环语句FOR变量IN变量取值范围LOOP一条或多条语句ENDLOOP;4.5.3 WHILE循环语句WHILE条件表达式LOOP一条或多条语句ENDLOOP;4.6 函数文本(存储过程、函数和包等)?对于存储过程、函数等程序块都要有异常处理部分,在异常部分的最后都要设SOTHERS异常情态处理器,以提高程序的自检能力,格式如下:BE
18、GINEXCEPTIONWHENEXCEPNAME1THENWHENEXCEPNAME2THENWHENOTHERSTHENEND;?对于子程序、触发器、包等带名的程序块,要使用结束标识,如CREATEORREPLACEPROCEDUREXXXSPXXXISBEGINENDXXXSP_XXX;/*止匕处的过程名XXXSP_XXX是可选的,规范要求写上,与块开始的CREATE相对应*/5与性能相关sql编写规范WHERE子句中的连接顺序:ORACLE采用自下而上的顺序解析WHERE子句,根据这个原理,表之间的连接必须写在其他WHERE条件之前,那些可以过滤掉最大数量记录的条件必须写在WHERE子
19、句的末尾.SELECT子句中避免使用'*:'ORACLE在解析的过程中,会将'*'依次转换成所有的列名,这个工作是通过查询数据字典完成的,这意味着将耗费更多的时间减少访问数据库的次数:ORACLE在内部执行了许多工作:解析SQL语句,估算索引的利用率,绑定变量,读数据块等;整合简单,无关联的数据库访问:假如你有几个简单白数据库查询语句,你可以把它们整合到一个查询中(即使它们之间没有关系)删除重复记录:最高效的删除重复记录方法(因为使用了ROWID)例子:DELETEFROMEMPEWHEREE.ROWID>(SELECTMIN(X.ROWID)FROMEM
20、PXWHEREX.EMP_NO=E.EMP_NO);用TRUNCATE替代DELETE:当删除表中的记录时,在通常情况下,回滚段(rollbacksegments)用来存放可以被恢复的信息.假如你没有COMMIT事务,ORACLE会将数据恢复到删除之前的状态(准确地说是恢复到执行删除命令之前的状况)而当运用TRUNCATE时,回滚段不再存放任何可被恢复的信息.当命令运行后,数据不能被恢复.因此很少的资源被调用,执行时间也会很短.(TRUNCATE只在删除全表适用,TRUNCATE是DDL不是DML)尽量多使用COMMIT:只要有可能,在程序中尽量多使用COMMIT,这样程序的性能得到提高,需求
21、也会因为COMMIT所释放的资源而减少:COMMIT所释放的资源:a.回滚段上用于恢复数据的信息.b.被程序语句获得的锁c. redologbuffer中的空间d. ORACLE为治理上述3种资源中的内部花费用Where子句替换HAVING子句:避免使用HAVING子句,HAVING只会在检索出所有记录之后才对结果集进行过滤.这个处理需要排序,总计等操作.假如能通过WHERE子句限制记录的数目,那就能减少这方面的开销.(非oracle中)on、wherehaving这三个都可以加条件的子句中,on是最先执行,where次之,having最后,因为on是先把不符合条件的记录过滤后才进行统计,它就
22、可以减少中间运算要处理的数据,按理说应该速度是最快的,where也应该比having快点的,因为它过滤数据后才进行sum,在两个表联接时才用on的,所以在一个表的时候,就剩下where跟having比较了。在这单表查询统计的情况下,假如要过滤的条件没有涉及到要计算字段,那它们的结果是一样的,只是where可以使用rushmore技术,而having就不能,在速度上后者要慢假如要涉及到计算的字段,就表示在没计算之前,这个字段的值是不确定的,根据上篇写的工作流程,where的作用时间是在计算之前就完成的,而having就是在计算后才起作用的,所以在这种情况下,两者的结果会不同。在多表联接查询时,o
23、n比where更早起作用。系统首先根据各个表之间的联接条件,把多个表合成一个临时表后,再由where进行过滤,然后再计算,计算完后再由having进行过滤。由此可见,要想过滤条件起到正确的作用,首先要明白这个条件应该在什么时候起作用,然后再决定放在那里减少对表的查询:在含有子查询的SQL语句中,要非常注重减少对表的查询.例子:SELECTTAB_NAMEFROMTABLESWHERE(TAB_NAME,DB_VER)=(SELECTTAB_NAME,DB_VERFROMTAB_COLUMNSWHEREVERSION=604)通过内部函数提高SQL效率.:复杂的SQL往往牺牲了执行效率.能够把握
24、上面的运用函数解决问题的方法在实际工作中是非常有意义的使用表的别名(Alias):当在SQL语句中连接多个表时,请使用表的别名并把别名前缀于每个Column上.这样一来,就可以减少解析的时间并减少那些由Column歧义引起的语法错误.用EXISTS替代IN、用NOTEXISTS替代NOTIN:在许多基于基础表的查询中,为了满足一个条件,往往需要对另一个表进行联接.在这种情况下,使用EXISTS(或NOTEXISTS)通常将提高查询的效率.在子查询中,NOTIN子句将执行一个内部的排序和合并.无论在哪种情况下,NOTIN都是最低效的(因为它对子查询中的表执行了一个全表遍历).为了避免使用NOTI
25、N,我们可以把它改写成外连接(OuterJoins)或NOTEXISTS.例子:(高效)SELECT*FROMEMP(基础表)WHEREEMPNO>0ANDEXISTS(SELECT'X'FROMDEPTWHEREDEPT.DEPTNO=EMP.DEPTNOANDLOC='MELB')代氐效)SELECT*FROMEMP(基础表)WHEREEMPNO>0ANDDEPTNOIN(SELECTDEPTNOFROMDEPTWHERELOC=MELB')用索引提高效率:索引是表的一个概念部分,用来提高检索数据的效率,ORACLE使用了一个复杂的自平衡
26、B-tree结构.通常,通过索引查询数据比全表扫描要快.当ORACLE找出执行查询和Update语句的最佳路径时,ORACLE优化器将使用索引.同样在联结多个表时使用索引也可以提高效率.另一个使用索引的好处是,它提供了主键(primarykey)的唯一性验证.。那些LONG或LONGRAW数据类型,你可以索引几乎所有的列.通常,在大型表中使用索引非凡有效.当然,你也会发现,在扫描小表时,使用索引同样能提高效率.虽然使用索引能得到查询效率的提高,但是我们也必须注重到它的代价.索引需要空间来存储,也需要定期维护,每当有记录在表中增减或索引列被修改时,索引本身也会被修改.这意味着每条记录的INSER
27、T,DELETE,UPDATE将为此多付出4,5次的磁盘I/O.因为索引需要额外的存储空间和处理,那些不必要的索引反而会使查询反应时间变慢.0定期的重构索引是有必要的.:ALTERINDEX<INDEXNAME>REBUILD<TABLESPACENAME>用EXISTS替换DISTINCT:当提交一个包含一对多表信息(比如部门表和雇员表)的查询时,避免在SELECT子句中使用DISTINCT.一般可以考虑用EXIST替换,EXISTS使查询更为迅速,因为RDBMS核心模块将在子查询的条件一旦满足后,马上返回结果.例子:(低效):SELECTDISTINCTDEPT_N
28、O,DEPT_NAMEFROMDEPTD,EMPEWHERED.DEPT_NO=E.DEPT_NO(高效):SELECTDEPT_NO,DEPT_NAMEFROMDEPTDWHEREEXISTS(SELECT'X'FROMEMPEWHEREE.EPT_NO=D.DEPT_NO);sql语句用大写的;因为oracle总是先解析sql语句,把小写的字母转换成大写的再执行在Java代码中尽量少用连接符午"连接字符串!避免在索引列上使用NOT我们要避免在索引列上使用NOT,NOT会产生在和在索引列上使用函数相同的影响.当ORACLE碰到"NOTg就会停止使用索引转而
29、执行全表扫描.避免在索引列上使用计算.WHERE子句中,假如索引列是函数的一部分.优化器将不使用索引而使用全表扫描.举例:低效:SELECTFROMDEPTWHERESAL*12>25000;高效:SELECTFROMDEPTWHERESAL>25000/12;用>=替代>高效:SELECT*FROMEMPWHEREDEPTNO>=4低效:SELECT*FROMEMPWHEREDEPTNO>3两者的区别在于,前者DBMS将直接跳到第一个DEPT等于4的记录而后者将首先定位到DEPTNO=3的记录并且向前扫描到第一个DEPT大于3的记录.用UNION替换OR(
30、适用于索引列)通常情况下,用UNION替换WHERE子句中的OR将会起到较好的效果.对索引列使用OR将造成全表扫描.注重,以上规则只针对多个索引列有效.假如有column没有被索引,查询效率可能会因为你没有选择OR而降低.在下面的例子中,LOC_ID和REGION上者B建有索弓I.高效:SELECTLOC_ID,LOC_DESC,REGIONFROMLOCATIONWHERELOC_ID=10UNIONSELECTLOC_ID,LOC_DESC,REGIONFROMLOCATIONWHEREREGION=MELBOURNE低效:SELECTLOC_ID,LOC_DESC,REGIONFROML
31、OCATIONWHERELOC_ID=10ORREGION="MELBOURNE假如你坚持要用OR,那就需要返回记汆最少的索引列写在最前面.用IN来替换OR这是一条简单易记的规则,但是实际的执行效果还须检验,在ORACLE8i下,两者的执行路径似乎是相同的.低效:SELECT.FROMLOCATIONWHERELOC_ID=10ORLOC_ID=20ORLOC_ID=30高效SELECT-FROMLOCATIONWHERELOC_ININ(10,20,30);避免在索引列上使用ISNULL和ISNOTNULL避免在索引中使用任何可以为空的列,ORACLE将无法使用该索引.对于单列索引
32、,假如列包含空值,索引中将不存在此记录.对于复合索引,假如每个列都为空,索引中同样不存在此记录.假如至少有一个列不为空,则记录存在于索引中.举例:假如唯一性索引建立在表的A列和B列上,并且表中存在一条记录的A,B值为(123,null),ORACLE将不接受下一条具有相同A,B值(123,null)的记录(插入).然而假如所有的索引列都为空,ORACLE将认为整个键值为空而空不等于空.因此你可以插入1000条具有相同键值的记录,当然它们都是空!因为空值不存在于索引列中,所以WHERE子句中对索引列进行空值比较将使ORACLE停用该索引.低效:(索引失效)SELECTFROMDEPARTMENT
33、WHEREDEPT_CODEISNOTNULL;高效:(索引有效)SELECTFROMDEPARTMENTWHEREDEPT_CODE>=0;总是使用索引的第一个列:假如索引是建立在多个列上,只有在它的第一个列(leadingcolumn)被where子旬引用时,优化器才会选择使用该索引.这也是一条简单而重要的规则,当仅引用索引的第二个列时,优化器使用了全表扫描而忽略了索引用UNION-ALL替换UNION(假如有可能的话):当SQL语句需要UNION两个查询结果集合时,这两个结果集合会以UNION-ALL的方式被合并,然后在输出最终结果前进行排序.假如用UNIONALL替代UNION,
34、这样排序就不是必要了.效率就会因此得到提高.需要注重的是,UNIONALL将重复输出两个结果集合中相同记录.因此各位还是要从业务需求分析使用UNIONALL的可行性.UNION将对结果集合排序,这个操作会使用到SORT_AREA_SIZE这块内存.对于这块内存的优化也是相当重要的.下面的SQL可以用来查询排序的消耗量低效:SELECTACCT_NUM,BALANCE_AMTFROMDEBIT_TRANSACTIONSWHERETRAN_DATE='31-DEC-95'UNIONSELECTACCT_NUM,BALANCE_AMTFROMDEBIT_TRANSACTIONSWHE
35、RETRAN_DATE='31-DEC-95'高效:SELECTACCT_NUM,BALANCE_AMTFROMDEBIT_TRANSACTIONSWHERETRAN_DATE='31-DEC-95'UNIONALLSELECTACCT_NUM,BALANCE_AMTFROMDEBIT_TRANSACTIONSWHERETRAN_DATE='31-DEC-95'用WHERE替代ORDERBY:ORDERBY子句只在两种严格的条件下使用索引.ORDERBY中所有的列必须包含在相同的索引中并保持在索引中的排列顺序ORDERBY中所有的列必须定义为非空.WHERE子句使用的索引和ORDERBY子句中所使用的索引不能并列.例如:表DEPT包含以下列:DEPT_CODEPKNOTNULLDEPT_DESCNOTNULLDEPT_TYPENULL低效:(索引不被使用)SELECTDEPT_CODEFROMDEPTORDERBYDEPT_TYPE高效:(使用索弓I)SELECTDEPT_CODEFRO
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 水产养殖基地土地使用权合同
- 公司技术服务采购合同
- 豪华酒店厨师服务合同
- 电子产品购销合同标准版
- 房地产投资专项法律服务合同
- (完整版)农村土地租赁合同书
- 光学玻璃的紫外光固化涂层技术考核试卷
- 医疗用品行业服务平台拓展考核试卷
- 搪瓷原材料市场动态与价格趋势考核试卷
- 数字出版物的长期保存与数字遗产考核试卷
- 传染病防治法培训讲义课件
- 法律方法阶梯实用版课件
- 实验 探究弹簧弹力与形变量的关系2022-2023学年高一物理(人教版2019必修第一册)
- 《三位数的加减法》单元分析
- 钢管桩的计算公式
- 医疗质量管理与控制手册
- 美的职位与职衔管理手册
- 医学装备科医院设备绩效管理修订方案
- 散文课堂教学评价重点标准
- 桥梁钢筋加工安装
- 动物生物化学(全套577PPT课件)
评论
0/150
提交评论