数据库符号分隔值,入参相同符号 查询出每个字段

在这里插入图片描述

--根据C_SALECODE分隔
select * from (
    select regexp_substr(C_SALECODE, '[^,]+', 1, level) responsible,
		   Row_Number ( ) Over ( PARTITION BY regexp_substr(C_SALECODE, '[^,]+', 1, level) ,product_id,TMP_CONTRACT_NO ORDER BY GMT_CREATE DESC ) po,
			 E.*

        from 
				( select  *
        from DZHT_TMP_CONTRACT
				where product_id = '1932'
			)	E  
        connect by level <= regexp_count(C_SALECODE, ',') + 1	   
				)
where responsible in('606','507')
and product_id = '1932'
AND po='1'
;

```java
入参 string也可以
			 <foreach item="cSalecode" collection="cSalecode.split(',')" open="(" separator="OR" close=")">
            C_SALECODE LIKE CONCAT('%', CONCAT(#{cSalecode}, '%'))
        </foreach>
INSTR(','||A.C_SALECODE||',',#{ item }) > 0 OR INSTR(','||A.C_SALECODE||',',#{ item }) > 0
--查询最大版本
  select * from (
        select regexp_substr(C_SALECODE, '[^,]+', 1, level) responsible,
        Row_Number ( ) Over ( PARTITION BY  tmp_type,product_id  order by
        (TO_NUMBER(substr(replace(replace(E.tmp_version,'H',''),'V',''),1,instr(replace(replace(E.tmp_version,'H',''),'V',''),'-',1,1)-1))*10000 +
        TO_NUMBER(substr(replace(replace(E.tmp_version,'H',''),'V',''),instr(replace(replace(E.tmp_version,'H',''),'V',''),'-',1,1)+1)))
        desc ) po,
        E.*
        from
        (      
        select  *
        from DZHT_TMP_CONTRACT
        where product_id = #{productId}
        and  tmp_state != '12'
        and tmp_version is not null
        )	E
        connect by level  <![CDATA[<= ]]>   regexp_count(C_SALECODE, ',') + 1
        )
        where responsible in(${cSalecode})
        AND po='1'
orcal 函数 :  rank() over; dense_rank() over;  row_number() over;


一、rank() over
作用:查出指定条件后的进行排名,条件相同排名相同,排名间断不连续。

说明:例如学生排名,使用这个函数,成绩相同的两名是并列,下一位同学空出所占的名次。即:1 1 3 4 5 5 7

二、dense_rank() over
作用:查出指定条件后的进行排名,条件相同排名相同,排名间断不连续。

说明:和rank() over 的作用相同,区别在于dense_rank() over 排名是密集连续的。例如学生排名,使用这个函数,成绩相同的两名是并列,下一位同学接着下一个名次。即:1 1 2 3 4 5 5 6

三、row_number() over
作用:查出指定条件后的进行排名,条件相同排名也不相同,排名间断不连续。

说明:这个函数不需要考虑是否并列,即使根据条件查询出来的数值相同也会进行连续排序。即:1 2 3 4 5 6`

  • 3
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
Oracle9i初始化数中文说明 Blank_trimming: 说明: 如果为TRUE, 即使源长度比目标长度 (SQL92 兼容) 更长, 也允许分配数据。 范围: TRUE | FALSE 默认: FALSE serializable: 说明: 确定查询是否获取表级的读取锁, 以防止在包含该查询的事务处理被提交之前更新任何对象读取。这种操作模式提供可重复的读取, 并确保在同一事务处理种对相同数据的两次查询看到的是相同范围: TRUE | FALSE 默认: FALSE row_locking: 说明: 指定在表已更新或正在更新时是否获取行锁。如果设置为 ALWAYS, 只有在表被更新后才获取行锁。如果设置为 INTENT, 只有行锁将用于SELECT FOR UPDATE, 但在更新时将获取表锁。 范围: ALWAYS | DEFAULT | INTENT 默认: ALWAYS shared_servers 说明 : 指定在启动例程后, 要为共享服务器环境创建的服务器进程的数量。 范围: 根据操作系统而定。 默认 : 1 circuits: 说明 : 指定可用于站和站网络会话的虚拟电路总数。 该数是构成某个例程的总 SGA 要求的若干数之一。 默认 : 派生: SESSIONS 数的 (如果正在使用共享服务器体系结构); 否则为 0。 Mts_multiple_listeners: 说明: 指定多个监听程序的地址是分别指定的, 还是用一个 ADDRESS_LIST 字符串指定。如果该为 TRUE, MTS_LISTENER_ADDRESS 数可被指定为: (ADDRESS_LIST=(ADDRESS=(PROTOCOL=tcp)(PORT=5000)(HOST=zeus)) (ADDRESS=(PROTOCOL=decnet)(OBJECT=outa)(NODE=zeus)) 此数在 8.1.3 版中已废弃。 范围: TRUE | FALSE 默认: FALSE mts_servers: 说明 : 指定在启动例程后, 要为共享服务器环境创建的服务器进程的数量。 范围: 根据操作系统而定。 默认 : 1 mts_service: 说明 : 一个共享服务器数, 用于指定已在调度程序上注册, 用来建立数据库连接的唯一服务名。如果要在没有调度程序的情况下仍能连接到数据库, 请将该设置为与例程名相同。此数自 8.1.3 版起已废弃。 范围: 根据操作系统而定。 默认 :0 mts_sessions: 说明 : 指定允许的共享服务器体系结构用户会话的总数。设置此数可为专用服务器保留一些用户会话。 范围: 0 到 SESSIONS - 5 默认 : 派生: MTS_CIRCUITS 和 SESSIONS - 5 两者中的较小 shared_server_sessions: 说明 : 指定允许的共享服务器体系结构用户会话的总数。设置此数可为专用服务器保留一些用户会话。 范围: 0 到 SESSIONS - 5 默认 : 派生: MTS_CIRCUITS 和 SESSIONS - 5 两者中的较小 mts_max_dispatchers 说明 : 指定在一个共享服务器环境中可同时运行的调度程序进程的最大数量。 范围: 根据操作系统而定。 默认 : 如果已配置了调度程序, 则默认为大于 5 的任何数目或配置的调度程序的数目 mts_max_servers: 说明 : 指定在一个共享服务器环境中可同时运行的共享服务器进程的最大数量。 范围: 根据操作系统而定。 默认 : 20 dispatchers: 说明 : 为设置使用共享服务器的共享环境而设置调度程序的数量和类型。可以为该数指定几个选项。有关详细信息, 请阅“Oracle8i 管理员指南”和“Oracle Net Administrator's Guide”。这是字符串的一个示例: '(PROTOCOL=TCP)(DISPATCHERS=3)'。 范围: 数的有效指定。 默认 : NULL max_shared_servers: 说明 : 指定在一个共享服务器环境中可同时运行的共享服务器进程的最大数量。 范围: 根据操作系统而定。 默认 : 20 mts_circuits: 说明 : 指定可用于站和站网络会话的虚拟电路总数。 该数是构成某个例程的总 SGA 要求的若干数之一。 默认 : 派生: SESSIONS 数的 (如果正在使用共享服务器体系结构); 否则为 0。 Mts_listener_address: 说明 : 指定共享服务器的监听程序配置。监听程序进程需要一个监听地址, 以便处理系统所用的各个网络协议的连接请求。 除非 MTS_MULTIPLE_LISTENERS=TRUE, 否则每个条目都必须有一个独立的相邻。此数自 8.1.3 版起已废弃 语法 : (ADDRESS=(PROTOCOL=tcp)(HOST=myhost)(PORT=7002)) 默认 : NULL mts_dispatchers: 说明 : 为设置使用共享服务器的共享环境而设置调度程序的数量和类型。可以为该数指定几个选项。有关详细信息, 请阅“Oracle8i 管理员指南”和“Oracle Net Administrator's Guide”。这是字符串的一个示例: '(PROTOCOL=TCP)(DISPATCHERS=3)'。 范围: 数的有效指定。 默认 : NULL max_dispatchers: 说明 : 指定在一个共享服务器环境中可同时运行的调度程序进程的最大数量。 范围: 根据操作系统而定。 默认 : 如果已配置了调度程序, 则默认为大于 5 的任何数目或配置的调度程序的数目 nls_nchar_conv_excp: 说明: (如果为 TRUE) 当在隐式转换中丢失数据时返回错误的数。 范围: FALSE | TRUE 默认: TRUE nls_numeric_characters: 说明: 指定将用作组分隔符和小数位的字符。组分隔符就是用来分隔整数位组 (如千, 百万等等) 的字符。小数分隔符用来将一个数字的整数部分与小数部分分隔开。其格式是 <decimal_character><group_separator>。 范围: 任何单字节字符, '+', '-', '<', '>' 除外。 默认: 从 NLS_TERRITORY 中获得 nls_sort: 说明: 指定 ORDER BY 查询的比较顺序。对于二进制排序, ORDER BY 查询的比较顺序是以数为基础的。对于语言排序, 则需要进行全表扫描, 以便将数据按照所定义的语言排序进行整理。 范围: BINARY 或有效的语言定义名。 默认: 从 NLS_LANGUAGE 中获得 nls_territory: 说明: 为以下各项指定命名约定, 包括日期和星期的编号, 默认日期格式, 默认小数点字符和组分隔符, 以及默认的 ISO 和本地货币符号。可支持的区域包括美国, 法国和日本。有关所有区域的信息, 请阅 Oracle8i National Language Support Guide。 范围: 任何有效的地区名。 默认: 根据操作系统而定 nls_timestamp_format: 说明: 与 NLS_TIME_FORMAT 相似, 只不过它设置的是 TIMESTAMP 数据类型的默认, 该数据类型既存储YEAR, MONTH 和 DAY 这几个日期, 也存储 HOUR, MINUTE 和 SECOND 这几个时间。 语法: TIMESTAMP '1997-01-31 09:26:50.10' (将存储为 11 个字节)。 默认: 从 NLS_TERRITORY 中获得 nls_time_format: 说明: 指定一个字符串, 设置 TIME 数据类型的默认, 该数据类型包含 HOUR, MINUTE 和 SECOND 这几个日期时间字段。 语法: TIME '09:26:50' (将存储为 7 个字节)。 默认: 从 NLS_TERRITORY 中获得 nls_time_tz_format: 说明: 指定一对 (UTC,TZD), 设置 TIME WITH TIME ZONE 数据类型的默认, 该数据类型包含 HOUR, MINUTE, SECOND, TIMEZONE_HOUR 和 TIMEZONE_MINUTE 这几个日期时间字段。UTC 是世界时而 TZD 是当地时区。 语法: TIME '09:26:50.20+ 02:00' (将存储为 9 个字节)。 默认: 从 NLS_TERRITORY 中获得 nls_length_semantics: 说明: 使用字节或码点语义来指定新列的创建, 如 char, varchar2, clob, nchar, nvarchar2, nclob 列。各种字符集对字符都有各自的定义。在客户机和服务器上使用同一字符集时, 应以该字符集所定义的字符来衡量字符串。现有的列将不受影响。 范围: BYTE 或 CHAR。 默认: nls_length_semantics 的数据库字符集的字符所使用的度量单位。BYTE。 nls_date_format: 说明: 指定与 TO_CHAR 和 TO_DATE 函数一同使用的默认日期格式。该数的默认由 NLS_TERRITORY 确定。该数的可以是包含在双引号内的任何有效的日期格式掩码。例如: ''MMM/DD/YYYY''。 范围: 任何有效的日期格式掩码, 但不得超过一个固定长度。 默认: 派生 nls_timestamp_tz_format: 说明: 与 NLS_TIME_TZ_FORMAT 相似, 其中的一对指定 TIMESTAMP 数据类型的默认, 该类型除存储 YEAR, MONTH 和 DAY 日期, HOUR, MINUTE 和 SECOND 时间, 还存储 TIMEZONE_HOUR 和 TIMEZONE_MINUTE。 语法: TIMESTAMP '1997- 01- 31 09:26:50+ 02:00' (将存储为 13 个字节)。 默认: 从 NLS_TERRITORY 中获得 nls_language: 说明: 指定数据库的默认语言, 该语言将用于消息, 日期和月份名, AD, BC, AM 和 PM 的符号, 以及默认的排序机制。可支持的语言包括英语, 法语和日语等等。 范围: 任何有效的语言名。 默认: 根据操作系统而定 nls_comp: 说明: 在 SQL 语句中, 应避免使用繁琐的 NLS_SORT 进程。正常情况下, WHERE 子句中进行的比较是二进制的, 但语言比较则需要 NLSSORT 函数。可以使用 NLS_COMP 指定必须根据NLS_SORT 会话数进行语言比较。 范围: Oracle8i National Language Support Guide 中指定的任何有效的10 字节字符串。 默认: BINARY nls_currency: 说明: 为 L 数字格式元素指定用作本地货币符号的字符串。该数的默认由 NLS_TERRITORY 确定。 范围: Oracle8i National Language Support Guide 中指定的任何有效的10 字节字符串。 默认: 从 NLS_TERRITORY 中获得 nls_date_language: 说明: 指定拼写日期名, 月名和日期缩写词 (AM, PM, AD, BC) 的语言。该数的默认是由 NLS_LANGUAGE指定的语言。 范围: 任何有效的 NLS_LANGUAGE 。 默认: NLS_LANGUAGE 的 nls_dual_currency: 说明: 用于覆盖 NLS_TERRITORY 中定义的默认双重货币符号。如果不设置该数, 就会使用默认的双重货币符号; 否则就会启动一个为双重货币符号的新会话。 范围: 任何有效的格式名。。 默认: 双重货币符号 nls_iso_currency: 说明: 为 C 数字格式元素指定用作国际货币符号的字符串。该数的默认由 NLS_TERRITORY 确定。 范围: 任何有效的 NLS_TERRITORY 。 默认: 从 NLS_TERRITORY 中获得 nls_calendar: 说明: 指定 Oracle 使用哪种日历系统作为日期格式。例如, 如果 NLS_CALENDAR 设置为 'Japanese Imperial', 那么日期格式为 'E YY-MM-DD'。即: 如果日期是 1997 年 5 月 15 日, 那么 SYSDATE 显示为 'H 09-05-15'。 范围: Arabic Hijrah, English Hijrah, Gregorian, Japanese Imperial, Persian, ROC Official (Republic of China) 和 Thai Buddha。 默认: Gregorian plsql_native_c_compiler: 说明: 指定用于将生成的 C 文件编译为目标文件的 C 编译程序的完整路径名。此数是可选的。随每个平台附带的特有的 make 文件中包含此数的默认。如果为此数指定了一个, 则该将覆盖 make 文件中的默认范围: C 编译程序的完整路径。 默认: 无 remote_dependencies_mode: 说明: 用于指定数据库为远程 PL/SQL 存储的过程处理被依赖对象的方式。如果设置为 TIMESTAMP, 只有在服务器与本地时间戳相匹配的情况下, 才能执行该过程。如果设置为 SIGNATURE, 在签名安全的情况下即可执行该过程。 范围: TIMESTAMP | SIGNATURE 默认: TIMESTAMP utl_file_dir: 说明: 允许数据库管理员指定 PL/SQL 文件 I/O 许可的目录。使用多个 UTL_FILE_DIR 数即可指定多个目录。请注意所有用户均可读取或写 UTL_FILE_DIR 数中指定的所有文件。 范围: 任何有效的目录路径。 默认: 无 plsql_v2_compatibility: 说明: 设置 PL/SQL 兼容级。如果设置为 FALSE, 将执行 PL/SQL V3 行为, 而不允许 V2 行为; 否则在运行 PL/SQL V3 时将接受某些 PL/SQL V2 行为。 范围: TRUE | FALSE 默认: FALSE plsql_native_make_utility: 说明: 指定 make 实用程序 (如 UNIX 中的 make 或 gmake, 即 GNU make) 的完整路径名。要从生成的 C 源中生成共享对象或 DLL, 需要使用 make 实用程序。 范围: make 实用程序的完整路径名。 默认: 无 plsql_native_library_dir: 说明: 由 PL/SQL 编译程序使用。它指定目录名, 其中存储了本机编译程序生成的共享对象。 范围: 目录名。 默认: 无 plsql_compiler_flags: 说明: 由 PL/SQL 编译程序使用。它将编译程序标志列表指定为一个用逗号分隔的字符串列表。 范围: native (PL/SQL 模块将按本机代码来编译。), interpreted (然后 PL/SQL 模块将被编译为 PL/SQL 字节代码格式), debug (PL/SQL 模块将用探测调试符号来编译), non_debug。 默认: " interpreted, non_debug " plsql_native_linker: 说明: 此数指定链接程序 (如: UNIX 中的 ld, 或用于将目标文件链接到共享对象或 DLL 的 GNU ld) 的完整路径名。此数是可选的。随每个平台附带的特有的 make 文件中包含此数的默认。如果为此数指定了一个, 则该将覆盖 make 文件中的默认范围: 链接程序的完整路径名。 默认: 无 plsql_native_make_file_name: 说明: 指定 make 文件的完整路径名。make 实用程序 (由 PLSQL_NATIVE_MAKE_UTILITY 指定) 使用此 make 文件生成共享对象或 DLL。每个平台附带有端口专用的 make 文件, 该文件包含使用 make 实用程序在该平台上生成 DLL 时要遵循的规则。 范围: make 文件的完整路径名。 默认: 无 plsql_v2_compatibility: 说明: 设置 PL/SQL 兼容级。如果设置为 FALSE, 将执行 PL/SQL V3 行为, 而不允许 V2 行为; 否则在运行 PL/SQL V3 时将接受某些 PL/SQL V2 行为。 范围: TRUE | FALSE 默认: FALSE remote_dependencies_mode: 说明: 用于指定数据库为远程 PL/SQL 存储的过程处理被依赖对象的方式。如果设置为 TIMESTAMP, 只有在服务器与本地时间戳相匹配的情况下, 才能执行该过程。如果设置为 SIGNATURE, 在签名安全的情况下即可执行该过程。 范围: TIMESTAMP | SIGNATURE 默认: TIMESTAMP shared_memory_address: 说明: SHARED_MEMORY_ADDRESS 和 HI_SHARED_MEMORY_ADDRESS 指定运行时 SGA 的起始地址。许多平台在链接时间指定 SGA 起始地址, 在这类平台上这些数将被忽略。如果两个数都设置为 0 或 NULL, 那么地址将根据平台而定。 范围: 任何整数。 默认: 0 lock_sga: 说明: 用于将整个 SGA 锁定在物理内存中。在不支持这种功能的平台上, 该将被忽略。 范围: TRUE | FALSE 默认: FALSE hi_shared_memory_address: 说明: 指定系统全局区 (SGA) 的运行时起始地址。在指定 SGA 连接时起始地址的平台上, 该被忽略。在 64 位平台上, 请使用该来指定高 32 位和低 32 位。如果不指定该, 默认是平台指定的位置。 范围: 任何整数。 默认: 0 pre_page_sga: 说明: 一个根据平台而定的数, 如果该数为 TRUE, 将把所有 SGA 页装载到内存中, 以便使该例程迅速达到最佳性能状态。这将增加例程启动和用户登录的时间, 但在内存充足的系统上能减少缺页故障的现。 范围: TRUE | FALSE 默认: FALSE sga_max_size: 说明: 指定例程存活期间所占用的系统全局区的最大大小。 范围: 0 到各操作系统所允许的最大。请注意, 由于该的最小在启动时已经调整完毕, 因而它无关紧要。 默认: 如果未指定, sga_max_size 的默认将与启动时 SGA 的最初大小 (比如说 X) 相同。该大小取决于 SGA 中各种池的大小, 如缓冲区高速缓存, 共享池, 大型池等。如果指定的小于 X, 则所使用的 sga_max_size 的将为 X。也就是说, 它是 X 与用户指定的 sga_max_size 两者之间的较大。 Fast_start_parallel_rollback: 说明: 执行并行回退时确定进程的最大数量。在多数事务处理的运行时间都较长的系统上, 该很有用。 范围: FALSE | LOW | HIGH 默认: LOW (2 * CPU_COUNT) transaction_auditing: 说明: 确定事务处理层是否生成一个特殊的重做记录, 其中包含用户登录名, 用户名, 会话 ID, 部分操作系统信息以及客户机信息。在使用某一重做日志分析工具时, 这些记录可能很有用。 范围: TRUE | FALSE 默认: TRUE transactions: 说明: 指定并行事务处理的最大数量。如果将该设置得较大, 将增加 SGA 的大小, 并可增加例程启动过程中分配的回退段的数量。默认大于 SESSIONS, 以实现递归事务处理。 范围: 一个数。 默认: 派生 (1.1 * SESSIONS) enqueue_resources: 说明: 队可使并行进程能够共享资源。例如, Oracle 允许一个进程以共享模式锁定一个表, 以共享更新模式锁定另一个表。 范围: 10 - 65535 (7.3) 或 10 - 无限制 (8.1)。 默认: 派生 (该大于 DML_LOCKS + 20 即已足够) dml_locks: 说明: 所有用户获取的表锁的最大数量。对每个表执行 DML 操作均需要一个 DML 锁。例如, 如果 3 个用户修改 2 个表, 就要求该为 6。 范围: 0 或 20 到无限制。 默认: 4 * TRANSACTIONS (派生) hash_join_enabled: 说明: 如果设置为 TRUE, 优化程序将在计算最有效的联接方法时考虑散列联接。Oracle 建议数据仓库应用程序应使用 TRUE范围: TRUE | FALSE 默认: TRUE optimizer_features_enable: 说明: 允许更改 init.ora 数, 该数控制着优化程序的行为。受此影响的数包括 PUSH_JOIN_PREDICATE, FAST_FULL_SCAN_ENABLED, COMPLEX_VIEW_MERGING 和 B_TREE_BITMAP_PLANS。 范围: 8.0.0; 8.0.3; 8.0.4; 8.1.3。 默认: 8.0.0 query_rewrite_integrity: 说明: Oracle Server 执行的查询重写的程度。如果设置为 ENFORCED, Oracle 将保证其一致性和完整性。如果设置为 TRUSTED, 将使用明确声明的关系来允许重写。如果设置为 STALE_TOLERATED, 即使实体化视图与基础数据不一致, 也仍可以进行重写。 范围: ENFORCED, TRUSTED, STALE_TOLERATED 默认: ENFORCED query_rewrite_enabled 说明: 启用或禁用对实体化视图的查询重写。一个特定实体化视图只在如下条件下启用: 会话数和单独实体化视图均已启用, 并且基于成本的优化已启用。 范围: TRUE | FALSE 默认: FALSE partition_view_enabled: 说明: 如果将 PARTITION_VIEW_ENABLED 设置为 TRUE, 该优化程序将剪除 (或跳过) 分区视图中不必要的表访问。该数还能更改基于成本的优化程序从基础表统计信息计算分区视图统计信息的方式。 范围: TRUE | FALSE 默认: FALSE optimizer_max_permutations: 说明: 对带有大量联接的查询进行语法分析时, 优化程序将会考虑限制表的交换数。这有助于确保对查询进行语法分析的时间保持在可接受的限制范围内, 但代价是无法找到最佳计划。如果该小于 1000, 就应该可以确保每次查询的时间仅为几秒钟或更短。 范围: 4-2^32 (~4.3 G)。 默认: 80,000 optimizer_index_cost_adj: 说明: 在考虑太多或太少索引访问路径的情况下, 可以用来优化优化程序的性能。该越低, 优化程序越容易选择一个索引。也就是说, 如果将该设置为 50%, 索引访问路径的成本就是正常情况下的一半。 范围: 1 -10000 默认: 100 (一个索引访问路径的常规成本) star_transformation_enabled: 说明: 确定基于成本的查询转换是否将被应用到星型查询中。如果设置为 TRUE, 优化程序将考虑将基于成本的转换应用于星型查询中; 如果设置为 FALSE, 将不使用任何转换; 如果设置为 TEMP_DISABLE, 将考虑查询转换, 但不使用临时表。 范围: TRUE | FALSE | TEMP_DISABLE 默认: FALSE optimizer_mode: 说明: 指定优化程序的行为。如果设置为 RULE, 就会使用基于规则的优化程序, 除非查询含有提示。如果设置为 CHOOSE, 就会使用基于成本的优化程序, 除非语句中的表不包含统计信息。ALL_ROWS 或 FIRST_ROWS 始终使用基于成本的优化程序。 范围: RULE | CHOOSE | FIRST_ROWS | ALL_ROWS 默认: CHOOSE optimizer_index_caching: 说明: 调整基于成本的优化程序的假定, 即在缓冲区高速缓存中期望用于嵌套循环联接的索引块的百分比。它将影响使用索引的嵌套循环联接的成本。将该数设置为一个较高的, 可以使嵌套循环联接相对于优化程序来说成本更低。 范围: 0 - 100 %。 默认: 0 job_queue_processes: 说明: 只用于复制环境。它指定每个例程的 SNP 作业队列进程的数量 (SNP0, ... SNP9, SNPA, ... SNPZ)。要自动更新表快照或执行由 DBMS_JOB 创建的请求, 请将该数设置为 1 或更大的范围: 0 到 36 默认: 0 max_transaction_branches: 说明: 控制分布式事务处理中分支的数量。将 MAX_TRANSACTION_BRANCHES 设置为较低的, 可以根据 MAX_TRANSACTION_BRANCHES * DISTRIBUTED_TRANSACTIONS * 72 字节, 略微减少共享池的空间量。此数在 8.1.3 版中已废弃。 范围: 1 - 32 默认: 8 compatible: 说明: 允许您使用一个新的发行版, 同时保证与先前版本的向后兼容性。 范围: 默认为当前发行版。 默认: 由发行版确定 archive_lag_target: 说明: 此数与基于时间的线程高级功能相关联。 范围: 0 或 [60, 7200] 中的任意整数。 默认: 0 为默认, 此时将禁用基于时间的线程高级功能。否则, 将代表秒数 aq_tm_processes: 说明: 如果大于零, 就会启用对队列消息的时间监视。该时间可用于指定消息的延迟和失效属性 (用于应用程序的开发)。 范围: 0 - 10 默认: 0 tracefile_identifier: spfile: 说明: 指定当前使用的服务器数文件的名称。 范围: 静态数 默认: SPFILE 数可在客户端 PFILE 中定义, 以指明要使用的服务器数文件的名称。服务器使用默认服务器数文件时, SPFILE 的要由服务器在内部设置。 Logmnr_max_persistent_sessions: Standby_file_management: Trace_enabled: Ifile: 说明: 用于在当前数文件中嵌其他数文件。您可以在一个数文件的多个行上多次使用该数, 但最多只能有三级嵌套。 范围: 任何有效的数文件名 (语法是 IFILE = parameter_file_name)。 默认: NULL remote_listener: global_context_pool_size: 说明: 从 SGA 分配的用于存储和管理全局应用程序环境的内存量。 范围: 任意整数。 默认: 1 M plsql_native_library_subdir_count: fixed_date: 说明: SYSDATE 返回的数据。对于必须始终返回固定日期而非系统日期的测试, 该很有用。使用双引号或不使用引号。请勿使用单引号。 范围: YYYY-MM-DD-HH24:MI:SS (或默认的 Oracle 日期格式)。 默认: NULL db_name: 说明: 一个数据库标识符, 应与 CREATE DATABASE 语句中指定的名称相对应。 范围: 任何有效名称最多可有 8 个字符。 默认: 无 (但应指定) cluster_database: cluster_interconnects: cluster_database_instances: sql_version: replication_dependency_tracking: 说明: 跟踪相关性对复制服务器以并行方式传播所作的更改至关重要。如果设置为 FALSE, 数据库上的读/写操作将运行得更快, 但无法为复制服务器产生并行传播的相关性信息。 范围: TRUE | FALSE 默认: TRUE (即启用读/写相关性跟踪) remote_os_roles: 说明: 将 REMOTE_OS_ROLES 设置为 TRUE, 允许由远程客户机的操作系统来分配角色。如果设置为 FALSE, 则由远程客户机的数据库来识别和管理角色。 范围: TRUE | FALSE 默认: FALSE remote_os_authent: 说明: 将 REMOTE_OS_AUTHENT 设置为 TRUE, 允许使用 OS_AUTHENT_PREFIX 的来验证远程客户机。 范围: TRUE | FALSE 默认: FALSE open_links: 说明: 指定在一次会话中同时打开的与远程数据库的连接的最大数量。该应等于或超过一个引用多个数据库的单个 SQL 语句中引用的数据库的数量, 这样才能打开所有数据库以便执行该语句。 范围: 0 - 255 (如果为 0, 不允许分布式事务处理)。 默认: 4 open_links_per_instance: 说明: 指定 XA 应用程序中可移植的打开连接的最大数量。XA 事务处理使用可移植的打开的连接, 以便在提交一个事务处理后能将这些连接高速缓存。如果创建连接的用户就是拥有事务处理的用户, 各事务处理则可共享连接。 范围: 0 - UB4MAXVAL 默认: 4 remote_login_passwordfile: 说明: 指定操作系统或一个文件是否检查具有权限的用户的口令。如果设置为 NONE, Oracle 将忽略口令文件。如果设置为 EXCLUSIVE, 将使用数据库的口令文件对每个具有权限的用户进行验证。如果设置为 SHARED, 多个数据库将共享 SYS 和 INTERNAL 口令文件用户。 范围:NONE | SHARED | EXCLUSIVE 默认: NONE hs_autoregister: 说明: 启用或禁用“异构服务 (HS)”代理的自动自注册。如果启用, 信息将被上载到数据字典中, 以便在通过同一代理建立后续连接时降低开销。 范围: TRUE | FALSE 默认: TRUE global_names: 说明: 指定是否要求数据库链接与所连接的数据库同名。如果该为 FALSE, 则不执行检查。要使分布式处理中的命名约定一致, 请将该数设置为 TRUE。 范围: TRUE | FALSE 默认: TRUE distributed_transactions: 说明: 一个数据库一次可与的分布式事务处理的最大数量。如果由于网络故障异常频繁而减少该, 将造成大量未决事务处理。 范围: 0 - TRANSACTIONS 。 默认: 根据操作系统而定 commit_point_strength: 说明: 一个用于确定分布式事务处理中提交点的位置的范围: 0 -255 默认: 根据操作系统而定 db_domain: 说明: 指定数据库名的扩展名 (例如:US.ORACLE.COM) 为使一个域中创建的数据库名唯一, 建议指定该范围: 由句点分隔的任何字符串, 最长可以有 128 个字符。 默认: WORLD dblink_encrypt_login: 说明: 在连接到其他 Oracle Server 时, 数据库链接是否使用加密口令。 范围: TRUE | FALSE 默认: FALSE backup_tape_io_slaves: 说明: 一个恢复管理器数, 用于确定读取或写磁带是否要使用服务器进程或一个附加的 I/O 从属。 范围: TRUE | FALSE 默认: FALSE tape_asynch_io: 说明: 用于控制对顺序设备的 I/O 操作 (例如, 将 Oracle 数据备份或复原到磁带上, 或从磁带上备份或复原 Oracle 数据) 是否异步。只有在您的平台支持对顺序设备的异步 I/O 操作的情况下, 将该设置为 TRUE 才有效; 如果异步 I/O 的执行情况不稳定, 请将该设置为 FALSE。 范围: TRUE | FALSE 默认: FALSE log_file_name_convert: 说明: 将主数据库上的一个日志文件的文件名转换为备用数据库上对等的路径和文件名。将一个日志文件添加到一个主数据库后, 必须将一个相应的文件添加到备用数据库中。该数替代 Oracle7 中的 LOG_FILE_NAME_CONVERT 数。 范围: 任何格式为 ''主体日志文件的路径/文件名'' 和 ''备用日志文件的路径/文件名'' 的有效路径/文件名 默认: NULL fal_server: 说明: 指定此备用数据库的 FAL 服务器。该是一个 Oracle Net 服务名。此 Oracle Net 服务名被假定为已在备用数据库系统上正确配置, 可指向期望的 FAL 服务器。 范围: Oracle Net 服务名的字符串。 Fal_client: 说明: 指定供 FAL 服务 (通过 FAL_SERVER 数配置) 来引用 FAL 客户机的 FAL 客户机名称。该数的是一个 Oracle Net 服务名。此 Oracle Net 服务名被假定为已在 FAL 服务器系统上正确配置, 可指向 FAL 客户机 (即: 此备用数据库)。 范围: Oracle Net 服务名的字符串。 Drs_start: 说明: 使 Oracle 可以确定是否应启动 DRMON 进程。DRMON 是一种不会导致致命错误的 Oracle 后台进程, 只要例程存在, 该进程就存在。 范围: TRUE | FALSE。 默认: FALSE remote_archive_enable: 说明: 控制是否可向远程目标执行重做日志文件归档操作。必须将该设置为 "TRUE", 以便 Oracle 数据库例程对重做日志文件进行远程归档, 并且/或者接收远程归档的重做日志文件。 范围: FALSE | TRUE 默认: TRUE standby_preserves_names: 说明: 表明备用数据库上的文件名是否与主数据库上的文件名相同范围: TRUE 或 FALSE。注: 如果将设置为 True, 且备用数据库与主数据库位于同一系统上, 则主数据库文件可能被覆盖。 默认: FALSE。 Standby_archive_dest: 说明: 指定来自一个主例程的归档日志的到达位置。STANDBY_ARCHIVE_DEST 和 LOG_ARCHIVE_FORMAT 用于在备用位置上虚拟完全合格的归档日志文件名。备用数据库上的 RFS 服务器将使用该, 而不是 ARCHIVE_LOG_DEST。 范围: NULL 字符串或非 RAW 类型的有效路径/设备名。 默认: NULL db_file_name_convert: 说明: 将主数据库上的一个新数据文件的文件名转换为备用数据库上的文件名。 范围: 一个有效的主/备用目录和文件名对。 默认: 无 max_enable_roles: 说明: 指定一个用户可以启用的数据库角色 (包括子角色) 的最大数量。用户可启用的角色的实际数量是 2 加上 MAX_ENABLED_ROLES 的, 因为每个用户都有两个附加的角色: PUBLIC 和用户自己的角色。 范围: 0 -148 默认: 20 O7_DICTIONARY_ACCESSIBILITY: 说明: 主要用于从 Oracle7 移植到 Oracle8i。如果该为 TRUE, SYSTEM 权限 (如 SELECT ANY TABLE) 将不限制对 SYS 方案中各对象的访问 (Oracle7 行为)。如果该为 FALSE, 只有被授予了 SELECT_CATALOG_ROLE, EXECUTE_CATALOG_ROLE 或 DELETE_CATALOG_ROLE 权限的用户才能访问 SYS 方案中的各对象。 范围: TRUE | FALSE 默认: TRUE sql92_security: 说明: 指定要执行一个更新或删除引用表列的是否需要具有表级的 SELECT 权限。 范围: TRUE | FALSE 默认: FALSE audit_trail: 说明: 启用或禁用数据库审计。如果该数为 TRUE 或 DB, 审计记录将被写 SYS.AUD$ 表中; 如果数为 OS, 则写一个操作系统文件。 范围: NONE | FALSE | DB | TRUE | OS 默认: NONE rdbms_server_dn: 说明: RDBMS 服务器的唯一判别名。它用于在一个企业目录服务中检索企业角色。有关详细信息, 请阅“Oracle Advanced Security Administrator's Guide”。 范围: 所有 X.500 唯一判别名格式。 默认: 无 os_roles: 说明: 确定操作系统或数据库是否为每个用户标识角色。如果设置为 TRUE, 将由操作系统完全管理对所有数据库用户的角色授予。否则, 角色将由数据库标识和管理。 范围: TRUE | FALSE 默认: FALSE os_authent_prefix: 说明: 使用用户的操作系统帐户名和口令来验证连接到服务器的用户。该数的与各用户的操作系统帐户连接在一起。要去除 OS 帐户前缀, 请指定空范围: 任何标识符。 默认: 根据操作系统而定 (通常是 'OPS$') object_cache_max_size_percent: 说明: 指定会话对象的高速缓存增长可超过最佳高速缓存大小的百分比, 最大大小等于最佳大小加上该百分比与最佳大小的乘积。如果高速缓存大小超过了这个最大大小, 系统就会尝试将高速缓存缩小到最佳大小。 范围: 0% 到根据操作系统而定的最大。 默认: 10% object_cache_optimal_size: 说明: 指定在高速缓存超过最大大小的情况下, 会话对象高速缓存将被缩小到的大小。 范围: 10K 到根据操作系统而定的最大。 默认: 100K session_max_open_files: 说明: 指定可在任一给定会话中打开的 BFILE 的最大数量。一旦达到这个数量, 此后将无法在该会话中打开更多文件。该数还取决于操作系统数 MAX_OPEN_FILES。 范围: 1 - 至少为 (50, OS 级上的 MAX_OPEN_FILES)。 默认: 10 parallel_execution_message_size: 说明: 指定并行执行 (并行查询, PDML, 并行恢复和复制) 消息的大小。如果大于 2048 或 4096, 就需要更大的共享池。如果 PARALLEL_AUTOMATIC_TUNING = TRUE, 将在大存储池之外指定消息缓冲区。 范围: 2148 - 无穷大。 默认: 如果 PARALLEL_AUTOMATIC_TUNING 为 FALSE, 通常为 2148; 如果 PARALLEL_AUTOMATIC_TUNING 为 TRUE , 则为 4096 (根据操作系统而定)。 Paralle_min_percent: 说明: 指定并行执行要求的线程的最小百分比。设置该数, 可以确保并行执行在没有可用的恰当查询从属进程时, 会显示一个错误消息, 并且该查询会因此而不予执行。 范围: 0 -100 默认: 0, 表示不使用该数。 Parallel_automatic_tuning: 说明: 如果设置为 TRUE, Oracle 将为控制并行执行的数确定默认。除了设置该数外, 你还必须为系统中的表设置并行性。 范围: TRUE | FALSE 默认: FALSE parallel_threads_per_cpu: 说明: 说明一个 CPU 在并行执行过程中可处理的进程或线程的数量, 并优化并行自适应算法和负载均衡算法。如果计算机在执行一个典型查询时有超负荷的迹象, 应减小该数范围: 任何非零。 默认: 根据操作系统而定 (通常为 2) parallel_broadcast_enabled: 说明 : 通过使用一个散列联接或合并联接, 可以在将多个大结果集联接到一个小结果集 (以字节而不是行为单位来衡量大小) 时改善性能。如果该设置为 TRUE, 优化程序可以将小结果集内的每个行都传播到大型集内的每个集群数据库处理行中。 范围: TRUE | FALSE 默认 : FALSE parallel_adaptive_multi_user: 说明: 启用或禁用一个自适应算法, 旨在提高使用并行执行方式的多用户环境的性能。通过按系统负荷自动降低请求的并行度, 在启动查询时实现此功能。当 PARALLEL_AUTOMATIC_TUNING = TRUE 时, 其效果最佳。 范围: TRUE | FALSE 默认: 如果 PARALLEL_AUTOMATIC_TUNING = TRUE, 则该为 TRUE; 否则为 FALSE parallel_max_servers: 说明: 指定一个例程的并行执行服务器或并行恢复进程的最大数量。如果需要, 例程启动时分配的查询服务器的数量将增加到该数量。 范围: 0 -256 默认: 由 CPU_COUNT, PARALLEL_AUTOMATIC_TUNING 和 PARALLEL_ADAPTIVE_MULTI_USER 确定 parallel_min_servers 说明: 指定为并行执行启动例程后, Oracle 创建的查询服务器进程的最小数量。 范围: 0 - PARALLEL_MAX_SERVERS。 默认: 0 log_archive_dest_state_3: 说明: 指定相应的归档日志目标数 (仅 LOG_ARCHIVE_DEST_3) 的可用性状态。如果启用, 日志目标将被归档。如果延迟, 该目标将被排除在归档操作之外直至重新启用。 范围: ENABLE | DEFER 默认: ENABLE log_archive_dest_state_4: 说明: 指定相应的归档日志目标数 (仅 LOG_ARCHIVE_DEST_4) 的可用性状态。如果启用, 日志目标将被归档。如果延迟, 该目标将被排除在归档操作之外直至重新启用。 范围: ENABLE | DEFER 默认: ENABLE log_archive_dest_state_5: 说明: 指定相应的归档日志目标数 (仅 LOG_ARCHIVE_DEST_5) 的可用性状态。如果启用, 日志目标将被归档。如果延迟, 该目标将被排除在归档操作之外直至重新启用。 范围: ENABLE | DEFER 默认: ENABLE log_archive_dest_state_6: 说明: 标识特定日志归档目标的最近的用户定义状态。 范围: ENABLE--如果目标属性有效, 则启用归档日志目标; DEFER--即使目标属性有效, 也要延迟处理归档日志目标; 或者是 ALTERNATE--延迟处理归档日志目标, 直到另一个目标的失败导致自动启用了此目标 (前提是备用目标的属性必须有效)。 log_archive_dest_state_7: 说明: 标识特定日志归档目标的最近的用户定义状态。 范围: ENABLE--如果目标属性有效, 则启用归档日志目标; DEFER--即使目标属性有效, 也要延迟处理归档日志目标; 或者是 ALTERNATE--延迟处理归档日志目标, 直到另一个目标的失败导致自动启用了此目标 (前提是备用目标的属性必须有效)。 log_archive_dest_state_8: 说明: 标识特定日志归档目标的最近的用户定义状态。 范围: ENABLE--如果目标属性有效, 则启用归档日志目标; DEFER--即使目标属性有效, 也要延迟处理归档日志目标; 或者是 ALTERNATE--延迟处理归档日志目标, 直到另一个目标的失败导致自动启用了此目标 (前提是备用目标的属性必须有效)。 log_archive_dest_state_9: 说明: 标识特定日志归档目标的最近的用户定义状态。 范围: ENABLE--如果目标属性有效, 则启用归档日志目标; DEFER--即使目标属性有效, 也要延迟处理归档日志目标; 或者是 ALTERNATE--延迟处理归档日志目标, 直到另一个目标的失败导致自动启用了此目标 (前提是备用目标的属性必须有效)。 Log_archive_start: 说明: n只在数据库处于“归档日志”模式的情况下适用。它指定重做日志是自动还是手动复制。建议是 TRUE, 即执行自动归档; 否则就需要手动干预, 使用 ALTER SYSTEM ARCHIVE LOG ... 命令来阻止例程挂起。 范围: TRUE | FALSE 默认: FALSE log_archive_duplex_dest: 说明: 指定 LOG_ARCHIVE_DEST 外的另一个归档目标。在 Oracle8i 企业版中, 该数被 LOG_ARCHIVE_DEST_n 代替。 范围: 一个 NULL 字符串, 或者任何有效的路径或设备名, 原始分区除外。 默认: NULL log_archive_format: 说明: LOG_ARCHIVE_FORMAT 只在数据库处于“归档日志”模式的情况下有用。文本字符串与变量 %s (日志序列号) 和 %t (线程号) 结合使用, 用于指定各归档重做日志文件的唯一文件名。该字符串被附加到 LOG_ARCHIVE_DEST 数。 范围: 任何有效的文件名。 默认: 根据操作系统而定 log_archive_max_processes: 说明: 指定要求的 ARCH 进程的数量。如果 LOG_ARCHIVE_START = TRUE, 该可以在例程启动时被评估; 也可以在通过 SQL*Plus 或 SQL 语法调用 ARCH 进程时评估。 范围: 1 - 10 (包括端点) 的任何整数。 默认: 1 log_archive_dest_2: 说明: 五个本地 (指定 LOCATION) 或远程 (指定 SERVICE) 目标位置中的第二个, 归档重做日志文件可以在这些目标位置上被复制。该数只在企业版 oracle8i 数据库或更高版本的数据库中有效。 范围: 语法为 (null_string | SERVICE=tnsnames-service | LOCATION=directory-spec)[MANDATORY | OPTIONAL][REOPEN=integer] 默认: NULL log_archive_min_succeed_dest: 说明: 定义在可以覆盖日志文件前必须将其复制到的目标的最小数量。该应大于或等于 LOG_ARCHIVE_DEST_n 中 MANDATORY 目标的数量。 范围: 1 - 5 (如果与 LOG_ARCHIVE_DEST 和 LOG_ARCHIVE_DUPLEX_DEST 共同使用, 则限制在 1-2)。 默认: 1 log_archive_trace: 说明: 控制归档日志进程生成的输。此进程可以通过下列方式启动 ARCn 后台进程 (在输日志中指定为 ARCn) 明确的会话调用的前台进程 (在输日志中指定为 ARCH) 或 “受管备用数据库”的远程文件服务器 (RFS) 进程。 范围: 0: 禁用归档日志跟踪 (这是默认设置) 1: 重做日志文件的追踪归档 2: 每个归档日志目标的追踪归档状态 4: 追踪归档操作阶段 8: 追踪归档日志目标活动 16: 追踪详细的归档日志目标活动 32: 追踪归档日志目标数修改 64: 追踪 ARCn 进程状态活动 默认: 0 log_archive_dest_10: log_archive_dest_3: 说明: 五个本地 (指定 LOCATION) 或远程 (指定 SERVICE) 目标位置中的第三个, 归档重做日志文件可以在这些目标位置上被复制。该数只在企业版 oracle8i 数据库或更高版本的数据库中有效。 范围: 语法为 (null_string | SERVICE=tnsnames-service | LOCATION=directory-spec)[MANDATORY | OPTIONAL][REOPEN=integer] 默认: NULL log_archive_dest: 说明: 五个本地 (指定 LOCATION) 或远程 (指定 SERVICE) 目标位置中的第三个, 归档重做日志文件可以在这些目标位置上被复制。该数只在企业版 oracle8i 数据库或更高版本的数据库中有效。 范围: 语法为 (null_string | SERVICE=tnsnames-service | LOCATION=directory-spec)[MANDATORY | OPTIONAL][REOPEN=integer] 默认: NULL log_archive_dest_state_2: 说明: 指定相应的归档日志目标数 (仅 LOG_ARCHIVE_DEST_2) 的可用性状态。如果启用, 日志目标将被归档。如果延迟, 该目标将被排除在归档操作之外直至重新启用。 范围: ENABLE | DEFER 默认: ENABLE log_archive_dest_5: 说明: 五个本地 (指定 LOCATION) 或远程 (指定 SERVICE) 目标位置中的第五个, 归档重做日志文件可以在这些目标位置上被复制。该数只在企业版 oracle8i 数据库或更高版本的数据库中有效。 范围: 语法为 (null_string | SERVICE=tnsnames-service | LOCATION=directory-spec)[MANDATORY | OPTIONAL][REOPEN=integer] 默认: NULL log_archive_dest_6: log_archive_dest_1: log_archive_dest_8: log_archive_dest_9: log_archive_dest_state_1: 说明: 指定相应的归档日志目标数 (仅 LOG_ARCHIVE_DEST_1) 的可用性状态。如果启用, 日志目标将被归档。如果延迟, 该目标将被排除在归档操作之外直至重新启用。 范围: ENABLE | DEFER 默认: ENABLE log_archive_dest_state_10 说明: 指定归档日志的目标。 范围: 本地文件系统位置 (磁盘位置) 或通过 Oracle Net 服务名 (tns 服务) 指定的远程归档位置。: log_archive_dest_4: 说明: 五个本地 (指定 LOCATION) 或远程 (指定 SERVICE) 目标位置中的第四个, 归档重做日志文件可以在这些目标位置上被复制。该数只在企业版 oracle8i 数据库或更高版本的数据库中有效。 范围: 语法为 (null_string | SERVICE=tnsnames-service | LOCATION=directory-spec)[MANDATORY | OPTIONAL][REOPEN=integer] 默认: NULL create_bitmap_area_size: 说明: CREATE_BITMAP_AREA_SIZE 指定为创建位图索引而分配的内存量。 范围: 根据操作系统而定。 默认: 8 MB pga_aggregate_target: 说明: 指定连接到例程的所有服务器进程的目标 PGA 总内存。请在启用自动设置工作区之前将此数设置为一个正数。这部分内存不驻留在 SGA 中。数据库将此用作它所使用的目标 PGA 内存量。设置此数时, 要将 SGA 从可用于 Oracle 例程的系统内存总量中减去。然后可将剩余内存量分配给 pga_aggregate_target。 范围: 整数加字母 K, M 或 G, 以将此限指定为千字节, 兆字节或千兆字节。最小为 10M, 最大为 4000G 默认: "未指定", 表示完全禁用对工作区的自动优化。 Sort_area_size: 说明: SORT_AREA_SIZE 以字节为单位, 指定排序所使用的最大内存量。排序完成后, 各行将返回, 并且内存将释放。增大该可以提高大型排序的效率。如果超过了该内存量, 将使用临时磁盘段。 范围: 相当于 6 个数据库块的 (最小) 到操作系统确定的 (最大)。 默认: 根据操作系统而定 sort_area_retained_size 说明: 以字节为单位, 指定在一个排序运行完毕后保留的用户全局区 (UGA) 内存量的最大。最后一行从排序空间中被提取后, 该内存将被释放回 UGA, 而不是释放给操作系统。 范围: 从相当于两个数据库块的到 SORT_AREA_SIZE 的。 默认: SORT_AREA_SIZE 的 bitmap_merge_area_size: 说明: 指定合并从对索引的某一范围进行扫描而检索得到的位图要使用的内存量。 范围: 根据系统而定。 默认: 1MB workarea_size_policy: 说明: 指定调整工作区大小的策略。此数控制优化工作区时所处的模式。 范围: AUTO, MANUAL。 默认: 如果设置了 PGA_AGGREGATE_TARGET, 则为 AUTO; 否则为 MANUAL。 Hash_area_size: 说明: 与并行执行操作和 DML 或 DDL 语句相关。它以字节为单位, 指定要用于散列联接的最大内存量。有关详细信息, 请阅手册 Oracle8i Concepts。 范围: 0 到根据操作系统而定的。 默认: 派生:2 * SORT_AREA_SIZE db_create_online_log_dest_4: 说明: 设置所创建的联机日志和控制文件的默认位置。如果在创建联机日志或控制文件时未指定文件名, 则使用默认文件名。 范围: 文件系统目录名。该目录必须已存在。该目录必须具有可让 Oracle 在其中创建文件的许可。 db_create_online_log_dest_3: 说明: 设置所创建的联机日志和控制文件的默认位置。如果在创建联机日志或控制文件时未指定文件名, 则使用默认文件名。 范围: 文件系统目录名。该目录必须已存在。该目录必须具有可让 Oracle 在其中创建文件的许可。 Db_files: 说明: 可为该数据库打开的数据文件的最大数量。 范围: MAXDATAFILES - 根据操作系统而定。 默认: 根据操作系统而定 (在 Solaris 系统上为 200) db_create_online_log_dest_2: 说明: 设置所创建的联机日志和控制文件的默认位置。如果在创建联机日志或控制文件时未指定文件名, 则使用默认文件名。 范围: 文件系统目录名。该目录必须已存在。该目录必须具有可让 Oracle 在其中创建文件的许可。 db_create_online_log_dest_1: 说明: 设置所创建的联机日志和控制文件的默认位置。如果在创建联机日志或控制文件时未指定文件名, 则使用默认文件名。 范围: 文件系统目录名。该目录必须已存在。该目录必须具有可让 Oracle 在其中创建文件的许可。 Db_create_file_dest: 说明: 设置所创建的数据文件, 控制文件和联机日志的默认位置。 范围: 文件系统目录名。该目录必须已存在。该目录必须具有可让 Oracle 在其中创建文件的许可。 Control_files: 说明: 指定一个或多个控制文件名。Oracle 建议对于不同设备或 OS 文件镜象使用多个文件。 范围: 1 - 8 文件名 (带路径名)。 默认: 根据操作系统而定 db_create_online_log_dest_5: 说明: 设置所创建的联机日志和控制文件的默认位置。如果在创建联机日志或控制文件时未指定文件名, 则使用默认文件名。 范围: 文件系统目录名。该目录必须已存在。该目录必须具有可让 Oracle 在其中创建文件的许可。 Large_pool_size: 说明 : 指定大型池的分配堆的大小, 它可被共享服务器用作会话内存, 用作并行执行的消息缓冲区以及用作 RMAN 备份和恢复的磁盘 I/O 缓冲区。 范围: 600K (最小); >= 20000M (最大是根据操作系统而定的)。 默认 : 0, 除非配置了并行执行或 DBWR_IO_SLAVES shared_pool_size: 说明: 以字节为单位, 指定共享池的大小。共享池包含如: 共享游标, 存储的过程, 控制结构和并行执行消息缓冲区等对象。较大的能改善多用户系统的性能。 范围:300 KB - 根据操作系统而定。 默认: 如果是 64 位操作系统, 为 64MB; 其他情况下, 为 16MB。 Java_pool_size: 说明: 以字节为单位, 指定 Java 存储池的大小, 它用于存储 Java 的方法和类定义在共享内存中的表示法, 以及在调用结束时移植到 Java 会话空间的 Java 对象。有关详细信息, 请阅 Oracle8i Java Developer's Guide。 范围: 根据操作系统而定。 默认: 根据操作系统而定 shared_pool_reserved_size: 说明: 指定要为较大连续共享池内存请求而保留的空间, 以避免由碎片引起的性能下降。该池的大小应符合这样的条件:能存储为防止对象从共享池刷新而普遍要求的所有大型过程和程序包。 范围: SHARED_POOL_RESERVED_MIN_ALLOC 到 SHARED_POOL_SIZE 的一半 (字节)。 默认: SHARED_POOL_SIZE 的 5% cursor_sharing: 说明: 控制可以终止共享相同的共享游标的 SQL 语句类型。 范围: 强制: 强制表达方式不同但语句意思相同的语句共享一个游标。 EXACT: 只令完全相同的 SQL 语句共享一个游标。 默认: EXACT open_cursors: 说明: 指定一个会话一次可以打开的游标 (环境区域) 的最大数量, 并且限制 PL/SQL 使用的 PL/SQL 游标高速缓存的大小, 以避免用户再次执行语句时重新进行语法分析。请将该设置得足够高, 这样才能防止应用程序耗尽打开的游标。 范围: 1 - 操作系统限制。 默认: 64 serial_reuse: 说明: 指定何种类型的 SQL 游标应利用串行可重用内存功能。如果 CURSOR_SPACE_FOR_TIME = TRUE, 那么 SERIAL_REUSE 将被忽略, 当作被设置为 DISABLE 或 NULL 的情况处理。 范围: DISABLE | SELECT | DML | PLSQL | ALL | NULL 默认: NULL session_cached_cursors: 说明: 指定要高速缓存的会话游标的数量。对同一 SQL 语句进行多次语法分析后, 它的会话游标将被移到该会话的游标高速缓存中。这样可以缩短语法分析的时间, 因为游标被高速缓存, 无需被重新打开。 范围: 0 到根据操作系统而定的。 默认: 0 cursor_space_for_time: 说明: 在一个游标引用共享 SQL 区时, 确定将 SQL 区保留在共享池中还是从中按过期作废处理。 范围: TRUE | FALSE 默认: FALSE (过期作废) rollback_segments: 说明: 指定要在例程启动过程中获取的一个或多个回退段, 即使其数量超过了 TRANSACTIONS / TRANSACTIONS_PER_ROLLBACK_SEGMENT 的。公式为 ROLLBACK_SEGMENTS = (rbseg_name [, rbseg_name] ...) 范围:除 SYSTEM 外, DBA_ROLLBACK_SEGS 中列的任何回退段。 默认: NULL (默认情况下使用公用回退段) undo_suppress_errors: 说明: 允许用户在 SMU 模式下尝试执行 RBU 操作 (如 ALTER ROLLBACK SEGMENT ONLINE) 时忽略错误。这样能让用户在将所有应用程序和脚本转换到 SMU 模式之前即可使用 SMU 功能。 范围: True 或 False 默认: False。 Max_rollback_segments: 说明: 指定 SGA 中高速缓存的回退段的最大大小。该数指定一个例程中可同时保持联机状态 (即状态为 INUSE) 的回退段的最大数量。 范围: 2 -65535 默认: 最大 (30, TRANSACTIONS/TRANSACTIONS_PER_ROLLBACK_SEGMENT) undo_retention: 说明: UNDO_RETENTION 数用来指定要在数据库中保留的已提交的撤消信息总量。可在例程启动时设置该。可以计算满足撤消保留要求所需的撤消空间量: UndoSpace = RD * UPS, 其中 UndoSpace 以撤消块数来表示, RD 用以秒为单位的 UNDO_RETENTION 来表示, UPS 以每秒撤消块数来表示。 范围: 所允许的最大为 (2 ** 32) 秒。 默认: 30 秒。 Transactions_per_rollback_segment: 说明: 指定每个回退段允许的并行事务处理的数量。启动时获取的回退段的最小数量为 TRANSACTIONS 除以该的结果。如果在数 ROLLBACK_SEGMENTS 中命名了其他回退段, 就可以获取这些回退段。 范围: 1 - 根据操作系统而定。 默认: 5 undo_management: 说明: 指定系统应使用哪种撤消空间管理模式。如果设置为 AUTO, 例程将以 SMU 模式启动。否则将以 RBU 模式启动。在 RBU 模式下, 撤消空间会象回退段一样在外部分配。在 SMU 模式下, 撤消空间会象撤消表空间一样在外部分配。 范围: AUTO 或 MANUAL 默认: 如果启动第一个例程时忽略了 UNDO_MANAGEMENT 数, 则将使用默认 MANUAL, 并且例程将以 RBU 模式启动。如果这不是第一个例程, 则将按其他现有例程启动时使用的撤消模式来启动该例程。 Undo_tablespace: 说明: 撤消表空间仅用于存储撤消信息。UNDO_TABLESPACE 仅允许在系统管理撤消 (SMU) 模式下使用。例程将使用指定的撤消表空间, <undoname>。如果该表空间不存在, 或不是撤消表空间, 或正在由另一例程使用, 则例程 STARTUP 将失败。 默认: 每个数据库都包含 0 个或更多的撤消表空间。在 SMU 模式下, 将为每个 ORACLE 例程分配一个 (且仅限一个) 撤消表空间。 Instance_name 说明: 在多个例程使用相同服务名的情况下, 用来唯一地标识一个数据库例程。INSTANCE_NAME 不应与 SID 混淆, 它实际上是对在一台主机上共享内存的各个例程的唯一标识。 范围: 任何字母数字字符。 默认: 数据库 SID service_names: 说明 : 为 Oracle Net 监听程序用来识别一个服务 (如: 复制环境中的一个特定数据库) 的例程指定服务名。如果该服务没有域, 将附加 DB_DOMAIN 数。 语法 : SERVICE_NAMES = name1.domain, name2.domain 默认 : DB_NAME.DB_DOMAIN (如果已定义) local_listener: 说明 : 一个 Oracle Net 地址列表, 用于标识 Oracle Net 监听程序所在的同一台计算机上的数据库例程。所有例程和调度程序都在该监听程序上注册, 以便启用客户机连接。该数覆盖在 8.1 版本中废弃的 MTS_LISTENER_ADDRESS 和 MTS_MULTIPLE_LISTENERS 数。 范围: 一个有效的 Oracle Net 地址列表。 默认: (ADDRESS_LIST=(Address=(Protocol=TCP)(Host=localhost)(Port=1521)) (Address=(Protocol=IPC)(Key=DBname))) license_sessions_warning: 说明: 指定对并行用户会话数量的警告限制。达到该限制后, 其他用户仍然可以连接, 但一条消息将被写 ALERT 文件。具有 RESTRICTED SESSION 权限的用户将收到一条警告消息, 表明系统已接近最大容量。 范围: 0 - LICENSE_MAX_SESSIONS 默认: 0 license_max_sessions: 说明: 指定允许同时进行的并行用户会话的最大数量。达到该限制后, 只有具有 RESTRICTED SESSION 权限的用户才能连接到服务器。所有其他用户都会收到一条警告消息, 表明已达到系统最大容量的限制。 范围: 0 - 会话许可的数量。 默认: 0 license_max_users: 说明: 指定您可在该数据库中创建的用户的最大数量。并行会话使用许可和用户使用许可不应被同时启用。LICENSE_MAX_SESSIONS 或 LICENSE_MAX_USERS 或这两者的应为零。 范围: 0 - 用户许可的数量。 默认: 0 db_block_checksum: 说明: DBWn, ARCH 和 SQL*loader 是否为每一个数据块读或写计算或校验块的校验和。 范围: TRUE | FALSE 默认: FALSE shadow_core_dump: 说明: 一个针对 UNIX 的数, 用于指定是否将 SGA 信息转储到一个生成的核心文件中。如果设置为 FULL, SGA 将被包括在核心转储中。如果设置为 PARTIAL, SGA 将不被转储。 范围: FULL | PARTIAL 默认: FULL db_block_checking: 说明: 用于控制是否检查事务处理管理的块有无损坏。 范围: TRUE | FALSE 默认: FALSE background_core_dump: 说明: 是否将 SGA 信息转储到一个生成的核心文件中 (用于 UNIX)。 范围: FULL | PARTIAL 默认: FULL event: 说明: 由 Oracle 技术支持人员使用, 以调试系统。一般情况下, 不应变更该范围:不可用。 默认: 无 user_dump_dest: 说明: 为服务器将以一个用户进程身份在其中写调试跟踪文件的目录指定路径名。例如, 该目录可这样设置: NT 操作系统上的 C:/ ORACLE/UTRC; UNIX 操作系统上的 /oracle/utrc; 或 VMS 操作系统上的 DISK$UR3:[ORACLE.UTRC]。 范围: 一个有效的本地路径名, 目录或磁盘。 默认: 根据操作系统而定 timed_statistics: 说明: 收集操作系统的计时信息, 这些信息可被用来优化数据库和 SQL 语句。要防止因从操作系统请求时间而引起的开销, 请将该设置为零。将该设置为 TRUE 对于查看长时间操作的进度也很有用。 范围: TRUE | FALSE 默认: FALSE timed_os_statistics: 说明 : 由系统管理员使用, 以收集操作系统统计信息。为了有效地使用资源, 请只在需要时才设置该。对于专用服务器, 会在用户连接, 断开连接以及弹调用 (如果超了指定的时间限制) 的情况下收集操作系统统计信息。对于共享服务器, 将为推或弹的调用收集统计信息。 范围: 以秒为单位的时间。 默认 : 0 (操作系统统计信息不被刷新) core_dump_dest: 说明: 指定核心转储位置的目录名 (用于 UNIX)。 范围: 任何有效的目录名。 默认: ORACLE_HOME/dbs oracle_trace_collection_name: 说明: 指定 Oracle Trace 收集名, 并在输文件名中使用 (收集定义文件 .cdf 和数据收集文件 .dat)。如果该数不为空, 且 ORACLE_TRACE_ENABLE = TRUE, 就会启动一个默认的 Oracle Trace 收集, 直到该再次设置为 NULL。 范围: 一个有效的收集名, 最长可为 16 个字符 (使用 8 个字符文件名的平台除外)。 默认: NULL oracle_trace_collection_path: 说明: 指定 Oracle Trace 收集定义文件 (.cdf) 和数据收集文件 (.dat) 所在的目录路径名。 范围: 完整的目录路径名。 默认: 根据操作系统而定 (通常是 ORACLE_HOME/otrace/admin/cdf) background_dump_dest: 说明: 指定在 Oracle 操作过程中为后台进程 (LGWR, DBW n 等等) 写跟踪文件的路径名 (目录或磁盘)。它还定义记录着重要事件和消息的数据库预警文件的位置。 范围: 任何有效的目录名。 默认: ORACLE_HOME/rdbms/log (根据操作系统而定) oracle_trace_enable: 说明: 要为服务器启用 Oracle Trace 收集, 请将该设置为 TRUE。如果设置为 TRUE, 该服务器就可以使用 Oracle Trace。要启动一个收集过程, 请为 ORACLE_TRACE_COLLECTION_NAME 指定一个非空; 或者使用 Oracle Trace Manager 来启动一个收集。 范围: TRUE | FALSE 默认: FALSE oracle_trace_collection_size: 说明: 以字节为单位, 指定 Oracle Trace 收集文件的最大大小。一旦该收集文件的大小达到这个最大, 收集就会被禁用。如果范围指定为零, 就表示没有大小限制。 范围: 0 -4294967295 默认: 5242880 oracle_trace_facility_path: 说明: 指定 Oracle TRACE 工具的定义文件 (.fdf) 所在的目录路径名。 范围: 完整的目录路径名。 默认: ORACLE_HOME/otrace/admin/fdf/ (根据操作系统而定) sql_trace: 说明: 禁用或启用 SQL 跟踪设备。如果设置为 TRUE, 将收集优化信息, 这些信息对改善性能很有用。由于使用 SQL 跟踪设备将引发系统开销, 只应在需要优化信息的情况下使用 TRUE。 范围: TRUE | FALSE 默认: FALSE oracle_trace_facility_name: 说明: 指定 Oracle Trace 产品定义文件名 (.fdf 文件名)。该文件包含可为使用 Oracle Trace 数据收集 API 的产品收集的所有事件和数据项的定义信息。Oracle 建议使用默认的文件 ORCLED.FDF。 范围: 一个有效的设备名, 最长可有 16 个字符。 默认: oracled max_dump_file_size: 说明: 指定每个跟踪文件的最大大小。如果您担心跟踪文件会占用太多空间, 可更改该限制。如果转储文件可以达到操作系统允许的最大大小, 请将该指定为“无限制”。 范围: 0 - 无限制 (可以用 'K' 或 'M' 为单位) 默认: 10000 块 resource_limit: 说明: 确定是否在数据库概要文件中实行资源限制。如果设置为 FALSE, 将禁用资源限制。如果为 TRUE, 即启用资源限制。 范围: TRUE | FALSE 默认: FALSE resource_manager_plan: 说明: 如果指定该, 资源管理器将激活计划和例程的所有子项 (子计划, 指令和使用者组)。如果不指定, 资源管理器将被禁用, 但使用 ALTER SYSTEM 命令还可以启用。 范围: 任何有效的字符串。 默认: NULL sessions: 说明: 指定用户会话和系统会话的总量。默认数量大于 PROCESSES, 以允许递归会话。 范围: 任何整数。 默认: 派生 (1.1 * PROCESSES + 5) java_soft_sessionspace_limit: 说明: 以字节为单位, 指定在 Java 会话中使用的 Java 内存 的 '软限制'。如果用户的会话持续时间 Java 状态使用过多的内存, Oracle 将生成一个警告并向跟踪文件写一则消息。 范围: 0 - 4GB 默认: 0 cpu_count: 说明: Oracle 可用的 CPU 的数目 (用于计算其他)。请勿更改该范围: 0 - 无限制。 默认: 由 Oracle 自动设置 java_max_sessionspace_size: 说明: 以字节为单位, 指定可供在服务器中运行的 Java 程序所使用的最大内存量。它用于存储每次数据库调用的 Java 状态。如果用户的会话持续时间 Java 状态超过了该, 则该会话会由于内存不足而终止。 范围: 根据操作系统而定。 默认: 0 processes: 说明: 指定可同时连接到一个 Oracle Server 上的操作系统用户进程的最大数量。该应允许执行所有后台进程, 如: 作业队列 (SNP) 进程和并行执行 (Pnnn) 进程。 范围: 6 到根据操作系统而定的一个。 默认: 由 PARALLEL_MAX_SERVERS 确定 control_file_record_keep_time: 说明: 控制文件中可重新使用部分中的记录必须保留的最短时间 (天数)。 范围: 0 -365 默认: 7 log_checkpoint_timeout: 说明: 指定距下一个检查点现的最大时间间隔 (秒数)。将该时间指定为 0, 将禁用以时间为基础的检查点。较低的可以缩短例程恢复的时间, 但可能导致磁盘操作过量。 范围: 0 - 无限制。 默认: Oracle8i:900 秒。企业版: 1800 秒 recovery_parallelism: 说明: 指定与例程或介质恢复的进程的数量。如果为 0 或 1, 就表明恢复将由一个进程以串行方式执行。 范围: 根据操作系统而定 (不能超过 PARALLEL_MAX_SERVERS)。 默认: 根据操作系统而定 fast_start_mttr_target: 说明: 指定从单个数据库例程崩溃中恢复所需的时间 (估计秒数)。FAST_START_MTTR_TARGET 将在内部被转换为一组数, 用于修改数据库的操作, 从而将它的恢复时间控制在总 "恢复平均时间 (MTTR)" 中的一定范围之内。只有具有 "快速启动故障恢复" 功能的版本才支持此数。 范围: [0, 3600]。它将计算数据缓冲区高速缓存条目数之上, 且大于最大日志中的块数的限。 默认: 0 log_checkpoints_to_alert: 说明: 指定将检查点信息记录到预警文件中。该数对于确定检查点是否按所需频率现很有用。 范围: TRUE | FALSE 默认: FALSE fast_start_io_target: 说明: 指定在系统崩溃或例程恢复期间需要的 I/O 数量。该比 DB_BLOCK_MAX_DIRTY_TARGET 对恢复过程的控制更加精确。 范围: 0 (禁用 I/O 恢复限制) 或 1000, 到高速缓存中的所有缓冲区数。 默认: 高速缓存中的所有缓冲区数 log_checkpoint_interval: 说明: 指定在现检查点之前, 必须写重做日志文件中的 OS 块 (而不是数据库块) 的数量。无论该如何, 在切换日志时都会现检查点。较低的可以缩短例程恢复所需的时间, 但可能导致磁盘操作过量。 范围: 无限制 (指定 0 即可禁用该数)。 默认: 根据操作系统而定 log_buffer: 说明: 以字节为单位, 指定在 LGWR 将重做日志条目写重做日志文件之前, 用于缓存这些条目的内存量。重做条目保留对数据
Oracle练习笔试大全 1、select ename, sal * 12 from emp; //计算年薪 2、select 2*3 from dual; //计算一个比较纯的数据用dual表 3、select sysdate from dual; //查看当前的系统时间 4、select ename, sal*12 anuual_sal from emp; //给搜索字段更改名称(双引号 keepFormat 别名有特殊字符,要加双引号)。 5、任何含有空的数学表达式,最后的计算结果都是空。 6、select ename||sal from emp; //(将sal的查询结果转化为字符串,与ename连接到一起,相当于Java中的字符串连接) 7、select ename||'afasjkj' from emp; //字符串的连接 8、select distinct deptno from emp; //消除deptno字段重复的 9、select distinct deptno , job from emp; //将与这两个字段都重复的去掉 10、select * from emp where deptno=10; //(条件过滤查询) 11、select * from emp where empno > 10; //大于 过滤判断 12、select * from emp where empno <> 10 //不等于 过滤判断 13、select * from emp where ename > 'cba'; //字符串比较,实际上比较的是每个字符的AscII,与在Java中字符串的比较是一样的 14、select ename, sal from emp where sal between 800 and 1500; //(between and过滤,包含800 1500) 15、select ename, sal, comm from emp where comm is null; //(选择comm字段为null的数据) 16、select ename, sal, comm from emp where comm is not null; //(选择comm字段不为null的数据) 17、select ename, sal, comm from emp where sal in (800, 1500,2000); //(in 表范围) 18、select ename, sal, hiredate from emp where hiredate > '02-2月-1981'; //(只能按照规定的格式写) 19、select ename, sal from emp where deptno =10 or sal >1000; 20、select ename, sal from emp where deptno =10 and sal >1000; 21、select ename, sal, comm from emp where sal not in (800, 1500,2000); //(可以对in指定的条件进行取反) 22、select ename from emp where ename like '%ALL%'; //(模糊查询) 23、select ename from emp where ename like '_A%'; //(取第二个字母是A的所有字段) 24、select ename from emp where ename like '%/%%'; //(用转义字符/查询字段中本身就带%字段的) 25、select ename from emp where ename like '%$%%' escape '$'; //(用转义字符/查询字段中本身就带%字段的) 26、select * from dept order by deptno desc; (使用order by desc字段 对数据进行降序排列 默认为升序asc); 27、select * from dept where deptno <>10 order by deptno asc; //(我们可以将过滤以后的数据再进行排序) 28、select ename, sal, deptno from emp order by deptno asc, ename desc; //(按照多个字段排序 首先按照deptno升序排列,当detpno相同时,内部再按照ename的降序排列) 29、select lower(ename) from emp; //(函数lower() 将ename搜索来后全部转化为小写); 30、select ename from emp where lower(ename) like '_a%'; //(首先将所搜索字段转化为小写,然后判断第二个字母是不是a) 31、select substr(ename, 2, 3) from emp; //(使用函数substr() 将搜素来的ename字段从第二个字母开始截,一共截3个字符) 32、select chr(65) from dual; //(函数chr() 将数字转化为AscII中相对应的字符) 33、select ascii('A') from dual; //(函数ascii()与32中的chr()函数是相反的 将相应的字符转化为相应的Ascii编码) ) 34、select round(23.232) from dual; //(函数round() 进行四舍五操作) 35、select round(23.232, 2) from dual; //(四舍五后保留的小数位数 0 个位 -1 十位) 36、select to_char(sal, '$99,999.9999')from emp; //(加$符号千位分隔符,保留四位小数,没有的补零) 37、select to_char(sal, 'L99,999.9999')from emp; //(L 将货币转化为本地币种此处将显示¥人民币) 38、select to_char(sal, 'L00,000.0000')from emp; //(补零位数不一样,可到数据库执行查看) 39、select to_char(hiredate, 'yyyy-MM-DD HH:MI:SS') from emp; //(改变日期默认的显示格式) 40、select to_char(sysdate, 'yyyy-MM-DD HH:MI:SS') from dual; //(用12小时制显示当前的系统时间) 41、select to_char(sysdate, 'yyyy-MM-DD HH24:MI:SS') from dual; //(用24小时制显示当前的系统时间) select extract(day from dt2-dt1) day ,extract(hour from dt2-dt1) hour ,extract(minute from dt2-dt1) minute ,extract(second from dt2-dt1) second from (select to_timestamp('2011-02-04 15:07:00','yyyy-mm-dd hh24:mi:ss') dt1 ,to_timestamp('2011-05-17 19:08:46','yyyy-mm-dd hh24:mi:ss') dt2 from dual) //获取两个日期之间的具体时间间隔,extract函数是最好的选择 42、select ename, hiredate from emp where hiredate > to_date('1981-2-20 12:24:45','YYYY-MM-DD HH24:MI:SS'); //(函数to-date 查询公司在所给时间以后职的人员) 43、select sal from emp where sal > to_number('$1,250.00', '$9,999.99'); //(函数to_number()求这种薪水里带有特殊符号的) 44、select ename, sal*12 + nvl(comm,0) from emp; //(函数nvl() 求员工的"年薪 + 提成(或奖金)问题") 45、select max(sal) from emp; // (函数max() 求emp表中sal字段的最大) 46、select min(sal) from emp; // (函数max() 求emp表中sal字段的最小) 47、select avg(sal) from emp; //(avg()求平均薪水); 48、select to_char(avg(sal), '999999.99') from emp; //(将求来的平均薪水只保留2位小数) 49、select round(avg(sal), 2) from emp; //(将平均薪水四舍五到小数点后2位) 50、select sum(sal) from emp; //(求每个月要支付的总薪水) /////////////////////////组函数(共5个):将多个条件组合到一起最后只产生一个数据//////min() max() avg() sum() count()///////////////////////////// 51、select count(*) from emp; //求表中一共有多少条记录 52、select count(*) from emp where deptno=10; //再要求一共有多少条记录的时候,还可以在后面跟上限定条件 53、select count(distinct deptno) from emp; //统计部门编号前提是去掉重复的 ////////////////////////聚组函数group by() ////////////////////////////////////// 54、select deptno, avg(sal) from emp group by deptno; //按照deptno分组,查看每个部门的平均工资 55、select max(sal) from emp group by deptno, job; //分组的时候,还可以按照多个字段进行分组,两个字段相同的为一组 56、select ename from emp where sal = (select max(sal) from emp); //求 57、select deptno, max(sal) from emp group by deptno; //搜素这个部门中薪水最高的的 //////////////////////////////////////////////////having函数对于group by函数的过滤 不能用where////////////////////////////////////// 58、select deptno, avg(sal) from emp group by deptno having avg(sal) >2000; (order by )//求每个部门的平均,并且要 > 2000 59、select avg(sal) from emp where sal >1200 group by deptno having avg(sal) >1500 order by avg(sal) desc;//求sal>1200的平均按照deptno分组,平均要>1500最后按照sal的倒序排列 60、select ename,sal from emp where sal > (select avg(sal) from emp); //求那些人的薪水是在平均薪水之上的。 61、select ename, sal from emp join (select max(sal) max_sal ,deptno from emp group by deptno) t on (emp.sal = t.max_sal and emp.deptno=t.deptno); //查询每个部门中工资最高的那个人 ///////////////////////////////等连接////////////////////////////////////// 62、select e1.ename, e2.ename from emp e1, emp e2 where e1.mgr = e2.empno; //自连接,把一张表当成两张表来用 63、select ename, dname from emp, dept; //92年语法 两张表的连接 笛卡尔积。 64、select ename, dname from emp cross join dept; //99年语法 两张表的连接用cross join 65、select ename, dname from emp, dept where emp.deptno = dept.deptno; // 92年语法 表连接 + 条件连接 66、select ename, dname from emp join dept on(emp.deptno = dept.deptno); // 新语法 67、select ename,dname from emp join dept using(deptno); //与66题的写法是一样的,但是不推荐使用using : 假设条件太多 ///////////////////////////////////////非等连接/////////////////////////////////////////// 68、select ename,grade from emp e join salgrade s on(e.sal between s.losal and s.hisal); //两张表的连接 此种写法比用where更清晰 69、select ename, dname, grade from emp e join dept d on(e.deptno = d.deptno) join salgrade s on (e.sal between s.losal and s.hisal) where ename not like '_A%'; //三张表的连接 70、select e1.ename, e2.ename from emp e1 join emp e2 on(e1.mgr = e2.empno); //自连接第二种写法,同62 71、select e1.ename, e2.ename from emp e1 left join emp e2 on(e1.mgr = e2.empno); //左外连接 把左边没有满足条件的数据也取来 72、select ename, dname from emp e right join dept d on(e.deptno = d.deptno); //右外连接 73、select deptno, avg_sal, grade from (select deptno, avg(sal) avg_sal from emp group by deptno) t join salgrade s on (t.avg_sal between s.losal and s.hisal);//求每个部门平均薪水的等级 74、select ename from emp where empno in (select mgr from emp); // 在表中搜索那些人是经理 75、select sal from emp where sal not in(select distinct e1.sal from emp e1 join emp e2 on(e1.sal < e2.sal)); // 面试题 不用组函数max()求薪水的最大 76、select deptno, max_sal from (select avg(sal) max_sal,deptno from emp group by deptno) where max_sal = (select max(max_sal) from (select avg(sal) max_sal,deptno from emp group by deptno) );//求平均薪水最高的部门名称和编号。 77、select t1.deptno, grade, avg_sal from (select deptno, grade, avg_sal from (select deptno, avg(sal) avg_sal from emp group by deptno) t join salgrade s on(t.avg_sal between s.losal and s.hisal) ) t1 join dept on (t1.deptno = dept.deptno) where t1.grade = ( select min(grade) from (select deptno, grade, avg_sal from (select deptno, avg(sal) avg_sal from emp group by deptno) t join salgrade s on(t.avg_sal between s.losal and s.hisal) ) )//求平均薪水等级最低的部门的名称 哈哈 确实比较麻烦 78、create view v$_dept_avg_sal_info as select deptno, grade, avg_sal from (select deptno, avg(sal) avg_sal from emp group by deptno) t join salgrade s on(t.avg_sal between s.losal and s.hisal); //视图的创建,一般以v$开头,但不是固定的 后面还有好多啊,需要的可以下下来看看
数据库系统 信息技术基础-数据库管理系统全文共24页,当前为第1页。 信息资源管理 管理信息系统 MIS 数据库系统 DBS 数据库系统 DBS:是储存和管理数据的计算机系统, DBS能为多种应用服务,为多个用户所共享。 情报检索系统IRS 情报检索系统包括主题检索、关键字检索和全文检索 2 网上数据管理:日常的网络应用中,通常涉及网上数据库的操作,例如:搜索引擎程序、列车时刻查询网站、论坛(BBS)、在线图书馆、邮箱和博客系统、QQ、微信等。 信息技术基础-数据库管理系统全文共24页,当前为第2页。 网页查询 登记信息的APP 数据库管理系统 ACCESS 数据库 .accdb 职工信息查询系统 1.数据共享 2.数据独立性高 3.更安全 为什么采用数据库管理系统? 数据库系统(DBS):由数据库数据库管理系统、计算机软、硬件以及系统人员和用户等组成。 数据集合 能被共享、 可动态改变 建立、使用和维护数据库的管理软件 具特定功能 和数据库的配套的应用软件 信息技术基础-数据库管理系统全文共24页,当前为第3页。 几个常用概念 1、数据库:是指有组织地、动态地存储在辅助存储器上的,能为多个用户共享的、与应用程序能彼此独立的一组相互联着的数据集合。 2、数据库管理系统:是为了建立、使用和维护数据库而设计的数据库管理软件。Oracle、SQLsever、DB2大型数据库管理系统;FoxPro、Access小型的数据库管理软件。 3、数据库应用系统:按用户的应用需求或为某一特定的用户设计和数据库的配套的应用程序系统 信息技术基础-数据库管理系统全文共24页,当前为第4页。 信息技术基础-数据库管理系统全文共24页,当前为第5页。 Access数据库管理系统 6 数据表是关于特定主题数据的集合,是一张由行和列构成的二维表。 记录:每一行(除了标题行)是一条记录 字段:每一列称为字段。 2.区分字段字段 1.区分数据库和数据表 4.每行的字段相同,每列的数据类型相同,且显示格式相同 一个数据库可由若干张数据表组成。一张数据表用来存储同一类型或同一主题的相关数据。每张表相互间可以有一定的联系 3.区分字段类型 信息技术基础-数据库管理系统全文共24页,当前为第6页。 7 打开的数据库名称是_______。该数据库共有_________张数据表,当前状态下打开了______张数据表 表删除与重命名前,先关闭数据表 信息技术基础-数据库管理系统全文共24页,当前为第7页。 8 同一张表 设计视图 数据表视图 在数据表视图中添加、修改、删除记录,新记录只能添加到*处 可以通过导的方式添加记录 新字段可以添加在中间,也可以调整字段的顺序 信息技术基础-数据库管理系统全文共24页,当前为第8页。 9 数据类型:文本、备注、数字、日期/时间、货币、自动编号、是/否等。 数据类型 说 明 字段 文本 文字或不需要计算的数字 姓名、手机号码、身份证号码 备注 长文本 个人简介、文章内容 数字 可计算的数 ,可设置小数位 只能输数字 日期/时间 日期与时间类型的 1995/6/5、2015-9-1,输分隔符可以为 / - . , 空格 货币 货币类型的,自动添加货币符号,可以设置为不显示货币符号 商品价格、工资,输数字 信息技术基础-数据库管理系统全文共24页,当前为第9页。 10 数据类型:文本、备注、数字、日期/时间、货币、自动编号、是/否等。 数据类型 说 明 字段 自动编号 自动添加一个唯一的序号,按1递增或随机整数,通过设置格式可以添加前缀,如添加前缀ABC后,显示为ABC001、ABC002 不可以手动输和修改,不可粘贴 是/否 逻辑,打勾,字段占用1位存储 性别(男或女) OLE对象 存储嵌的对象,例如Word文档、图像、声音或其它二进制数据 对象 信息技术基础-数据库管理系统全文共24页,当前为第10页。 原始数据如上图所示,创建一张Access数据表用以存储以上数据,为每个字段选择适合字段类型 文本 文本 是/否 日期时间 是/否 文本 信息技术基础-数据库管理系统全文共24页,当前为第11页。 12 如果字段的类型是自动编号, 则无法手工输和编辑,字段都是自动生成的(不会重复),即使删掉的也不会再次生成。 不管在哪里添加新的记录,最新的记录都会显示在最下面一行 信息技术基础-数据库管理系统全文共24页,当前为第12页。 13 在Access2010中,可以设定自动编号的数格式或在自动编号中增加文字。如:在"字段属性"的"格式"中设置为"0000",自动编号会产生"0001"、"0002"格式的自动编号。如下图1,格式设置为"浙0000",会产生"浙0001"、"浙0002"格式的自动编号。 信
标题:PHP基础教程 处:风流的CG网络日志 时间:Mon, 28 Aug 2006 07:24:34 +0000 作者:yufeng 地址:http:///read.php?38 内容: 提供给新手学习的 PHP新手教程,是一个比较有价的PHP新手教程! 一、PHP简介 PHP是一种易于学习和使用的服务器端脚本语言。只需要很少的编程知识你就能使用PHP建立一个真正交互的WEB站点。本教程并不想让你完全了解这种语言,只是能使你尽快加开发动态web站点的行列。我假定你有一些HTML(或者HTML编辑器)的基本知识和一些编程思想。 1.简介 PHP是能让你生成动态网页的工具之一。PHP网页文件被当作一般HTML网页文件来处理并且在编辑时你可以用编辑HTML的常规方法编写PHP。 PHP代表:超文本预处理器(PHP: Hypertext Preprocessor)。PHP是完全免费的,不用花钱,你可以从PHP官方站点(http://www.php.net)自由下载。PHP遵守GNU公共许可(GPL),在这一许可下诞生了许多流行的软件诸如Linux和Emacs。你可以不受限制的获得源码,甚至可以从中加进你自己需要的特色。PHP在大多数Unix平台,GUN/Linux和微软Windows平台上均可以运行。怎样在Windows环境的PC机器或Unix机器上安装PHP的资料可以在PHP官方站点上找到。安装过程很简单。 如果你的机器解决了2000问题,那么PHP也一样没有千年虫问题! 1.1 历史 三年前,Rasmus Lerdorf为了创建他的在线简历而创造了"个人主页工具"(Personal Home Page Tools)。这是一种非常简单的语言。其后越来越多的人们注意到了这种语言并对其扩展提了各种建议。在许多人的无私奉献下以及这种语言本身的源代码自由性质,它演变成为一种特点丰富的语言,而且现在还在成长中。 PHP虽然很容易学习,但是速度上比mod_perl(植web服务器的perl模块)慢。现在有了可以与mod_perl速度想媲美的被称作Zend的新引擎,而PHP4就可以充分利用这个引擎。PHP4还处在BETA测试阶段。Andy Gutmans和Zeev Suraki是Zend的主要作者。可以去Zend站点(http://www.zend.com)了解更多。 PHP的应用在个人性质的web工程中增长显著。根据Netcraft在1999年10月的报告,有931122个域和321128个IP地址利用PHP技术。 1.2 PHP的先进之处 应用PHP有许多好处。当然已知的不利之处在于PHP由于是开放源码项目,没有什么商业支持,并且由此而带来的执行速度缓慢(直到PHP4之前)。但是PHP的邮件列表很是有用而且除非你正在运行像Yahoo!或者Amazon.com这样的极受欢迎的站点,你不会感觉PHP的速度与其他的有什么不同。最起码我就没有感觉来!好了,让我们来看看PHP有那些优点: - 学习过程 我个人更喜欢PHP的非常简单的学习过程。与Java和Perl不同,你不必把头埋进100多页的文档中努力学习才可以写一个象样的程序。只要了解一些基本的语法和语言特色,你就可以开始你的PHP编码之旅了。之后你在编码过程中如果遇到了什么麻烦,还可以再去翻阅相关文档。 PHP的语法与C,Perl,ASP或者JSP。对于那些对上述之一的语言较熟悉的人来说,PHP太简单了。相反的,如果你对PHP了解较多,那么你对于其他几种语言的学习都很简单了。 你只需要30分钟就可以将PHP的核心语言特点全部掌握,你可能已经非常了解HTML,甚至你已经知道怎样用编辑设计软件或者手工来制作好看的WEB站点。由于PHP代码能够无障碍的添加进你的站点,在你设计和维护站点的同时,你可以很轻松的加PHP使得你的站点更加具有动态特性。 - 数据库连接 PHP可以编译成具有与许多数据库相连接的函数。PHP与MySQL是现在绝佳的组合。你还可以自己编写外围的函数取间接存取数据库。通过这样的途径当你更换使用的数据库时,可以轻松的更改编码以适应这样的变化。PHPLIB就是最常用的可以提供一般事务需要的一系列基库。 - 可扩展性 就像前面说的那样,PHP已经进了一个高速发展的时期。对于一个非程序员来说为PHP扩展附加功能可能会比较难,但是对于一个PHP程序员来说并不困难。 - 面向对象编程 PHP提供了类和对象。基于web的编程工作非常需要面向对象编程能力。PHP支持构造器、提取类等。 - 可伸缩性 传统上网页的交互作用是通过CGI来实现的。CGI程序的伸缩性不很理想,因为它为每一个正在运行的CGI程序开一个独立进程。解决方法就是将经常用来编写CGI程序的语言的解释器编译进你的web服务器(比如mod_perl,JSP)。PHP就可以以这种方式安装,虽然很少有人愿意这样以CGI方式安装它。内嵌的PHP可以具有更高的可伸缩性。 - 更多特点 PHP的开发者们为了更适合web编程,开发了许多外围的流行基库,这些库包含了更易用的层。你可以利用PHP连接包括Oracle,MS-Access,Mysql在内的大部分数据库。你可以在苍蝇上画图,编写程序下载或者显示e-mail。你甚至可以完成网络相关的功能。最好的是,你可以选择你的PHP安装版本需要哪些功能。引用Nissan的Xterra的话来说就是PHP可以做到你想让它做到的一切而且无所不能! 1.3 竞争对手:ASP,mod_perl,JSP 我当然不清楚ASP/JSP能做些什么。不过明确的是编写那样的代码有多简单,购买它们会有多昂贵以及它们需要多么昂贵和强大的硬件。如果你有什么中立的观点(比如说没有被SUN和Microsoft的百万美金所影响),请顺便通知我。 据我所知,JSP基于Java,因此Java程序员可以轻松开始编码。ASP只是一个一般的引擎,具有支持多种语言的能力,不过默认的并且是最常用的还是VBScript。 mod_perl与Perl一样强大,只是更快一些。 二、PHP门 PHP站点的在线教程已经很棒了。在那里还有一些其他教程的链接。而本文的该部分将让你对PHP熟悉一点。我不可能做到没有任何遗漏,我的目的只在于能让你迅速开始你的PHP编程。 2.1 首要条件 你首先必须要有一个正在工作着的支持PHP的web服务器。我假定在你的服务器上所有PHP文件的扩展名为.php3。 2.2 PHP的安装 生成一个名为test.php3的文件,含有以下内容: 然后在你的浏览器中打开此文件。看看这个页面你就知道你的PHP安装使用的选项了。 2.3 语法 就像前面提到的一样,你可以混合编写你的PHP代码和HTML代码。因此你必须有办法将两者区别开来。以下就是你可以采用的几种方法。你可以选用其中一种你最适应的并且就这样坚持这种方法! 从HTML中分离 以下是可以使用的方法: . . . 语句 与Perl和C一样,在PHP中用(;)来分隔语句。那些从HTML中分离来的标志也表示语句的结束。 注释 PHP支持C,C++和Unix风格的注释方式: /* C,C++风格多行注释 */ // C++风格单行注释 # Unix风格单行注释 Hello,World! 通过我们已经学过的知识,你可以编写一个最简单的程序输一个也许是程序世界中最有名的词语: First PHP page 2.4 数据类型 PHP支持整数、浮点数、字符串、数组和对象。变量类型通常不由程序员决定而由PHP运行过程决定(真是好的解脱!)。但是类型也可以被函数cast或者settype()明确的设定。 数类型可以是整数或是浮点数。你可以用以下的语句来为一个数: $a = 1234; # 十进制数 $a = -123; # 负数 $a = 0123; # 八进制数 (等于十进制数的83) $a = 0x12; # 十六进制数(等于十进制数的18) $a = 1.234; # 浮点数"双精度数" $a = 1.2e3; # 双精度数的指数形式 字符串 字符串可以由单引号或双引号引字段定义。注意不同的是被单引号引的字符串是以字面定义的,而双引号引的字符串可以被扩展。反斜杠(\)可以被用来分割某些特殊字符。举例如下: $first = 'Hello'; $second = "World"; $full1 = "$first $second"; # 产生 Hello World $full2 = '$first $second';# 产生 $first $second 可以将字符和数字利用运算符号连接起来。字符被转化成数字,利用其最初位置。在PHP手册中有详细的例子。 数组与哈希表 数组与哈希表以同样的方法被支持。怎样运用取决于你怎样定义它们。你可以用list()或者array()来定义它们,也可以直接为数组赋。数组的索引从0开始。虽然我在这里没有说明,但是你一样可以轻易的使用多维数组。 // 一个包含两个元素的数组 $a[0] = "first"; $a[1] = "second"; $a[] = "third"; // 添加数组元素的简单方法 // 现在$a[2]被赋为"third" echo count($a); // 打印3,因为该是数组有3个元素 // 用一个语句定义一个数组并赋 $myphonebook = array ( "sbabu" => "5348", "keith" => "4829", "carole" => "4533" ); // 噢,忘了教长吧,让我们添加一个元素 $myphonebook["dean"] = "5397"; // 你定义的carale元素错了,让我们更正它 $myphonebook["carole"] => "4522" // 我还没有告诉你怎样使用数组的相似支持方式吗?让我们看一看 echo "$myphonebook[0]"; // sbabu echo "$myphonebook[1]"; // 5348 其他一些对数组或哈希表有用的函数包括sort(),next(),prev()和each()。 对象 使用new语句产生一个对象: class foo { function do_foo () { echo "Doing foo."; } } $bar = new foo; $bar->do_foo(); 改变变量类型 在PHP手册中提到:"PHP不支持(也不需要)直接在声明变量时定义变量类型;变量类型将根据其被应用的情况决定。如果你为变量var赋为一个字符串,那么它变成了一个字符串。如果你又为它赋了整数,那么它就变成了整数。" $foo = "0"; // $foo是字符串(ASCII 48) $foo++; // $foo是字符串"1" (ASCII 49) $foo += 1; // $foo现在是整数(2) $foo = $foo + 1.3; // $foo是一个双精度数(3.3) $foo = 5 + "10 Little Piggies"; // $foo是一个整数(15) $foo = 5 + "10 Small Pigs"; // $foo是一个整数(15) 如果想要强行转换变量类型,可以使用与C语言相同的函数settype()。 2.5 变量与常量 可能你已经注意到,变量都有一个美元符号($)的前缀。所有变量都是局部变量,为了使得定义的函数中可以使用外部变量,使用global语句。而你要将该变量的作用范围限制在该函数之内,使用static语句。 $g_var = 1 ; // 全局范围 function test() { global $g_var; // 这样就可以声明全局变量了 } 更先进一些的是变量的变量表示。请考PHP手册。这在有时会显得很有用。 PHP内置了许多已定义的变量。你也可以用define函数定义你自己的常量,比如define("CONSTANT","value")。 2.6 运算符 PHP具有C,C++和Java中的通常见到的运算符。这些运算符的优先权也是一致的。赋同样使用"="。 算术和字符 以下只有一种运算符是有关字符的: $a + $b :加 $a - $b :减 $a * $b :乘 $a / $b :除 $a % $b :取模(余数) $a . $b :字符串连接 逻辑和比较 逻辑运算符有: $a || $b :或 $a or $b :或 $a && $b :与 $a and $b :与 $a xor $b :异或 (当$a或$b为true时为true,两者一样时为false) ! $a :非 比较运算符有: $a == $b :相等 $a != $b :不等 $a < $b :小于 $a $b :大于 $a >= $b :大于等于 与C一样PHP也有三重运算符(?:)。位操作符在PHP同样存在。 优先权 就和C以及Java一样! 2.7 控制流程结构 PHP有着与C一样的流程控制。我将在下面大概介绍。 if, else, elseif, if(): endif if (表达式一) { . . . } elseif (表达式二) { . . . } else { . . . } // 或者像Python一样 if (表达式一) : . . . . . . elseif (表达式二) : . . . else : . . . endif ; Loops. while, do..while, for while (表达式) { . . . } do { . . . } while (表达式); for (表达式一; 表达式二; 表达式三) { . . . } //或者像Python一样 while (expr) : . . . endwhile ; switch switch是对多重if-elseif-else结构的最好的替换: switch ($i) { case 0: print "i equals 0"; case 1: print "i equals 1"; case 2: print "i equals 2"; } break, continue break中断当前的循环控制结构。 continue被用来跳剩下的当前循环并继续执行下一次循环。 require, include 就像C中的#include预处理一样。你在require中指定的那个文件将替代其在主文件中的位置。在有条件的引用文件时,可以使用include()。这样就使得你可以将复杂的PHP文件分割成多个文件并且在不同需要时分别引用它们。 2.8 函数 你可以像以下的例子一样定义自己的函数。函数的返回可以是任何数据类型: function foo (变量名一, 变量名二, . . . , 变量名n) { echo "Example function.\n"; return $retval; } 所有PHP代码都可以现在函数定义中,甚至包括对其他函数和类的定义。函数必须在引用之前定义。 2.9 类 利用类模型建立类。可以考PHP手册中对类的详细解释。 class Employee { var $empno; // 员工人数 var $empnm; // 员工姓名 function add_employee($in_num, $in_name) { $this->empno = $in_num; $this->empnm = $in_name; } function show() { echo "$this->empno, $this->empnm"; return; } function changenm($in_name) { $this->empnm = $in_name; } } $sbabu = new Employee; $sbabu->add_employee(10,"sbabu"); $sbabu->changenm("babu"); $sbabu->show(); 三、从实例手  PHP的许多特点与其他软件或者工具有关。利用迄今为止我们所学到的PHP知识,我们可以试着建立一个简单交互的网站。利用这一过程我们又可以学到不少东西。好吧,我们现在开始专注于一个典型个人网站的建设。 3.1 计划一个站点 一般一个个人站点包括一个欢迎页面、一个留言本页面、一个书签链接页面、一个计数器、联系信息,甚至还有照片集和一些音乐文件等等。让我们从一个标题页面、一个联系信息页面和一个简历页面开始。我们同样需要标准的通用的页面头部和底部。 标题页面--front.html 这里我们有一个非常简单的html文件: 我的个人主页--欢迎 我的个人主页 欢迎 欢迎来我的寒舍,虽然这里现在暂时还没有什么。 不过我希望马上就可以多起来。 Copyright ? 我自己,1999 联系信息页面--count.html 同样我们又有了一个简单页面: 我的个人主页--联系信息 我的个人主页 联系信息 你可以通过1-800-PHP-INFO联系我 Copyright ? 我自己,1999 3.2 HTML到PHP 从上面你可以看,每个页面有相同的头部和底部。像上面那样每个页面都写相同的信息在工作量少的时候还可以,但是想象一下当有100多页面且你需要全部更改其头部或底部时你要花费多大精力?一页一页的手工更改是一件多么冗长无趣的事情啊!所以我们应该为这些页面编写PHP的头部和底部文件,之后我们只要在每个HTML页面中引用它们就行了。我们将把这些include文件放在一个叫include的子目录下。下面我们就把这些站点的通用内容写进文件中。 全站通用变量设定:common.inc <? // 全站通用变量 $MyEmail = "phptalk@tnc.org"; $MyEmailLink = "$MyEmail"; $MyName = "PHP Talk"; $MySiteName = $MyName."'s Home Page"; ?> 通用页面头部:header.inc 通用页面底部:footer.inc Copyright ? by , 1999 新的页面front.php3: 欢迎来我的寒舍,虽然这里现在暂时还没有什么。 不过我希望马上就可以多起来。 新的cont.php3: 你可以通过1-800-PHP-INFO联系我 现在你就可以猜这样安排的好处了。如果你想改动页面的头部或者底部,你只需要改动相应的文件就可以了。如果你要修改你的e-mail地址甚至你的名字,只要修改common.inc文件就行了。另外得注意的是你可以把具有任何文件名或者文件扩展名的文件包含进你的文件中,你甚至可以包含其他站点上的文件。 3.3 计数器 让我们在首页上加上一个计数器。这个例子已经被讲过多次了,但是还是有利于演示怎样读写文件以及创建自己的函数。counter.inc包含以下代码: 然后我们更改front.php3文件以显示这个计数器: <? include("include/counter.inc"); // 我把计数放在文件counter.txt中,读并输 printf ("%06d \n", get_hitcount("counter.txt")); include("include/footer.inc"); ?> 看看我们的新front.php3 3.4 反馈表单 让我们再添加一个反馈表单以便你的浏览者填写并e-mail给你。举例来说我们用一种很简单的方法实现它,我们只需要两个页面:一个为浏览者提供输表单;一个获得表单数据并处理、mail给你。 PHP中获取表单数据是很简单的。当一个表单被发送后,表单中所包含的各个元素被赋上了相应的,而这样就可以像引用一般变量一样使用了。 在process_form.php3中,变量$mytext就被赋予了输--非常简单!同样的,你可以从列表框、多选框、单选框、按钮等表单元素中取得变量。你唯一要做的就是为表单中的每一个元素取名以便将来可以引用。 根据这个方法,我们可以生成一个简单的包含三个元素的表单:姓名、e-mail地址和留言。当浏览者发送表单后,处理该表单的PHP页面(sendfdbk.php3)读取数据,检查姓名是否为空,最后将数据mail给你。 表单:form.php3 Your feedback on my home page. 处理表单:sendfdbk.php3 <? include("include/common.inc"); $title = "Feedback"; include("include/header.inc"); if ( $name == "" ) { // 现在我很讨厌匿名的留言! echo "Duh ? How come you are anonymous?"; } elseif ($name == "Your name") { // 这个浏览者真是不想透露姓名啊! echo "Hello ? Your name is supposed to be replaced with your actual name!"; } else { // 输一段礼貌的感谢语 echo " Hello, $name. Thank you for your feedback. It is greatly appreciated. Thanking you $MyName $MyEmailLink "; // 最后mail去 mail($MyEmail, "Feedback."," Name : $name E-mail : $email Comment : $comment "); } include("include/footer.inc"); ?> 3.5 简单的站内搜索引擎 PHP可以调用外部程序。在Unix环境下我们可以利用程序grep实现一个简单的搜索引擎。我们可以做的稍微复杂一些:使用一个页面既输一个表单供用户输搜索字串又输查询结果。 <FORM ACTION="" METHOD="POST"> <INPUT TYPE="text" NAME="searchstr" value="" SIZE="20" MAXLENGTH="30"> <? if ( ! empty($searchstr) ) { // empty()用来检查查询字串是否为空 // 如果不为空,调用grep查询 echo "\n"; // 调用grep对所有文件进行大小写非敏感模式的查询 $cmdstr = "grep -i $searchstr *"; $fp = popen( $cmdstr, "r" ); // 执行命令并输管道 $myresult = array(); // 存储查询结果 while( $buffer = fgetss ($fp, 4096)) { // grep返回这样格式: 文件名:匹配字串现行数 // 因此我们利用函数split()分离处理数据 list($fname, $fline) = split(":",$buffer, 2); // 我们只输第一次匹配的结果 if ( !defined($myresult[$fname])) $myresult[$fname] = $fline; } // 现在我们将结果存储在数组中,下面就可以处理并输了 if ( count($myresult) ) { echo "\n"; while(list($fname,$fline) = each($myresult)) echo " $fname : $fline \n"; echo "\n"; } else { // 如果没有查询结果 echo "Sorry. Search on $searchstr returned no results.\n"; } pclose($fp); } ?> 注释: PHP_SELF是PHP内建的变量。包含当前文件名。 fgets()按行读取文件,最多4096(指定)字符长度。 fgetss()与fgets()相似,只是解析输的HTML标记。 split()有一个数是2,因为我们只需要把输分成两部分。另外需要省略":"。 each()是一个数组操作函数,用来更方便的遍历整个数组。 popen()、pclose()与fopen()、fclose()的功能很相似,只是增加了管道处理。 请注意以上的代码并不是实现一个搜索引擎的好办法。这只是有助于我们更好学习PHP而举的一个例子而已。理想的情况是你应该建立一个包含关键字的数据库然后进行搜索 四、与数据库链接 通过PHP你可以轻松的连接到数据库,请求数据并将其显示在你的web站点中,甚至修改数据库中的数据。MySQL是一种很流行的数据库,并且在互联网中有许多有关PHP与MySQL的教程。MySQL是免费的,这一点也许就吸引了不少人。由于其广泛应用,我就不想在这里赘述MySQL的使用方法了。Oracle被大量在企业应用中采用,因此我们就利用Oracle来介绍PHP与数据库的连接。我们当然不会提及Oracle数据库的设计原理,原因是这已经超了我们的讨论范围。 PHP提供了两套函数与Oracle连接,分别是ORA_和OCI函数。其中ORA_函数略显陈旧。OCI函数更新据说更好一些。两者的使用语法几乎相差无几。如前所述,你的PHP安装选项应该可以支持两者的使用。 想获得更多有关在Microsoft Windows平台上安装支持PHP3的Apache服务器的知识以及更多有关Oracle数据库的知识,请查阅以下URL:www.csoft.net/~vsbabu/articles/oraphp.html。 4.1 连接 <? if ($conn=Ora_Logon("user@TNSNAME","password")) { echo "SUCCESS ! Connected to database\n"; } else { echo "Failed :-( Could not connect to database\n"; } Ora_Logoff($conn); phpinfo(); ?> 以上代码使用TNSNAME(在你的tnsnames.ora文件中指明)定义的Oracle数据库名称、用户名称和密码连接数据库。在成功连接的基础上,ora_logon函数返回一个非零的连接ID并储存在变量$conn中。 4.2 查询 假设与数据库已经连接就绪,下面我们就来实际的应用对数据库查询。下面的代码演示了一个连接并查询的典型例子: <? /* * 连接数据库并执行查询 */ function printoraerr($in_cur) { // 检查Oracle是否错 // 如果存在错误则显示 // 当指针被激活时每次请求Oracle后调用该函数 if(ora_errorcode($in_cur)) echo "Oracle code - ".ora_error($in_cur)."\n"; return; } /** 主程序 */ if (!($conn=ora_logon("user@TNSNAME","password"))) { echo "Connection to database failed\n"; exit; } echo "Connected as connection - $conn\n"; echo "Opening cursor ...\n"; $cursor=ora_open($conn); printoraerr($cursor); echo "Opened cursor - $cursor\n"; $qry="select user,sysdate from dual"; echo "Parsing the query $qry ...\n"; ora_parse($cursor,$qry,0); printoraerr($cursor); echo "Query parsed \n"; echo "Executing cursor ...\n"; ora_exec($cursor); printoraerr($cursor); echo "Executed cursor\n"; echo "Fetching cursor ...\n"; while(ora_fetch($cursor)) { $user=ora_getcolumn($cursor,0); printoraerr($cursor); $sysdate=ora_getcolumn($cursor,1); printoraerr($cursor); echo " row = $user, $sysdate \n"; } echo "Fetched all records\n"; echo "Closing cursor ...\n"; ora_close($cursor); echo "Closed cursor\n"; echo "Logging off from oracle... \n"; ora_logoff($conn); echo "Logged off from oracle \n"; ?> (译者注:以上代码段缺少注释,请读者考PHP Manual的Oracle数据库函数部分) 4.3 显示结果 以下代码演示了怎样查询数据库并将结果输: <? function printoraerr($in_cur, $conn) { // 检查Oracle是否错 // 如果存在错误则显示 // 当指针被激活时每次请求Oracle后调用该函数 // If it encountered an error, we exit immediately if(ora_errorcode($in_cur)) { echo "Oracle code - ".ora_error($in_cur)."n"; ora_logoff($conn); exit; } return; } function exequery($w_qry,$conn) { $cursor=ora_open($conn); printoraerr($cursor,$conn); ora_parse($cursor,$w_qry,0); printoraerr($cursor,$conn); ora_exec($cursor); printoraerr($cursor,$conn); $numrows=0; $w_numcols=ora_numcols($cursor); // 显示头部 echo " \n"; for ($i=0;$i<$w_numcols;$i++) { $align=(ora_columntype($cursor,$i)=="NUMBER")?"RIGHT":"LEFT"; echo "\t".ora_columnname($cursor,$i)."\n"; } echo "\n"; while(ora_fetch($cursor)) { echo "\n"; for ($i=0;$i<$w_numcols;$i++) { $align=(ora_columntype($cursor,$i)=="NUMBER")?"RIGHT":"LEFT"; if(ora_columntype($cursor,$i)=="LONG") echo "". ora_getcolumn($cursor,$i)."\n"; else echo "".ora_getcolumn($cursor,$i)."\n"; printoraerr($cursor,$conn); } $numrows++; echo "\n"; } if ($numrows==0) echo "Query returned no records \n"; else { echo "\n"; echo "Count\n"; echo "$numrows\n"; echo "\n"; } echo "\n"; ora_close($cursor); return; } // 主程序 if(!($conn=ora_logon("user@SID","password"))) { echo "Error: Cannot connect to database\n"; exit; } $qry="SELECT deptno \"Dept\" ,empno \"Emp\" ,empnm \"Name\" ,salary \"Salary\" FROM employee ORDER BY 1,2"; exequery($qry); ora_logoff($conn); ?> (译者注:以上代码段缺少注释,请读者考PHP Manual的Oracle数据库函数部分) 4.4 基于HTTP的Oracle登录 将以下代码加在PHP页面代码之前以确认Oracle登录。注意你必须正确设定$ SID。 <? if(!isset($PHP_AUTH_USER)) { Header("WWW-authenticate: basic realm=\"$SID\""); Header("HTTP/1.0 401 Unauthorized"); $title="Login Instructions"; echo " You are not authorized to enter the site \n"; exit; } else { if (!($conn=ora_logon("$PHP_AUTH_USER@$SID",$PHP_AUTH_PW))) { Header("WWW-authenticate: basic realm=\"$SID\""); Header("HTTP/1.0 401 Unauthorized"); $title="Login Instructions"; echo " You are not authorised to enter the site \n"; exit; } } ?> 五、其它功能 5.1 生成图像 PHP可以操作处理图像。如果你已经安装了GD库,你甚至可以利用PHP生成图像。 (译者注:以上代码段缺少注释,请读者考PHP Manual的图像处理函数部分) 这段代码在其他页面中通过以下标记调用,然后以上的那段button.php3代码取得text并在另外取得的图像文件中加上该--在以上的代码中该图像文件是images/button1.gif--最后输到浏览器。假如你想在表单域中使用图像按钮,但是又不希望在每次按钮上的文字改变后不得不重新生成新的图像,就可以利用这样简单的方法动态生成图像文件。 5.2 Cookies PHP支持基于HTTP的cookies。在需要时你可以像使用一般变量一样方便的使用cookie。Cookies是浏览器保存于客户端的一些信息片段,由此你可以知道是否一台特定PC上的任何人都访问过你的站点,浏览者者在你的站点上的踪迹等等。使用cookies的典型例子就是对浏览者偏好的甄别。Cookies由函数setcookie()设定。与输HTTP标头的函数header()一样,setcookie()必须在任何实际内容杯输到浏览器之前调用。以下是一个简单例子: <? if (empty($VisitedBefore)) { // 如果没有设定cookie,为cookie赋上当前时间 // 函数中的最后一个数声明了该cookie保存的时间 // 在这个例子中是1年 // time()函数返回自1970年1月1日以来的以秒数计的时间 SetCookie("VisitedBefore",time(), time()+(60*60*24*365)); } else { // 欢迎浏览者再次光临 echo "Hello there, welcome back"; // 读取cookie并判断 if ( (time() - $VisitedBefore) >= "(60*60*24*7)" ) echo "Why did you take a week to come back. You should be here more often!? "; } ?> 5.3 基于HTTP验证 基于HTTP验证当PHP以CGI模式运行时不能实现。我们可以使用函数header()发送HTTP标头强制验证,客户端浏览器则弹供输用户名和密码的对话框。这两个变量被储存在$PHP_AUTH_USER和$PHP_AUTH_PW中,你可以使用这两个变量验证合法并允许进。以下的例子通过用户名称/密码对为tnc/nature的验证一名用户的登录: 事实上再实际引用中不大可能如上面使用代码段明显的用户名称/密码对,而是利用数据库或者加密的密码文件存取它们。 5.4 文件上传 你可以利用PHP实现文件的功能,注意客户端的浏览器应该是Netscape3以上或者IE3以上。以下就是该功能的简单演示: ( upload.html ): Upload Your File (You may notice a slight delay while we upload your file.) 下面是处理上传的文件: ( receiver.php3 ): 2000000 ) { $error_msg = "Sorry, your file is too large."; return; } $the_time = time (); // 你需要对以下目录有写权限 $upload_dir = "/local/uploads"; $local_file = "$upload_dir/$the_time"; if ( file_exists ( '$local_file' ) ) { $seq = 1; while ( file_exists ( "$upload_dir/$the_time$seq" ) ) { $seq++; } $local_file = "$upload_dir/$the_time$seq"; }; rename ( $uploadfile, $local_file ); display_page (); } function display_page () { // 这里是你的页面内容 } php3 Receiving Script <? if ( $error_msg ) { echo "$error_msg"; } if ( $sendit ) { do_upload (); } elseif ( $cancelit ) { header ( "Location: $some_other_script" ); exit; } else { some_other_func (); } ?> 5.5 常用函数 我们简单来看看一些常用的函数。 数组 array - 生成数组 count - 数组元素个数 sort - 数组排序,另有其他几种排序函数可供使用 list - 列数组元素 each - 返回下一个key/value对 current - 返回当前数组元素 next,prev - 传回当前数组元素前后指针 日期和时间 checkdate - 验证日期/时间格式 date - 生成日期/时间格式 time - 当前时间信息 strftime - 格式化日期/时间 目录、文件系统 chdir - 改变目录 dir - 目录类别 opendir, readdir, closedir - 开启、读取、关闭目录 fopen, fclose - 开启、关闭文件 fgets, fgetss - 逐行读取内容 file - 将整个文件读一个数组变量中 正则表达式 ereg - 匹配正则表达式 eregi - 大小写非敏感匹配正则表达式 ereg_replace -匹配正则表达式并替换 eregi_replace -大小写非敏感匹配正则表达式并替换 split - 依规则切开字符串并以数组形势存储 字符串 AddSlashes - 加上斜杠后使用字符串 echo - 输一个或多个字符串 join, implode - 将数组元素合并为字符串 htmlentities, htmlspecialchars - 将HTML特殊字符转换为HTML标记形式 split - 依规则切开字符串并以数组形势存储 5.6 扩展我们的范例主页 我们将使用以上提到的一些函数和思想为我们的范例主页添加更多的动态内容。我们可以在每个页面的顶部加上导航栏,同时使得当前页自动的不被链接显示;同时还可以添加一个用户验证表单以便上传音乐、图像等文件并自动更新页面。 导航栏 实际上就是在footer.inc文件中加上一段代码。假设你的web站点中所有后缀为.php3的文件都会现在导航栏中,以下就是被存为include/navbar.inc的代码: <? /* 输该导航栏,链接所有除当前页的站内.php3文件 */ # 读取目录 $d = dir("./"); echo " | \n"; while($entry = $d->read()) { // 忽略无文件情况 if ( !is_file($entry) ) continue; /* 将文件名与扩展名分开。由于.是正则表达式特殊字符,应该用\引 */ list($filenm, $fileext) = split("\.",$entry, 2); // 忽略非.php3文件情况 if( $fileext != "php3" ) continue; /* 现在我们已经把.php3文件都选,下面搜寻文件中的第一行(标题) 类似$title="something"; 并将以上标题内容分开,用作链接文字 */ $linknm = ""; $fp=fopen($entry,"r"); while($buffer=fgets($fp, 4096)) { $buffer = trim($buffer); // 我们已经把每个文件的标题放在文件的第一行以便搜索 // 但是当你改变变量名称时可能会带来大麻烦 if (ereg("title *= *\"", $buffer)) { /* 我们已经取得了标题内容并可以在此基础上 进行去除空格等处理。 必须以PHP代码方式处理,比如$title = "blah blah" */ eval($buffer); // 然后将链接文字显示为标题文字 $linknm = $title; break; } } fclose($fp); if ( $entry == basename($PHP_SELF) ) echo "$linknm"; else echo "$linknm"; echo " | "; } $d->close(); echo " \n"; ?> 照片收藏夹 我们将引用基于HTTP的验证、文件系统函数和文件上传功能维护放置图像文件的目录。 同时我们需要建立一个可以列在该目录下所有照片的页面。 文件上传 <? include("include/common.inc"); // 我们在这里再做一次用户验证 if(!isset($PHP_AUTH_USER)) { Header("WWW-Authenticate: Basic realm=\"$MySiteName\""); Header("HTTP/1.0 401 Unauthorized"); echo "Sorry, you are not authorized to upload files\n"; exit; } else { if ( !($PHP_AUTH_USER==$MyName && $PHP_AUTH_PW==$MyPassword ) ) { // 如果是错误的用户名称/密码对,强制再次认证 Header("WWW-Authenticate: Basic realm=\"My Realm\""); Header("HTTP/1.0 401 Unauthorized"); echo "ERROR : $PHP_AUTH_USER/$PHP_AUTH_PW is invalid."; exit; } } if ( $cancelit ) { // 当浏览者按下"取消"按钮则转向首页面 header ( "Location: front_2.php3" ); exit; } function do_upload () { global $userfile, $userfile_size, $userfile_name, $userfile_type; global $local_file, $error_msg; global $HTTP_REFERER; if ( $userfile == "none" ) { $error_msg = "You did not specify a file for uploading."; return; } if ( $userfile_size > 2000000 ) { $error_msg = "Sorry, your file is too large."; return; } // Wherever you have write permission below... $upload_dir = "photos"; $local_file = "$upload_dir/$userfile_name"; if ( file_exists ( $local_file ) ) { $error_msg = "Sorry, a file with that name already exists"; return; }; // 你还可以由此检查文件名称/类型对以确定是何种文件:gif,jpg,mp3… rename($userfile, $local_file); echo "The file is uploaded\n"; echo "Go Back\n"; } $title = "Upload File"; include("include/header.inc"); if (empty($userfile) || $userfile=="none") { // 输以下表单 ?> <FORM ACTION="" ENCTYPE="multipart/form-data" METHOD=POST> (You may notice a slight delay while we upload your file.) <? } else { if ( $error_msg ) { echo "$error_msg"; } if ( $sendit ) { do_upload (); } } include("include/footer.inc"); ?> 照片图库 Here are some of our family photos. This PHP script can really be made better, by splitting into multiple pages. read()) { if (is_file("photos/$entry")) echo "\n"; } $d->close(); ?> 另外,你可以在文件上传的表单中加上一个输元素去描述该上传的文件。这个元素将被存储在文件中,然后被以上的照片图库的那段代码所读并显示来。 六、网络资源 你可以通过web上的众多资源更多的了解PHP3。许多邮件列表和书籍对你都非常有用。 6.1 站点 PHP的爆炸性流行使得一夜之间现了很多基于PHP的站点,其中不少站点有在线教程、范例代码、技巧和提示等内容。 国内 http://www.phpuser.com - PHP中文用户,也就是这里了 http://www.phpx.com - 中国PHP联盟 http://www.phpsite.net - PHP专门站 http://www.phpchina.com - PHP CHINA http://www.cpcw.com/netschool/homepage/cgi/ - 电脑报网页陶吧 国外 http://www.php.net/ - PHP官方站点 http://www.devshed.com/ - 极好的教程 http://px.sklar.com - 代码交换 http://www.phpbuilder.com/ - 教程、专栏和邮件列表档案 http://www.weberdev.com/ - 文章和代码 http://www.phpwizard.net/ - 提示与技巧 http://www.iometrics.com/php/phplist.php3/ - IOMetrics scripts的档案 http://www.e-gineer.com/phpkb/ - PHP知识库 6.2 邮件列表 你可以在PHP官方站点的"支持"栏目内登记获得以下的邮件列表。得注意的是这些都是高流量流表,一般每天会有100份e-mail。 php3@lists.php.net - 主要的列表 php-dev@lists.php.net - 主要针对开发者 php-list@exp.com.cn - 本站的邮件列表,与论坛相通 6.3 引人注目的工程 一些基于PHP的工程已经发展得比较完善。其中一些更色更引人注目的是: http:// phplib.netuse.de - PHPLib,一整套PHP函数库 http://www.phorum.org - Phorum是一个很完善的BBS系统 http://www.fishcartsql.org - FishCartSQL是一个电子商务解决方案 http://www.midgard-project.org - Midgard是一个网络应用开发平台 Generated by Bo-blog 2.0.2 sp2

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值