




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、 Oracle8i数据库根底 (初稿) 赵元杰 2001年12月7日 前 言 本讲稿(ORACLE8i 数据库根底)是作者在多年的工作和授课中的总结,主要包括两个局部,第一局部是ORACLE SQL*PLUS根底,主要讲述ORACLE 应用系统设计的根本知识和给出一些有用的实例;第二局部是介绍ORACLE PL/SQL知识,主要讲述ORACLE数据库PL/SQL程序设计所用到根本知识,这局部给出进行应用设计所必需的根底知识。这两局部的内容都尽可能做到内容简洁而全面。特点是,1.用简单明了的语句对解释各个局部的内容,省去一些理论性的解释;2.给出作者在应用设计和开发中的一些具体的例子,为软件人员
2、提供一些借鉴,省去查阅大量资料的时间。3.给出了许多资料所没有提供的一些使用技巧,如导出触发器等。总之,内容根本上包括当前Oracle8I的最新内容。同时也覆盖了最新的ORACLE8i OCP培训大纲的内容。不仅包含ORACLE 程序设计人员、DBA所必须掌握的知识,而且还含盖了系统分析员所要求的内容。与本书讲稿相伴的还有?Oracle8I初级管理员?和?Oracle8I高级管理员?。 全书内容简练实用,可作为ORACLE 数据库管理人员参考,也可作为应用开发人员和系统分析与设计人员以及大学计算机专业教学的参考资料。由于作者水平所限,加之ORACLE的产品与内容的浩瀚,在资料的整理与收集中可能
3、有不少错误和不妥之处,希望读者给予批评制正。 目 录第一局部 Oracle SQL*PLUS根底21第一章 Oracle数据库根底211.1 理解关系数据库系统RDBMS211.1.1 关系模型211.1.2 Codd十二法那么221.2 关系数据库系统RDBMS的组成221.2.1 RDBMS 内核221.2.2 数据字典概念221.3 SQL、SQL*Plus及 PL/SQL231.3.1 SQL和SQL*PLUS的差异231.3.2 PL/SQL语言251.4 登录到SQL*PLUS251.4.1 UNIX环境251.4.2 Windows NT和WINDOWS/2000环境271.5
4、常用SQL*PLUS 附加命令简介301.5.1 等录到SQL*PLUS301.5.2 EXIT和QUIT301.5.3 DESCRIBE(显示表、视图结构)311.5.4 LIST命令311.5.5 Change改变字符串命令321.5.6 Append 在末尾追加字符串命令321.5.7 Save保存当前缓冲区命令到文件331.5.8 GET将命令文件读到缓冲区331.5.9 SPOOL将信息记录到文件中341.5.10 在运行当前缓冲区的命令341.6 常用数据字典简介351.7 ORACLE数据类型361.8 SQL 语句根底421.8.1 SQL语句所用符号421.8.2 简单sel
5、ect 查询431.9 伪列及伪表441.10 使用SQL Worksheet工作44第二章 查询根底482.1 SELECT语句482.2 SQL中的单记录函数482.2.1 单记录字符函数482.2.2 单记录数字函数542.2.3 单记录日期函数602.2.4 单记录转换函数632.2.5 其它的单记录函数662.3 SQL中的组函数712.3.1 多记录组函数712.3.2 带 GROUP BY 的计算732.3.3 用 HAVING 来限制分组的计算732.4 控制和格式化输出742.4.1 用 ORDER BY 子句来对结果进行排序742.4.2 用 BREAK 命令 来对结果进行
6、排列742.4.3 用 COMPUTE 命令对结果进行格式化772.5 配置会话环境802.5.1 ARRAYSIZE取回的行数802.5.2 AUTOCOMMIT(自动提交)812.5.3 LINESIZE(行显示宽度)812.5.4 LONG(长类型显示字节数)812.5.5 PAGESIZE(页行数)812.5.6 PAUSE(暂停)822.5.7 SPACE(列间空格)822.5.8 Termout (启/停屏幕显示)822.5.9 ECHO (启/停命令显示)822.5.10 TRANSACTION (启动事务)832.6 格式化输出832.6.1 一般数据的格式化输出832.6.2
7、 日期的格式化输出842.7 加标题852.8 建立简单报告86第三章 表及索引的定义操作873.1 建立表结构873.1.1 建立表结构命令873.1.2 建立表结构例子893.3 修改表结构903.3.1 修改表结构命令903.3.2 修改表结构例子913.3.3 删除表结构933.3.4 使用CHECK作限制约束933.3.5 使用UNRECOVERABLE创立表943.3.6 将表移动到新的数据段或新的表空间943.3.7 手工分配表的存储空间963.3.8 标记不使用的列和删除不使用的列963.3 主键983.3.1 创立主键983.3.2 改变主键1003.3.3 删除主键1013
8、.4 外部键1013.4.1 建立外部键1023.4.2 修改外部键1033.4.3 删除外部键1043.5 索引*1043.5.1 建立索引1043.5.2 修改索引1053.5.3 删除索引1063.6 新索引类型1073.6.1 基于函数的索引1073.6.2 反向键索引1083.6.3 索引组织表Index_Organized Table1093.7 抽象数据类型的使用1093.8 大数据类型的使用1103.8.1 可用数据类型1103.8.2 为LOB数据类型指定存储1113.8.3 操作和检索LOB数据112第四章 视图、同义词和序列1164.1 视图1164.1.1 使用视图来修
9、改表中数据1164.1.2 创立一个新视图1164.1.3 删除一个视图1174.1.4 改变视图1184.2 实体视图(MATERIALIZED VIEW)1194.2.1 创立实体视图1194.2.2 创立实体视图日志1244.2.3 修改实体视图1264.2.4 修改实体视图日志1284.3 序号(sequence)1284.3.1 建立序号1284.3.2 修改序号1294.3.3 使用序号1304.3.4 删除序号1304.4 同义词1304.4.1 建立同义词1304.4.2 删除同义词131第五章 簇与分区1335.1 簇( cluster )1335.1.0 簇概念1335.1
10、.1 建立簇1345.1.2 改变簇1375.1.3 删除簇1375.1.4 删除簇索引1385.1.5 收集簇信息1385.2 分区1395.2.1 ORACLE8 分区的优点1395.2.2 分区的方法1405.2.3 创立表的分区1405.2.3 创立索引的分区1455.2.4 维护表分区和索引分区148第六章 使用SQL 进行数据操作1496.1 INSERT操作1496.1.1 用文字插入操作1506.1.2 用子查询插入操作1506.2 UPDATE操作1516.2.1 用文字更新操作1526.2.2 用查询更新操作1526.2.3 用相关子查询更新操作1536.3 DETELE操
11、作1536.3.1 用delete删除全部记录的操作1536.3.2 用delete有条件删除局部记录1546.3.3 用delete分段删除大量记录1546.4 insert、delete及update 的提交和撤消1556.4.1 自动提交的设置1556.4.2 保存点和撤消156第七章 复杂查询语句的使用1597.1 复杂查询语句的使用1597.1.1 相关子查询1597.1.2 外连接1597.1.3 UNION,INTERSECT及MINUS1607.2 用SQL*PLUS建立简单报表1617.3 创立复杂的视图1627.3.1 分组视图1637.3.2 合计视图1637.3.3 组
12、合视图1637.4 家族树1647.4.1 排除单一体和分枝1647.4.2 编历至根1657.5 在from 中使用视图166第八章 一些高级的用法*1688.1 关于DECODE1688.1.1 DECODE 中的if-then-else逻辑1688.1.2 DECODE 的简单例子*1688.1.3 DECODE实现表的转置1688.2 关于访问远程数据库1718.2.1 数据库链接1728.2.2 使用同义词获得本地透明1738.2.3 在视图中使用user伪列1738.2.4 使用COPY功能1758.2.5 管理Oracle名称效劳器1768.3 关于上下文的使用*1768.3.1
13、 设置上下文选项1768.3.2 为上下文查询设置表1778.3.3 优化文本索引179第九章 平安管理1809.1 CREATE USER 命令1809.2 建立用户1819.2.1 外部验证Authenticated 用户1819.2.2 全局(Globally)验证用户-企业验证1819.3 ALTER USER 命令1829.4 DROP USER 命令1829.5 GRANT 命令与REVOKE 命令1839.5.1 GRANT 命令1839.5.2 REVOKE 命令1839.6 权限和角色1849.6.1 建立角色1849.6.2 给角色授权1859.6.3 授权角色给用户186
14、9.7 有关的数据字典186第十章 其它一些常见问题及技巧18710.1 其它一些问题18710.1.1 Oracle与2000年问题18710.1.2 在查询中只需返回满足条件的局部记录18810.1.3 快速大量删除数据Truncate18810.1.4 Rowid的使用18810.1.5 在查询中不让记录被更新18910.1.6 EXCEPTIONS违反完整性问题18910.1.7 Not in和Not Exists19010.1.8 Set语句19010.1.9 关于 COPY命令19110.1.10 使用 product_user_file来限制用户使用产品19210.2 常用技巧1
15、9310.2.1 long 类型的查询19310.2.2 如何确定执行时间19310.2.3 如何终止用户会话19410.2.4 用TRANSLATE对数据加密和解密19510.2.5 如何用查询来修改数据19710.2.6 如何产生创立用户的脚本19710.2.7 如何产生创立表结构的脚本19810.2.8 如何产生创立视图的脚本20010.2.9 如何产生创立序号的脚本200第二局部 Oracle PL/SQL根底202第十一章 PL/SQL 程序设计简介20211.1 概述20211.2 SQL与PL/SQL20211.2.1 什么是PL/SQL?20211.2.1 PL/SQL的好处2
16、0311.2.1.1 有利于客户/效劳器环境应用的运行20311.2.1.2 适合于客户环境20311.2.1.3 客户及效劳器端的好处20311.2.2 PL/SQL 可用的SQL语句20411.3 运行PL/SQL程序20411.4 PL/SQL内置包205第十二章PL/SQL 块结构和组成元素20612.1 PL/SQL结构20612.2 PL/SQL块20712.3 标识符20712.4 PL/SQL 变量类型20812.4.1 变量类型20812.4.2 复合类型记录和表20912.4.2.1 记录类型20912.4.3 使用%ROWTYPE21112.4.4 LOB类型*21112
17、.4.5 用户定义的子类型21212.4.6 数据类型的转换*21412.5 运算符和表达式(数据定义)21412.5.1 关系运算符21412.5.2 一般运算符21512.5.3 逻辑运算符21512.6 变量赋值21612.6.1 字符及数字运算特点21612.6.2 Boolean 赋值21612.6.3 数据库赋值21712.6.4 可转换的类型赋值21712.7 变量作用范围以可见性21912.8 注释21912.9 简单例子22012.9.1 简单数据插入例子22012.9.2 简单数据删除例子221第十三章PL/SQL 处理流程22113.1 条件语句22113.2 循环222
18、13.3 标号和GOTO22513.4 NULL 语句226第十四章 光标的使用22614.1 光标概念22614.1.1 处理显式光标22714.1.2 处理隐式光标22814.2 光标循环22914.2.1 简单循环22914.2.2 WHILE循环23014.2.3 光标 FOR 循环23114.2.4 关于NO_DATA_FOUND和%NOTFOUND23114.2.5 SELECT FOR UPDATE 光标23214.3 光标变量23314.3.1 声明光标变量23314.3.2 为光标变量分配存储空间23314.3.3 翻开光标变量23314.3.4 关闭光标变量23414.3.
19、5 光标变量例子23414.3.6 光标变量236第十五章 错误处理23815.1 异常处理概念23815.1.1 预定义的异常处理23915.1.2 触发异常情态23915.1.3 处理异常情态24015.1.4 用户定义的异常处理24115.2 异常情态传播24315.2.1 在执行局部引发异常情态24315.2.2 在声明局部引发异常情态24315.3 异常处理编程24415.4 在 PL/SQL 中使用 sqlcode,sqlerrm245第十六章 存储过程和函数24716.1 引言24716.2 存储过程24716.2.1 创立过程24716.2.2 使用过程+24816.2.3 开
20、存储过程步骤24916.2.3.1 编辑存储过程源码+25016.2.3.2 对存储过程程序进行解释+25016.2.3.3 调试源码直到正确+25016.2.3.4 授权执行权给相关的用户或角色+25016.2.4 与过程相关数据字典+25116.3 创立函数25116.4 过程和函数中的例外处理25316.4.1 使用系统定义的例外处理25316.4.1.1 没有例外处理的缺点25316.4.1.2 使用预定义的例外处理25316.4.2 使用用户定义的例外处理+25616.4.2.1 定义的用户例外处理25616.4.2.2 使用户EXCEPTION_INIT处理25716.4.2.3
21、使用户raise_application_error处理257第十七章 创立包和使用包25817.1 引言25817.2 包的定义25817.3 包的开发步骤25917.4 包的头部说明26017.5 包体的说明26017.6 删除过程、函数和包27217.7 包的管理27317.7.1 包有关的数据字典27317.7.2 包中无效对象的查询和编译27417.7.3 包源代码的导出275第十八章 触发器27618.1 触发器类型27618.1.1 DML触发器27618.1.2 替代触发器27618.1.3 系统触发器27618.2 创立触发器27718.2.1 创立DML触发器27718.2
22、.2 创立替代(Instead_of)触发器27818.2.3 创立系统触发器27918.2.4 触发器触发次序28118.2.5 使用触发器谓词28118.3 删除和使能触发器28218.4 变异表*28218.3.1 变异表典型例子28318.3.2 变异表错误的处理28518.5 触发器数据字典与管理28618.5.1 触发器数据字典28618.5.2 无效触发器的编译287第十九章 外部存储过程28919.1 什么是外部例程28919.2 C外部例程28919.2.1 调用步骤29019.2.2 参数映射( 转换)29519.3 JAVA外部例程297第二十章 会话间通信29820.1
23、 DBMS_PIPE29820.1.1 发送消息30220.1.2 接收消息30320.1.3 例如30420.2 DBMS_ALTER31920.3 比拟DBMS_PIPE 和 DBMS_ALTER321第二十一章 数据库作业和文件I/O32221.1 数据库作业322后台进程322运行作业322失效作业324删除作业325修改作业参数326与作业参数有关数据字典32821.2 文件I/O32921.2.1 平安性32921.2.2 翻开和关闭文件329文件输出331文件输入332文件操作例子333第二十二章 在PL/SQL 使用SQL语句33322.1在PL/SQL 使用DML语句3332
24、2.2 伪列33522.3 grant,revoke 和权限33622.3.1 对象和系统权限33622.3.2 GRANT和REVOKE33722.4 事务控制33722.4.1 COMMIT 和 ROLLBACK33722.4.2 保存点 SAVEPOINT33822.5 在PL/SQL中使用SQL函数33922.5.1 错误处理函数34022.5.2 数字函数340第二十三章 PL/SQL程序的测试和调试34123.1 问题诊断34123.1.1 调试指南34123.1.2 显示在编译产生的错误34123.2 插入测试表34223.3 DBMS_OUTPUT的使用34223.4 PL/S
25、QL调试器34323.4.1 Procedure Builder调试器*34423.4.2 SQL-Station调试器34423.5 程序设计方法34423.5.1 模块化程序设计344自顶向下设计34423.5.3 数据抽象345第二十四章 性能及其它问题34624.1共享池34624.1.1 共享池工作原理34624.1.2 估计共享池大小34724.1.3 将PL/SQL 驻留在共享池中34824.2 SQL 语句调整34924.3 网络问题35224.4 在PL/SQL中查询单条记录35224.5 PL/SQL wrap(转换器)35324.5.1 运行 wrap实用程序35324.
26、5.2 输入和输出文件35324.6 DBMS_OUTPUT的使用354第二十五章 对象类型35625.1 对象类型定义*35625.1.1 定义对象类型头*35625.1.2 定义对象类型体*35625.1.3 定义对象类型例子35725.1.4 初始化对象类型35825.1.5 使用对象类型35925.2 对象类型修改*36025.3 对象类型删除*361第二十六章 动态PL/SQL简介36326.1 概述36326.1.1 静态和动态SQL36326.1.2 DBMS_SQL 概述36326.2 执行非DML 和DDL语句36526.2.1 翻开光标36526.2.2 分析语句36526
27、.2.3 联编输入变量366执行语句368关闭光标368例如368执行DDL 语句36926.3 执行 PL/SQL *37126.4使用 PL/SQL : 执行任意内置过程*37126.5 PL/SQL 8.0 功能37126.5.1 分析大型SQL串*37226.6 将 LONG 写入 FILE 文件中*37226.7 权限和 DBMS_SQL *372第二十七章 大型对象和DBMS_LOB包-37227.1 LOB类型一般使用37227.1.1 LOB类型存储37227.1.2 临时LOB类型37327.1.3 LOB类型的接口373第二十八章 PL/SQL包-374附录A:SQL及SQ
28、L*PLUS 命令参考374%FOUND374%ISOPEN375%NOTFOUND376%ROWCOUNT376%ROWTYPE377%TYPE378(+)379 (“at sign)379379ABS380ACCEPT380ACOS381ADD_MONTHS381ALTER CLUSTER382ALTER DATABASE382ALTER FUNCTION383ALTER INDEX384ALTER PACKAGE384ALTER PROCEDURE385ALTER PROFILE385ALTER RESOURCE COST386ALTER ROLE387ALTER ROLLBACK SE
29、GMENT387ALTER SEQUENCE387ALTER SESSION388ALTER SNAPSHOT389ALTER SNAPSHOT LOG390ALTER SYSTEM390ALTER TABLE391ALTER TABLESPACE392ALTER TRIGGER392ALTER TYPE393ALTER USER394ALTER VIEW395ANALYZE395APPEND396ASCII396ASIN397ATAN397ATAN2398AUDIT398AVG399BFILENAME399BLOCK400BTITLE401CEIL402CHANGE403CHARTOROWI
30、D403CHR404CLEAR404CLOSE405COLUMN405COMMENT406COMMIT407COMPUTE407CONCAT408CONCATENATE408CONNECT BY409CONVERT409COPY410COS411COSH411COUNT412CREATE CLUSTER412CREATE CONTROLFILE413CREATE DATABASE414CREATE DATABASE LINK415CREATE PROFILE415CREATE DIRECTORY416CREATE FUNCTION416CREATE INDEX417CREATE LIBRARY
31、418CREATE PACKAGE418CREATE PACKAGE BODY419CREATE PROCEDURE421CREATE ROLE422CREATE ROLLBACK SEGMENT422CREATE SCHEMA423CREATE SEQUENCE424CREATE SNAPSHOT424CREATE SNAPSHOT LOG425CREATE SYNONYM426CREATE TABLE426CREATE TABLESPACE428CREATE TRIGGER429CREATE TYPE430CREATE TYPE BODY431CREATE USER431CREATE VI
32、EW432CURRVAL433CURSOR_ALREADY_OPEN433DATATYPE434DATATYPE CHAR434DATATYPE DATE435DATATYPE FLOAT435DATATYPE LONG435DATATYPE LONGRAW436DATATYPE MLSLABEL436DATATYPE NUMBER436DATATYPE RAW437DATATYPE ROWID437DATATYPE VARCHAR437DATATYPE VARCHAR2437DECLARE438DECODE438DEFINE439DEL439DELETE440DEREF441DESCRIBE
33、441DROP CLUSTER442DROP DATABASE LINK442DROP DIRECTORY443DROP FUNCTION443DROP INDEX443DROP LIBRARY444DROP PACKAGE444DROP PROCEDURE445DROP PROFILE445DROP ROLE446DROP ROLLBACK SEGMENT446DROP SEQUENCE447DROP SNAPSHOT447DROP SNAPSHOT LOG447DROP SYNONYM448DROP TABLE448DROP TABLESPACE449DROP TRIGGER449DROP
34、 TYPE450DROP TYPE BODY450DROP USER451DROP VIEW451DUMP452DUP_VAL_ON_INDEX452EDIT453EMPTY_BLOB453EMPTY_CLOB454EXCEPTION INIT Pragma454EXECUTE455EXISTS455EXIT456EXIT457EXIT-WHEN457EXP458EXPLAIN PLAN458FETCH459FLOOR460FOR-LOOP460FORMAT461FORMAT DATE461FORMAT NUMBER462GET462GLB463GOTO463GRANT464GREATEST4
35、65GREATEST_LB465HEXTORAW466HOST466IF-THEN467IF-THEN-ELSE467IF-THEN-ELSEIF468INITCAP469INPUT469INSERT470INSTR470INSTRB471INTERSECT472INVALID_CURSOR472INVALID_NUMBER473KEYWORDS474LABELS475LAST_DAY476LEAST476LEAST_LB477LENGTH477LENGTHB477LIKE478LIST479LN480LOCK TABLE480LOG481LOGIN_DENIED481LOOP482LOWER
36、483LPAD483LTRIM484LUB484MAKE_REF485MAX485MIN486MINUS486MOD487MONTHS_BETWEEN487NEW_TIME488NEXT_DAY489NEXTVAL489NLS_CHARSET_DECL_LEN490NLS_CHARSET_ID490NLS_CHARSET_NAME491NLS_INITCAP491NLS_LOWER492NLS_UPPER492NO_DATA_FOUND493NOAUDIT494NOT_LOGGED_ON494NULL495NVL496OPEN496OPEN-FOR497OPERATOR497OPERATOR
37、498OPERATOR498OPERATOR =499OPERATOR! =499OPERATOR*500OPERATOR+501OPERATOR-*501OPERATOR/502OPERATOR下发 set pause on 命令。由于SQL*PLUS命令较多,下面仅给出最常用的几个命令的说明,详细的请参考附录。1.5.1 等录到SQL*PLUS可以用下面命令登录退出SQL*PLUS,SQL*PLUS命令的简单语法如下:SQLPLUS logon | start logon可以是:username/passwordconnect_identifier|/ AS SYSOPER|SYSDBA|
38、/NOLOG注1:SQLPLUS 主要是在命令方式下使用,在NT、WINDOWS/2000、UNIX的用法都一样。注2:如果在UNIX下,SQLPLUS命令不被识别不存在,那么问题在环境变量PATH没有设置正确或者没有设置。SQLPLUS 可执行程序在$ORACLE_HOME/bin 目录下。1.5.2 EXIT和QUIT 可以用 exit 或quit 来终止SQL*PLUS的操作会话。语法如下:EXIT|QUIT SUCCESS|FAILURE|WARNING EXIT|QUIT 可以用exit 或quit ,目前它们的功能一样。SUCCESS 正常退出FAILURE 带提示错误代码的退出W
39、ARNING 带提示警告代码的退出COMMIT 退出前将未提交进行保存例如:SQLexit1.5.3 DESCRIBE(显示表、视图结构) DESCRIBE可以用(只要用DESC即可)来显示表、视图的列的定义,也可以显示同义词、函数或存储过程的说明。语法如下:DESCRIBE schema.objectconnect_identifierSchema:用户名,如果省去,那么为对象的所有者。object可以是 表table, 视图view,类型 type, 存储过程procedure,函数 function, 包package或同义词 synonymconnect_identifier数据库连接
40、字串例:显示emp 表的结构:SQLdesc emp1.5.4 LIST命令 可以用 LIST 命令来列出当前SQL缓冲区中的一行或多行命令语句。 LIST n|n m|n *|n LAST|*|* n|* LAST|LASTn 列出第n行n m 列出n到m行n * 列出第n行到当前行n LAST 列出第n行到最末行* 列出所有行* n 列出当前行到第n行* LAST列出当前行到最末行LAST 列出最末行例:SQL LIST1 SELECT ENAME, DEPTNO, JOB2 FROM EMP3 WHERE JOB = CLERK4* ORDER BY DEPTNO1.5.5 Change
41、改变字符串命令 可以用Change命令来改变字符串即替换字符串。语法如下:CHANGE sepchar old sepchar new sepcharSepchar 为分隔符,可以是/ 或! - 请使用者特别注意Old 旧字串New 新字串例:将 除号(/)改为 乘号 * ,那么需要命令为c !/!*!。即:SQL l 1* select sal,sal/100 from empSQL c !/!*!提醒:对于修改 / 字符的只能用 ! 来作分隔符(上例)。例:将乘号 * 改为 加号 + ,那么需要命令为c !/!*!。即:SQL l 1* select sal,sal*100 from em
42、pSQL c/*/+/ 1* select sal,sal+100 from empSQL1.5.6 Append 在末尾追加字符串命令 可以用 Append命令来完成在当前行的末尾追加字符串。语法如下:APPEND textText 所要求追加的字符串例:在当前行select sal,sal+100 from emp 后加 where sal=2000,那么:SQL l 1* select sal,sal+100 from empSQL a where sal=2000 1* select sal,sal+100 from emp where sal=2000SQL1.5.7 Save保存当
43、前缓冲区命令到文件可以用SAVE命令将当前的命令行保存到操作系统的文件中。语法如下:SAVE filename.ext CREATE|REPLACE|APPEND其中:filename:你将把缓冲区中的内容存入到操作系统目录的文件名。ext:假设使用文件后缀,缺省的文件后缀为SQL。例:SQLselect table_name from dict where table_name like %ROLE%;SQLsave c:get_role1.5.8 GET将命令文件读到缓冲区可以用GET 命令将操作系统的目录下的命令文件读到缓冲区但不执行。语法如下:GET filename .ext LIS
44、T|NOLIST其中:filename: 希望加载到SQL缓冲区的文件名ext: 文件的扩展名,缺省为 SQL.例:SQLget c:get_role1.5.9 SPOOL将信息记录到文件中Oracle的SPOOL 命令可以实现将屏幕所出现的一切信息记录到操作系统的文件中直到SPOOL OFF为止。语法如下:SPOOL filename.ext | OFF | OUT其中:filename:你想输出spool的文件名。ext:文件的后缀。缺省的后缀是LST或LIS。SQLcol table_name for a20SQLcol cimmnets for a80SQLset linesize 1
45、10SQLSPOOl c:all_dictSQLselect table_name,commnets from dict; . . . . . . (系统查询信息)SQLSPOOL OFF1.5.10 在运行当前缓冲区的命令在SQL方式下,如果希望在运行当前的命令,可用Run(或R)或用 / 来实现,如:SQL set lin 120SQL select table_name from dict where table_name like %ROLE%;TABLE_NAME-DBA_ROLESDBA_ROLE_PRIVSUSER_ROLE_PRIVSROLE_ROLE_PRIVSROLE_SY
46、S_PRIVSROLE_TAB_PRIVSSESSION_ROLES已选择7行。SQL l 1* select table_name from dict where table_name like %ROLE%SQL /TABLE_NAME-DBA_ROLESDBA_ROLE_PRIVSUSER_ROLE_PRIVSROLE_ROLE_PRIVSROLE_SYS_PRIVSROLE_TAB_PRIVSSESSION_ROLES已选择7行。1.6 常用数据字典简介ORACLE 提供许多内部数据字典, 用以管理系统的各种信息和参数即数据库对象,下面列出几个常用的数据字典供初学者参考,其它方面的数据
47、字典将在DBA管理中介绍。ORACLE 数据字典的命名说明:USER 为前缀-记录用户的所有对象信息ALL 为前缀-记录包括 USER 记录和授权给PUBLIC 或该用 户的所有对象的信息。DBA 为前缀-记录关于数据库对象非用户对象的信息。V$ 公共系统动态视图,用于系统优化和调整参考.V_$ 动态性能视图你可用 CATALOG.SQL 建立动态视图建立同义词。GV$ 新(oracle 8)的附加的固定视图(Global V$).在并行环境下反响的是 V$视图的信息。如:SELECT * FROM GV$LOCK WHERE INST_ID = 2 OR INST_ID = 5 ;返回的是i
48、nstances 2 和5的V$的信息。所以GV$反响一组Instances的参数. GV$视图的限制是参数PARALLEL_MAX_SERVERS必须大于0 。详见 Oracle Enterprise Manager Administrators Guide. 注:请注意下面的总结:l 一般DBA_ 的视图内容都包含USER_和ALL_为前缀的视图;l DBA_为前缀的视图的内容根本上是大写;l 以V$_为前缀的视图的内容根本上是小写。1. USER_TABLEs(=TABS) 用户的所有表的信息。2USER_TAB_COLUMNS=COLS 有关各表的列字段的信息3USER_VIEWS 用
49、户的所有视图4USER_SYNONYMS=SYN 用户同义词5USER_SEQUENCES(=SEQ) 用户序列6USER_CONSTRAINTS 记录在数据库时常用于检查数据有何限制。7USER_TAB_COMMENTS 表的注释。如: Comment on table emp is 职工表;8 USER_COL_COMMENTS 列字段注释。如: Comment on column emp.ename is 姓名;9 USER_INDEXES(=IND) 用户索引的简要信息10 USER_IND_COLUMNS 用户索引的列信息11 USER_TRIGGERS 用户触发器信息12 USER
50、_SOURCE 用户存储过程13 USER_TABLESPACE 用户可以使用的表空间信息14 USER_TS_QUOTAS 用户使用系统资源的信息15 USER_SEGMENTS 用户对象所使用空间信息16 USER_EXTENTS 用户的扩展段信息17 USER_OBJECTS 用户对象=USER_TABLES+USER_VIEWS+USER_INDEXES+ USER_SOURCE+USER_TRIGGERS18 USER_PART_TABLES 用户分区信息19 USER_TAB_PARTITIONS20 USER_PART_COL_STATISTICS21 USER_IND_PART
51、ITIONS22 USER_FREE_SPACE23 CAT(=USER_CATALOG) 用户可以访问的所有的基表。24 TAB 用户创立的所有基表,视图,同义词等。25 DICT=DICTIONARY 构成数据字典的所有表的信息。提示:虽然Oracle提供可以用Comment on column tablename.column is xxxx; 等来实现对表或列进行注释,但不建议设计者采用这样的工作方式。而建议将注释写到脚本中更为直观。1.7 ORACLE数据类型Oracle数据库的数据类型与其它的数据库系统相比,它的数据类型不多,Oracle在表示数据方面比其他数据库系统来说要省去许多
52、关键字。Oracle只用NUMBER(m,n)就可以表示任何负责和精度的数据。其它如日期类型等也简单得多,只DATE就表示日期和时间。下面以列表形式给出各个版本的Oracle系统数据类型的表示方法。下面给出Oracle旧版本的数据类型的目的是让读者了解Oracle的变化,另外就是你在对旧版本进行升级或数据转换时要注意各个版本的差异。ORACLE5、ORACLE6数据类型数据类型说明Char可变长字符型,254Varchar2可变长字符型,2000Number(m,n)数字类型,含整数、小数等Date日期型,含时间,缺省格式为mmm-dd-yyyy hh:mi:ss占7字节Long存储大型可变长
53、字符串,2GBRaw存储短二进制串,2GBLong raw存储长二进制串,2GB ORACLE7数据类型数据类型说明Char定长字符,255个字符Varchar变长字符,2000个字符Varchar2变长字符,2000个字符Number(m,n)数字类型,含整数、浮点、双精度等Long存储大型可变长字符串,2GBRaw存储可变短二进制数,2000Long raw存储大型可变长二进制数,2GB ORACLE8/8i 数据类型数据类型说明Char定长字符,2000个字符Varchar同Varchar2可变字符,2000个字符Varchar2变长字符,2000个字符Date固定长度7字节的日期型Nu
54、mber数字型,可存放实型和整型Long可变字符,2GB个字符Raw可变二进制数据,4000字节Long raw可变二进制数据,2GBMLSLABEL仅Trusted Oracle 用长度在25字节间Blob大二进制对象,4GBClob大字符串对象,4GBNclob多字节字符集的Clob,4GBBfile外部二进制文件,大小由OS决定CHAR()定长字符型在Oracle5 、Oracle6 是变长,字符长度不够自动在右边加空格符号。当字符长度超出2000个那么错误。不指定大小缺省为 1。VARCHAR()可变字符型,当前与VARCHAR2()相同。VARCHAR2()可变字符型,当前与VARC
55、HAR()相同。VARCHAR2 类型的字段列可存放4000个字符;但是VARCHAR2 变量可以存放32,767 个字符。大小必须指定。NCHAR()和NVARCHAR2()NCHAR 和NVARCHAR2 分别与 CHAR和VARCHAR2 有相同的大小。并用于于存放 National Language Support (NLS)数据,Oracle 允许以本地语言存放数据和查询数据。如果将列名声明成NCHAR、NVARCHAR2这样的类型,那么insert和 select 等语句中的具体值前加N,不能直接按照普通字符类型进行操作。看下面例子:SQL create table nchar_t
56、st(name nchar(6),addr nvarchar2(16),sal number(9,2);表已创立。SQL insert into nchar_tst values(N赵元杰,N北京市海淀区,9999.99);已创立 1 行。SQL select * from nchar_tst where name like N赵%;NAME ADDR SAL- - -赵元杰 北京市海淀区 9999.99SQL select * from nchar_tst where name like 赵%;select * from nchar_tst where name like 赵% *ERROR
57、 位于第 1 行:ORA-12704: 字符集不匹配.提示:虽然Oracle可以使用nchar, nvarchar2 类型来存放字符数据,但建议设计者不要使用NCHAR和NVARCHAR2。因为CHAR和VARCHAR2就能存放汉字。NUMBER(,) 是数据的整数,是数据的精度即小数局部,注意,局部可以表示负的精度。用可以表示从小数点往右或往左保存多少位。如下表:实际值数据类型存储值1234567.89Number1234567.891234567.89Number(8)12345681234567.89Number(6)出错1234567.89Number(9,1)1234567.9123
58、4567.89Number(9,3)出错1234567.89Number(7,2)出错1234567.89Number(5,-2)12346001234511.89Number(5,-2)12345001234567.89Number(5,-4)12300001234567.89Number(*,1)1234567.9Sal number(7,2), -表示5位整数,2位小数.DATEOracle 的日期型用7个字节表示,每个日期型包含如下内容:l Centuryl Yearl Monthl Dayl Hourl Minutel Second日期型字段有下面特点:l 日期型字段的插入和更新可以
59、数据型或字符并带to_date 函数说明即可。l 缺省的日期格式有NLS_DATE_FORMAT参数控制,它的缺省格式为DD-MON-YY。l 缺省的时间是夜里 00:00:00 (即0点 0分0秒)。l sysdate返回的是效劳器的时间,见下面例子。l 日期格式的显示可以设置,见下面例子。l 日期型可以运算,见下面例子。见下面例子。l 世纪用cc 表示;年用yyyy表示,月用mm表示,日用dd表示,小时用hh24表示,分用mi表示,秒用ss表示。例子:SQL create table save_info(per_id varchar2(20),name varchar2(20),tran_
60、date date, 2 tran_val number(12,2);表已创立。 2 to_date(2001.06.18,yyyy.mm.dd),12345.66);已创立 1 行。SQL select * from save_info;PER_ID NAME TRAN_DATE TRAN_VAL- - - -SQL select per_id,name,to_char(tran_date,yyyy/mm/dd),tran_val from save_info;PER_ID NAME TO_CHAR(TR TRAN_VAL- - - -SQL show parameter nls_date_
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 数据库设计与实施试题及答案
- 快速记忆技巧与公路工程试题及答案
- 超市多元化支付方式与金融科技创新考核试卷
- 学会识别公路工程考试试题及答案技巧
- 保健食品行业供应链金融创新考核试卷
- 金属加工中的金属成形技术考核试卷
- 谷物加工中的谷物粉碎与磨粉工艺考核试卷
- 谷物磨制工艺在食品产业可持续发展中的应用考核试卷
- 行政组织理论的实务应用与2025年试题及答案
- 冷链公司饭堂管理制度
- 2024年贵州铜仁市印江县城市社区工作者招聘笔试参考题库附带答案详解
- 预防术中低体温Pdca 课件
- 冰箱生产工艺流程模型
- 石油开采技术的数字化转型与智能化应用
- 胃癌诊疗指南(2022年版)
- 什么是冥王星
- 建筑施工行业应急管理体系建设
- 逆变器技术规范书
- 2023年湖北省保险行业协会招聘4人考前自测高频考点模拟试题(共500题)含答案详解
- 企业安全防汛知识企业安全生产培训
- 好书阅读分享交流《福尔摩斯探案集》课件
评论
0/150
提交评论