Oracle基础教程8246.pptx
Oracle基础教程数据库简介数据库是依照某种数据模型组织起来并存放二级存储器中的数据集合。这种数据集合具有如下特点:尽可能不重复,以最优方式为某个特定组织的多种应用服务,其数据结构独立于使用它的应用程序,对数据的增、删、改和检索由统一软件进行管理和控制。从发展的历史看,数据库是数据管理的高级阶段,它是由文件管理系统发展起来的。数据模型层次结构模型层次结构模型实质上是一种有根结点的定向有序树,按照层次模型建立的数据库系统称为层次模型数据库系统。网状结构模型按照网状数据结构建立的数据库系统称为网状数据库系统,用数学方法可将网状数据结构转化为层次数据结构。关系结构模型关系式数据结构把一些复杂的数据结构归结为简单的二元关系(即二维表格形式)。在关系数据库中,对数据的操作几乎全部建立在一个或多个关系表格上,通过对这些关系表格的分类、合并、连接或选取等运算来实现数据的管理。发展历史1数据管理使用文件管理,层次数据库,网状数据库2关系型数据库3结构化查询语言(SQL)1974年IBM的Ray Boyce和Don Chamberlin将关系数据库的12条准则的数学定义以简单的关键字语法表现出来,里程碑式地提出了SQL(Structured Query Language)语言。SQL语言的功能包括查询、操纵、定义和控制,是一个综合的、通用的关系数据库语言,同时又是一种高度非过程化的语言,只要求用户指出做什么而不需要指出怎么做。4商业数据库的崛起5面向对象数据库主流数据库Oracle:开发商为美国的甲骨文公司(Oracle)。Sybase:开发商为Sybase公司。2010年SAP公司收购。DB2:开发商为IBM。SQL Server:开发商为微软。My SQL:由原My SQL公司开发。目前属于Oracle公司安装及配置安装介质的区别。【client】是客户端。【clusterware】是做oracle集群的插件。【companion】这个里面有一些的应用组件,一般在一些高级应用里面会用到。【database】oracle数据库服务器。【Gateways】透明网关用的,如果要从oracle访问其它数据库系统【Instant Client】从10G开始,Oracle提供了一个较为轻量级的客户包,叫做Instant Client.将它安装好后,就不用再安装庞大的Oracle Client了.instanct client 分为几个包,其中basic基本只有oci库文件,其它常见的包还有sqlplus,jdbc等,都运行于basic包之上。Oracle Client不光包括instant client,还包括很多工具。Oracle数据库的安装步骤Oracle数据库的安装步骤Oracle数据库的安装步骤Oracle数据库的安装步骤Oracle数据库的安装步骤Oracle数据库的安装步骤Oracle数据库的安装步骤Oracle数据库的安装步骤ZHS16GBKOracle数据库的安装步骤Oracle数据库的安装步骤Oracle数据库的安装步骤Oracle数据库的安装步骤Oracle数据库的安装步骤Oracle数据库的安装步骤Oracle数据库的安装步骤Oracle数据库的安装步骤Oracle数据库的安装步骤Oracle数据库的安装步骤Oracle数据库的安装步骤要测试数据安装是否成功,可按顺序执行以下两个步骤:测试步骤 1:请执行操作系统级的命令:tnsping orcl上述命令假定全局数据库名是 orcl。以下是命令执行后的示例:C:tnsping orclTNS Ping Utility for 32-bit Windows:Version 10.2.0.1.0-Production on 10-11月-2005 10:09:58Copyright(c)1997,2005,Oracle.All rights reserved.已使用的参数文件:C:oracleproduct10.2.0db_1networkadminsqlnet.ora已使用 TNSNAMES 适配器来解析别名Attempting to contact(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=dbserver)(PORT=1521)(CONNECT_DATA=(SERVER=DEDICATED)(SERVICE_NAME=orcl)OK(50 毫秒)其中,结果其中,结果 OK OK 至关重要。至关重要。上述结果如果正确,表明侦听器配置无误。上述结果如果正确,表明侦听器配置无误。Oracle数据库的安装步骤Oracle数据库的安装步骤ORACLE的服务OracleDBConsole 这个是采用浏览器使用的oracle企业管理器OracleJobScheduler Oracle作业调度服务,OracleiSQL*Plus 是isql*plus的服务,要使用isqlplus,必须开启该服务OracleTNSListener 监听器服务,服务只有在数据库需要远程访问时才需要(无论是通过另外一台主机还是在本地通过 SQL*Net 网络协议都属于远程访问),不用这个服务就可以访问本地数据库,它的缺省启动类型为自动。服务进程为TNSLSNR.EXE,参数文件 Listener.ora,日志文件listener.log,控制台LSNRCTL.EXE,默认端口1521、1526。OracleService 数据库服务,这个服务会自动地启动和停止数据库。如果安装了一个数据库,它的缺省启动类型为自动。服务进程为ORACLE.EXE,参数文件initSID.ora,日志文件SIDALRT.log,控制台SVRMGRL.EXE、SQLPLUS.EXE。Oracle数据库配置服务命名的概念Oracle数据库配置Oracle数据库配置第二种方法使用服务名配置向导Oracle数据库配置Oracle数据库配置Oracle数据库配置一般的ORACLE默认安装时是ORCLOracle数据库配置Oracle数据库配置Oracle数据库配置Oracle数据库配置Oracle数据库配置Oracle数据库配置Oracle数据库配置Oracle数据库配置Oracle数据库配置D:oracleproduct10.2.0db_1NETWORKADMINtnsnames.ora本地服务名的配置文件DEV=(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST=192.168.1.31)(PORT=1521)(CONNECT_DATA=(SERVICE_NAME=orcl)Oracle数据库配置D:oracleproduct10.2.0db_1NETWORKADMINlistener.ora监听的配置文件LISTENER=(DESCRIPTION_LIST=(DESCRIPTION=(ADDRESS=(PROTOCOL=IPC)(KEY=EXTPROC1)(ADDRESS=(PROTOCOL=TCP)(HOST=slim-PC)(PORT=1521)sqlplusPL/SQL DeveloperPL/SQL DeveloperPL/SQL DeveloperPL/SQL DeveloperCommand window 是执行批量脚本的,也可以单个执行一条语句,但它的输出结果不如sql window,而sql window执行的是一个语句,输出结果是规范的表格比如,现在有100条插入语句,你可以一条一条的在sql window中执行,也可以放到command window里一次执行完有一个查询,结果有很多行,你想要好的输出结果,就在sql window里执行PL/SQL DeveloperPL/SQL Developer快捷键:F8PL/SQL DeveloperOracle表空间表空间(TableSpace)很重要的一个作用就是规划数据表。也就是说,每个数据表都是某个表空间的子对象。数据表的真实数据也是存在于表空间的物理文件中。因此,了解表空间的使用规则,对于明确Oracle数据库结构有着重要意义。每个用户登录数据库时所作的建表动作,如果未显式指定将表创建于哪个表空间中,都会自动创建于该用户的默认表空间。默认表空间相当于用户的工作空间。Oracle表空间CREATE TABLESPACE TS_HOPETARGLE LOGGING DATAFILE D:ORACLEORADATATS_HOPETARGLE.ora SIZE 5M AUTOEXTEND ON NEXT 10M MAXSIZE UNLIMITED EXTENT MANAGEMENT LOCAL SEGMENT SPACE MANAGEMENT AUTO;用户User建用户的典型脚本:CREATE USER HIS3_JK PROFILE DEFAULT IDENTIFIED BY hisjk DEFAULT TABLESPACE TS_YYGL ACCOUNT UNLOCK;GRANT DBA TO HIS3_JK;CONNECTRESOURCEEXP_FULL_DATABASEIMP_FULL_DATABASEOracle 表-Create tablecreate table SCM_FUND(FUND_ID VARCHAR2(10)not null,FUND_CODE VARCHAR2(50),ORDER_NUM NUMBER(5)default 0,HEADER VARCHAR2(10),HAPPEN_AMOUNT NUMBER(14,4)default 0,DELETE_FLAG NUMBER(1)default 0 not null,DELETE_DATE DATE)tablespace TS_HOPETARGLE_SCM;-Add comments to the table comment on table SCM_FUND is 供应链_经费项目;-Add comments to the columns comment on column SCM_FUND.FUND_ID is 代码;comment on column SCM_FUND.FUND_CODE is 编码;comment on column SCM_FUND.ORDER_NUM is 排序序号;comment on column SCM_FUND.HEADER is 经费负责人;comment on column SCM_FUND.HAPPEN_AMOUNT is 发生金额;comment on column SCM_FUND.DELETE_FLAG is 作废标志;comment on column SCM_FUND.DELETE_DATE is 作废时间;-Create/Recreate primary,unique and foreign key constraints alter table SCM_FUND add constraint PK_SCM_FUND primary key(FUND_ID)using index tablespace TS_HOPETARGLE_SCM ;Oracle表常用的字段类型Varchar2(4000)字符型Number(1)标志Number(10)整型Number(14,4)小数Date 日期Clob 大文本字段Blob 二进制字段表的修改和删除:alter table,drop table特殊的表:select 1+2 from dual删除表中的数据:delete table,truncate table视图Viewcreate or replace view oa_directory_va asselect DIRECTORY-|directory_id as pkey_id,parent_id as pkey_parid,directory_name as pkey_name,capacity as pkey_size,update_date as pkey_date,0 as pkey_type,delete_flag,type_flag,type_id,FOLDER as file_type,1 as name_save,0 as VISIT_TIMES,subdirectory_count,subfile_count,directory_id as item_id from oa_directory;普通视图和物化视图的区别物化视图是一种特殊的物理表,“物化”(Materialized)视图是相对普通视图而言的。普通视图是虚拟表,应用的局限性大,任何对视图的查询,Oracle都实际上转换为视图SQL语句的查询。这样对整体查询性能的提高,并没有实质上的好处。物化视图的类型:ON DEMAND、ON COMMIT。二者的区别在于刷新方法的不同,ON DEMAND顾名思义,仅在该物化视图“需要”被刷新了,才进行刷新(REFRESH),即更新物化视图,以保证和基表数据的一致性;而ON COMMIT是说,一旦基表有了COMMIT,即事务提交,则立刻刷新,立刻更新物化视图,使得数据和基表一致。存储过程CREATE OR REPLACE PROCEDURE P_ROWTOCOL(AS_FROM VARCHAR2,AS_GROUPROW VARCHAR2,AS_GROUPCOL VARCHAR2,AS_SUMCOL VARCHAR2,AS_SQL OUT VARCHAR2)IS -动态行转列 V_SQL VARCHAR2(4000);TYPE CUR_TYPE IS REF CURSOR;CUR CUR_TYPE;cursor cur_object is select object_name from user_objects where object_name like V_ROWTOCOL_%and object_type=VIEW AND object_name NOT like LS_VIEWNAME -2.列范围 V_COL:=SELECT DISTINCT|AS_GROUPCOL|AS DM FROM|AS_FROM|ORDER BY|AS_GROUPCOL;OPEN CUR FOR V_COL;-产生SELECT V_SQL:=SELECT|AS_GROUPROW;LOOP FETCH CUR INTO LS_DM;EXIT WHEN CUR%NOTFOUND;IF LS_DM IS NULL THEN V_SQL:=V_SQL|,|SUM(CASE WHEN|AS_GROUPCOL|IS NULL THEN|AS_SUMCOL|ELSE 0 END)AS 空;ELSE V_SQL:=V_SQL|,|SUM(DECODE(|AS_GROUPCOL|,|LS_DM|,|AS_SUMCOL|,0)AS|LS_DM;END IF;END LOOP;CLOSE CUR;AS_SQL:=SELECT*FROM|LS_VIEWNAME;EXCEPTION WHEN OTHERS THEN AS_SQL:=SELECT 行转列出现异常错误:|PKG_DB.GET_ERRORS()|AS COL FROM DUAL;END;存储过程包Package包体Package body编译自定义函数Function触发器Trigger导入,导出导入导出命令,可保存为BAT来执行exp hopetargle/hopetargledev96 buffer=10000000 owner=hopetargle file=hopetargle.dmp log=ddd.txtimp hopetargle_yq/hopetargle buffer=10000000 full=y file=srm_yq.dmp log=hopetargle_yq.txt如果导入前,表中数据非空,则需要执行以下语句:sqlplus HOPETARGLE/HOPETARGLEdev96 list.sqlsqlplus HOPETARGLE/HOPETARGLEdev96 drop.sql其中list.sql如下:SPOOL drop.sqlSELECT DROP|TABTYPE|TNAME|;FROM TAB ORDER BY TNAME;SELECT EXIT FROM DUAL;SPOOL OFFEXIT