1、一个Oracle实例是存取和控制一数据库的软件机制。每一次在数据库服务器上启动一数据库时,称为系统全局区(system global area)的一内存区(简称SGA)被分配,有一个或多个Oracle进程被起动。该SGA和Oracle进程的结合称为一个Oracle数据库实例。一个实例的SGA和进程为管理数据库数据、为该数据库一个或多个用户服务而工作。在Oracle系统中,首先是实例启动,然后由实例装配(mount)一个数据库。1) 进程结构进程(process)是操作系统中的一种机制,它可执行一系列的操作步骤。在有些操作系统中使用作业(JOB)或任务(TASK)的术语。一个进程通常有它自己的专
2、用存储区。Oracle进程的体系结构设计使性能最大。Oracle实例有两种类:单进程实例和多进程实例。单进程Oracle(又称单用户Oracle)是一个数据库系统,一个进程执行全部Oracle代码。由于Oracle部分和客户应用程序不能分别以进程执行,所以Oracle的代码和用户数据库应用是单个进程执行,其结构如图1-2所示。在单进程环境下的Oracle实例,仅允许一个用户存取。例如在MS-DOS上运行Oracle。多进程Oracle实例(又称多用户Oracle)使用多个进程来执行Oracle的不同部分,对于每一个连接的用户都有一个进程,如图1-3所示。在多进程系统中,进程分为两类:用户进程和
3、Oracle进程。当一用户运行一应用程序,如Pro*c程序或一个Oracle工具(如SQL*Plus),为用户运行的应用建立一个用户 进程。Oracle进程又分为两类:服务器进程(server process)和后台进程(background process),服务器进程用于处理连接到该实例的用户进程的请求。当应用和Oracle是在同一台机器上运行,而不再通过网络,一般将用户进程和它相应的服务器进程组合成单个进程,可降低系统开销。然而,当应用和Oracle运行在不同的机器上时,用户进程经一个分离服务器进程Oracle通信。它执行下列任务: 对应用所发出的SQL语句进行语法分析和执行。 从磁盘(
4、数据文件中)读入必要的数据块到SGA的共享数据库缓冲区(该块不在缓冲区时)。 将结果返回给应用程序处理。系统为了使性能最好和协调多个用户,在多进程系统中使用一些附加进程,称为后台进程。在许多操作系统中,后台进程是在实例启动时自动地建立。一个Oracle实例可以有许多后台进程,但它们不是一直存在。后台进程的名字为: DBWR 数据库写入程序 LGWR 日志写入程序 CKPT 检查点 SMON 系统监控 PMON 进程监控 ARCH 归档 RECO 恢复 LCKn 封锁 Dnnn 调度进程 Snnn 服务器2) 内存结构Oracle在内存存储下列信息: 执行的程序代码。 连接的会话信息(包括当前不
5、活动的)。 程序执行期间所需要数据(如查询的当前状态)。 Oracle进程间通信和共享的信息(如封锁信息)。 存储在外存储上的缓冲信息。Oracle具有下列基本的内存结构: 软件代码区 系统全局区(SGA),包括数据库缓冲存储区、日志缓冲区和共享池 程序全局区(PGA),包括栈区和数据区。 排序区(sort area)。7SQL*Plus命令SQL*Plus有许多命令,表1-1只是列举了一部分常用的供读者参考。表1-1 常用SQL*Plus命令SQL*Plus命令缩写意义APPEND textA text把字符串增加到当前行的末尾CHANGE /old/new/C/old/new/把当前行的旧
6、字符串替换成新字符串CHANGE /text/C/text/把当前行中字符串删除CLEAR BUFFERCL BUFF从SQL缓冲区中删除所有行DEL删除当前行INPUTI插入许多行INPUT textI text插入一个包含text字符串的行LISTL显示SQL缓冲区的所有行LIST nL n显示SQL缓冲区中的一行到n行LIST m nL m nSQL缓冲区中的从第m行显示到第n行RUNR显示并运行在缓冲区中的当前SQL命令SAVE filename把SQL缓冲区中的内容保存到以filename为名字的文件中,默认路径为orawinbinGET filename把以filename为名字的
7、文件内容调入SQL缓冲区中START filename filename运行以前保存的命令文件ED filename用默认的编辑器编辑保存的文件内容EXIT退出SQL*PlusRUNFORM filename从SQL*Plus中运行一个Oracle Forms应用程序SPOOL filename写所有的后面的命令或者输出到一个已经命名的文件中。假脱机输入输出文件的后缀为.LISSPOOL OFF|OUTOFF 关闭假脱机输入输出文件;OUT改变假脱机输入输出,送文件到打印机上DESCRIBE tablenameDESC tablename显示任何数据库表的数据结构HELP击活Oracle内部的
8、帮助部件HOST command在SQL*Plus中击活一个操作系统命令CONNECT userid/passwordCONN userid/password在当前的登录下,击活其它的Oracle用户PROMPT text当运行一个命令文件时,显示文本三上机内容1 SQL*Plus的启动当读者登录到操作系统后,你有三种方法启动SQL*Plus。1) SQLPLUS读者将看到如下的信息:SQL*Plus: Version 3.1.1 Production on Mon Oct 4 1993Copyright (C) 1992, Oracle Corporation, California, US
9、A.All rights reserved.Enter Username:输入你的用户名字并按回车。SQL*Plus将提示:Enter Password:输入你的密码并按回车。那么,读者将看到SQL*Plus的提示符:SQL例如:SQLPLUSscotttiger2) SQLPLUS Username再提示你输入密码。SQLPLUS scott tiger3) SQLPLUS username/passwordSQLPLUS scott/tiger4) 退出SQL*PlusSQL*Plus显示Oracle版本之后显示操作系统提示符。2 SQL命令SQL命令包括数据定义语言(如Create、Al
10、ter等)和数据操作语言(Select Insert Update Delete等),这些都可在SQL*Plus中使用。如:SELECT EMPNO, ENAME, JOB, SAL 2 FROM EMP WHERE SAL EMPINFO9) 清缓冲区10) DESCRIBE列出表的结构DESC EMP NameNull?TypeEMPNONOT NULLNUMBER(4)ENAMEVARCHAR2(10)JOBMGRHIREDATEDATESALNUMBER(7,2)COMMDEPTNONUMBER(2)4 PL/SQL命令Declare1 Begin2 SELECT * FROM EMP
11、;3 EXCEPTION4 WHEN NO_DATA_FOUND THEN5 RASIE_APPLICATION_ERROR(-12201,No data found)6 End;查询结果将显示出来。四上机作业1 练习SQL命令:SELECT * FROM EMP;。2 用LIST显示缓冲区内容。3 用CHANGE命令修改当前行。4 用APPEND增加一部分命令。5 用EDIT编辑缓冲区内容。6 用SAVE命令保存缓冲区内容到EMPFILE中。7 用START命令运行EMPFILE文件。8 清除缓冲区。第二章 数据表的创建1 了解并掌握Oracle中表结构的定义。2 了解并掌握Oracle中的
12、用Create命令定义表的方法,以及表的完整性定义。3 了解并掌握Oracle中的用Alter命令 和Drop命令对表的修改和删除。DDL是SQL命令的子集,用来创建、修改、删除Oracle数据库结构。这些命令能立即影响数据库和数据字典字段信息。1 表名命名规则所用的表名必须满足下面的条件:a) 名字必须以A-Z 或a-z的字母开始;b) 名字可以包括字母、数字和特殊字母(_)。字符$和#也是合法的,但是这种用法不提倡;c) 名字大小写是一样的;例如EMP、emp和eMp是表示同一个表;d) 名字最长不超过30个字符;e) 表名不能和其它的对象重名;f) 表名不能是SQL保留字。表2-1 表名
13、命名举例名字合法EMP85YES85EMPNO(开始不是字母)FIXED_ASSETSFIXED ASSETSNO(包含空格)UPDATENO(SQL保留字)2 字段类型表2-2 字段类型数据类型描述VARCHAR2(w)变长字符长度为w。最长为2000个字符。CHAR(w)定长字符长度为w。默认为1个字符;最长为255个字符NUMBER38位有效数字的浮点数NUMBER(w)W位精确度的整数,范围从1至38NUMBER(w,s)W是精度,或总的数字书,范围从1至38。S是比例,或是小数点右边的数字位。比例的范围从-84至127日期值,范围从公元前14712年1月到公元314712年12月LO
14、NG变长字符串,其最大长度为2G(或231-1个字节)RAW 和LONG RAW面向字节数据,可存储字符串、浮点数,二进制数据等3 Create命令1)、CREATE TABLE table_name( column_name type(size), column_name type(size), );CREATE TABLE DEPT(DEPTNO NUMBER(2),DNAME VARCHAR2(12),LOC VARCHAR2(12);2)、CREATE TABLE table_name (column_name,) AS SELECT statement;表间的复制CREATE TAB
15、LE DEPTNO10 (NAME,LOCATION)AS SELECT DNAME,LOC FROM DEPTWHERE DEPTNO = 10;4完整性约束Oracle允许用户为表和列定义完整性约束来增强一定的规则。可分为:表约束和字段约束5约束类型1)、NOT NULL约束NOT NULL约束保证字段值不能为NULL。没有NOT NULL约束的字段,值可以为NULL。2)、UNIQUE约束指定一个字段或者字段的集合为唯一键。在表中没有两行具有相同的值。如果唯一键是基于单条记录的,NULL是允许的。表约束命令格式:,CONSTRAINT constraint_name UNIQUE (Co
16、lumn, Column, )字段约束命令格式:CONSTRAINT constraint_name UNIQUE(DEPTNO NUMBER, DNAME VARCHAR2(9),LOC VARCHAR2(10),CONSTRAINT UNQ_DEPT_LOC UNIQUE(DNAME,LOC);UNQ_DEPT_LOC是一个表约束。3)、主键约束(Primary Key Constraint)主键约束强制字段和字段集合的唯一性,并且用一个唯一索引来管理它。每个表中只能用一个主键,这样可以通过主键来标识表中的每条记录。NULL值不允许在主键字段出现。,CONSTRAINT constrain
17、t_name PRIMARY KEY (Column, Column, )CONSTRAINT constraint_name PRIMARY KEY用字段约束定义DEPTNO为主键(DEPTNO NUMBER(2) CONSTRAINT DEPT_PRIM PRIMARY KEY,);4)、外键约束外键提供表内或表间的完整性规则。外键必须依赖于一个primary或unique key。,CONSTRAINT constraint_name FOREIGN KEY (Column, Column, ) REFERENCE table (column, column, )CONSTRAINT c
18、onstraint_name FOREIGN KEY table (column)CREATE TABLE EMP(CONSTRAINT FK_DEPTNO FOREIGN KEY (DEPTNO) REFERENCE DEPT(DEPTNO);5)、Check约束CHECK约束定义了每条记录必须满足的条件语法:CONSTRAINT constraint_name CHECK (condition)6 Alter命令ALTER TABLE命令可用来修改数据表的定义。命令格式:ALTER TABLE tablenameADD或MODIFY或DROP options (column_spec co
19、lumn_constraint) ENABLE clause 或DISABLE clause ADD关键字可以用来给已存在的数据表增加一个字段或约束。给EMP增加一个字段ALTER TABLE EMPADD (SPOUSES_NAME CHAR(10);Table altered。MODIFY关键字可以用来修改已存在的数据表定义。把EMP中ENAME长度改为25个字符MODIFY (ENAM CHAR(25);DROP关键字可以用来删除已存在数据表的约束。把EMP中主键删除DROP PRIMARY KEY;7 Drop 命令用DROP TABLE命令删除Oracle数据表的定义。DROP TABLE table_name CASCADE CONSTRAINTDROP TABLE EMP;CASCADE CONSTRAINT选项说明了也把完整性约束一起删除。注意: DROP TABLE也把数据表中的数据删除。 数据表的VIEWS和SYNOMNYMS保留下来,但它们变成了不合法的。 任何悬而未决的事务将被提交。 只有数据表的生成者或DBA才有权删除它。1 创建表EMP(加上五种约束)(EMPNO NUMBER(4) NOT NULL,ENAME VARCHAR2(10),JOB VARC
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1