文档库 最新最全的文档下载
当前位置:文档库 › oracle数据库应用与开发总结

oracle数据库应用与开发总结

oracle数据库应用与开发总结
oracle数据库应用与开发总结

Oracle数据库开发与应用总结

第一章关系型数据库及oracle 10g介绍

1.Oracle数据库的发展(了解):

1977年6月,(Software Development Laboratories,SDL)的计算机公司(Oracle公司的前身)开发出第一款Oracle。

1979年,SDL更名为关系软件有限公司(Relational Software,Inc.,RSI)Oracle产品(第二版)。

1983年3月,RSI发布了Oracle第三版,并RSI公司再次更名为Oracle公司。

1984年10月,Oracle发布了第四版产品。

1999年2月,Oracle正式发布了Oracle 8i 。

2001年6月,正式发布了Oracle 9i 。

2004年2月,Oracle公司正式发布了Oracle10g(标准版,企业版,个人版)。

2.Oracle数据库的系统结构:Oracle分布式数据库系统结构;Oracle客户/服务器系统结构;Oracle浏览器/服务器系统结构。

3.检验安装是否成功(4种):

查看已安装产品;查看程序组;查看服务;查看注册表;尝试运行oracle工具。

4.Oracle数据库的默认用户:

(1)SYS:该用户被默认创建并授予DBA角色,它是Oracle数据库中权限最大的管理员账号。

(2)SYSTEM:被默认创建并授予DBA角色权限仅次于SYS。该用户创建和管理数据库中可显示管理信息的表或视图,以及被Oracle数据库应用和工具使用的各种数据库对象。(3)SYSMAN:该用户是企业管理的超级管理员账号,该账号能够创建和修改其他管理员账号,同时也能管理数据库实例。

(4)DBSNMP:是Oracle数据库中用于智能代理(Intelligent Agent)的用户,用来监控和管理数据库相关性能。如果停止该用户,则无法提取相关的数据库信息。

5.熟练掌握SQL*plus的使用:例1.2 以system用户登录数据库。

SQLPLUS

SQLPLUS system

SQLPLUS system/abcdef

SQLPLUS system/abcdef@orcl

例1.3 以sys用户登录数据库。

SQLPLUS sys/abcdef AS SYSDBA

SQLPLUS sys/abcdef@orcl AS SYSOPER

例1.4 不使用已定义的主机字符串,直接指定要连接的主机名、端口号和数据库实例。SQLPLUS system/abcdef@localhost:1521/orcl

6.STARTUP命令启动数据库:

STARTUP [NOMOUNT|MOUNT|OPEN][pfile=<初始化参数文件名及路径>]

pfile:指出创建Oracle实例需要的初始化参数文件及路径,该参数可省略。NOMOUNT:表示只启动一个Oracle实例。

MOUNT:启动一个Oracle实例并打开控制文件。

OPEN:启动一个Oracle实例,并依次打开控制文件、数据文件和重作日志文件。

例:在命令行中输入:start nomount;

7.2.SHUTDOWN命令关闭数据库:

SHUTDOWN [NORMAL|IMMEDIATE|TRANSACTIONAL|ABORT]

其中各参数的意义如下:

NORMAL:这是数据库关闭命令的缺省选项。

IMMEDIATE:这是使用频率最高的关闭数据库的方式。当前正在被Oracle处理的SQL语句立即中断,系统中任何没有提交的事务全部回滚。

第二章oracle数据库的体系结构

1.物理存储结构:

(1)数据文件:数据文件是Oracle数据库用来存储各种数据的地方,如表中的记录、索引数据、系统数据和临时数据等。

一个数据库有一个或多个数据文件,但一个数据文件只能属于一个数据库。

数据文件中存储了各种系统和用户的数据,但它和数据库中的表没有一对一的关系。

数据文件的扩展名是.dbf。

可以通过以下方式查看:

静态数据字典视图DBA_DATA_FILES和DBA_TEMP_FILES

动态数据字典视图v$datafile和v$tempfile

(2)日志文件:日志文件记录了用户对数据库的修改信息(如增加、删除、修改),名字通常为REDO*.LOG格式。

日志文件也叫重做日志文件或重演日志文件(Redo Log Files)。

★在Oracle中,数据库有两种工作模式:

①归档日志模式(archivelog):

适用于系统投入使用后

当日志组写满后,将日志信息保存到归档日志文件中,然后再循环使用。

②非归档日志模式(noarchivelog):

适用于开发环境和测试环境中

日志组写满后不会归档到归档日志文件中,直接被新的日志信息覆盖。

(3)控制文件:是Oracle数据库的物理文件之一,是一个很小的二进制文件,它记录了:数据库的名称;表空间等信息

数据文件和联机日志文件的名称及位置

当前的日志序列号(Log Sequence Number)

(4)参数文件:参数文件分为:文本参数文件(pfile);服务器参数文件(spfile)

★数据库启动时,各个物理文件使用的顺序:

①首先从初始化参数文件中获得控制文件的名称及位置,然后打开控制文件。

②再从控制文件中读取数据文件和联机日志文件的信息及其他相关信息。

③最后打开数据库。

2.逻辑存储结构:

(1)表空间:表空间(tablespace)是Oracle数据库中最大的逻辑存储结构。

★数据库中的一个表空间至少包含一个或多个数据文件,而一个数据文件只能属于一个表空间。

?一个表空间的大小就等于它包含的所有数据文件大小之和。

(2) 段:一个表空间可以被划分为若干个段(segment),一个段又可以被划分为若干个盘区。段(segment)是以盘区为单位获得磁盘空间的一个段内的盘区在磁盘上不一定是连续的。段可以分为以下几种类型:数据段;索引段;临时段;回滚段;LOB段。

(3)盘区:盘区(extent)是逻辑存储结构中的一个重要概念,因为它是Oracle最小的磁盘空间分配单元。

(4)数据块:数据块是Oracle最小的逻辑存储单元,是最基本的数据存取单位。

数据块中可以存储表(table)、索引(index)或簇表(clustered data)。

3.数据库实例结构:Oracle实例是由内存空间(系统全局区)和Oracle 进程两部分组成。一个完整的Oracle数据库包括两个部分:数据库和数据库实例。

(1)进程结构:是操作系统的基本执行单元,它是具有独立数据处理功能的正在执行的程序,是一系列操作步的集合,有时也被称为作业(job)或任务(task)。

▲Oracle系统的进程包括三种类型:

1)用户进程:用户进程负责与Oracle服务器建立连接和会话并向服务器发出数据处理请求,得到处理结果后再输出给用户。

2)服务进程:服务进程负责在用户进程和Oracle实例之间调度请求和响应

★数据库通常有两种工作模式:

①专用服务器模式:是用户创建数据库时的默认方式,也是多数数据库管理员运行数据库的方式,它为用户进程和服务进程之间提供了一种一对一的映射关系。

②共享服务器模式:当数据库启动时首先创建几个共享服务进程,这些服务进程可以为多个用户进程提供服务,他们是一对多的关系。

3)后台进程:

●常见的后台进程包括:数据写进程:日志写进程;检查点进程;系统监控进程;进程监控进程;归档进程;恢复进程;调度进程。

(2)内存结构:

①系统全局区(System Global Area,SGA):数据缓存区;重做日志缓冲区;共享池;Java 池(Java pool);大型池;(理解组成)

②程序全局区(Program Global Areas,PGA):私有SQL 区;游标及SQL 区;会话内存

4 Oracle网络配置:服务器端:listener.ora文件

客户端:tnsnames.ora文件和sqlnet.ora

第三章用户、方案的创建与管理

1.方案:方案是一系列逻辑数据结构或对象的集合,可以理解为命名空间或包。

2.用户与方案的关系:一个方案只能够被一个数据库用户拥有,并且方案的名称与这个用户的名称相同,当创建新用户时,系统自动创建该用户的方案。

3用户:Oracle用户,通俗的讲就是访问Oracle数据库的“人”。

每个用户都有一个口令和相应的权限

4.方案对象:方案对象是指属于某个用户中的数据库对象(表、索引、索引表、簇、触发器、PL/SQL包、序列、同义词、视图和存储函数与存储过程、Java类与其他Java资源)。

5.非方案对象:不属于任何方案的数据库对象,而属于整个数据库(用户、角色、概要文件)

6.使用SQL命令创建新用户:给用户分配口令,加锁,解锁,授权,修改密码,配额,密码(是否)过期

例3.1 创建新用户zhangsan,密码为abcdef,命令如下。

CREATE USER zhangsan IDENTIFIED BY abcdef;

例3.2 创建新用户lisi,密码为abcdef,表空间为users,并且在users表空间上可以使用10M 的磁盘空间。

CREATE USER lisi IDENTIFIED BY abcdef

DEFAULT TABLESPACE users QUOTA 10M ON users;

例3.3 创建新用户allen,密码为abcdef,并且设置密码已过期,用户的状态为加锁。CREATE USER allen IDENTIFIED BY abcdef

PASSWORD expire ACCOUNT lock;

7.为新用户授予和数据库建立会话的系统权限:GRANT CREATE SESSION TO user_name; 为新用户授权和数据库建立连接的角色:GRANT CONNECT TO user_name;

第四章表的创建于管理

创建表(简单的数据表)熟悉掌握三种基本数据类型。

1.字符:CHAR(n):用于存储长度为n的定长字符串,最大长度为2000字节,未指定长度时默认为1。

V ARCHAR2(n):用于存储长度为n的变长字符串,最大长度为4000字节,该类型没有默认长度,使用时必须指定。

2.数值:NUMBER(p,s):其中p是精度,表示总的有效数字的个数;s是小数位数。NUMBER(p):精度为p的整数。

NUMBER:如果没有指明精度和小数位数,则表示精度为38的浮点数。

3.日期:DATE:用于存储日期和时间格式的数据。可以使用函数SYSDATE获得当前的日期和时间。通常为DD-MON-YY格式表示。

4.使用SQL命令创建表:例 4.1 在当前方案中创建一个名为student的表,包括学号(studentID)、姓名(name)、性别(sex)、出生日期(birthday)四个字段。

CREATE TABLE student(studentID CHAR(6),name V ARCHAR2(8),sex CHAR(2),birthday DA TE) TABLESPACE users;

5.基于已有的表创建新表:

例4.2 将scott方案下的emp表复制到当前方案中的emp_new表。

CREATE TABLE emp_new AS SELECT * FROM scott.emp;

例4.3 在当前方案中创建新的雇员表,包括雇员编号、姓名、工作三个字段,内容来源于scott方案中的emp表的empno、ename、job三个字段。

CREATE TABLE 雇员(编号,姓名,工作) AS SELECT empno,ename,job FROM scott.emp;

6.使用DESCRIBE命令查看表结构:显示student表的表结构:DESC student;

7.向表中插入、修改和删除数据

(1)插入多行数据:

(2)例4.8 创建employee1表,包含三个字段empidID、empname和empjob。将例4.3雇员表中的所有雇员信息插入到employee1表中。

CREATE TABLE employee1

(empID NUMBER(4),empname V ARCHAR2(10),empjob CHAR(9));

INSERT INTO employee1

SELECT * FROM 雇员;

(2)修改数据:例4.9 将scott方案下的emp表中编号为7369的雇员的工作修改为SALESMAN。

UPDATE scott.emp SET job='SALESMAN' WHERE empno=7369;

例4.11 将scott方案下的emp表中工作为SALESMAN的雇员工资都增加5%。

UPDATE scott.emp SET sal=sal+(sal*0.05) WHERE job='SALESMAN';

(3)删除数据:DELETE命令是逻辑删除,只是将要删除的行加上删除标记,被删除后可以使用ROLLBACK命令回滚,删除操作时间较长;TRUNCATE TABLE命令是物理删除,将表中的数据永久删除,不能回滚,删除操作快。

●DELETE命令包含WHERE子句,可以删除表中的部分行;TRUNCATE TABLE命令只能删除表中的所有行。例:TRUNCA TE TABLE 雇员;

8.修改表:

例4.14 向student表中添加所在系sdept字段。

ALTER TABLE student ADD sdept V ARCHAR2(10);

例4.15 向employee表中添加性别sex,年龄age,工资salary三个字段。

ALTER TABLE employee ADD(sex CHAR(2),age INT,salary NUMBER(5,2));

例4.17 删除employee表中的年龄和工资字段。

ALTER TABLE employee DROP (age,salary);

例4.18 修改student表中所在系sdept字段的长度改为30。

ALTER TABLE student MODIFY sdept V ARCHAR2(30);

例4.19 修改student表中所在系sdept字段的字段名为new_sdept。

ALTER TABLE student RENAME COLUMN sdept TO new_sdept;

例4.21 将new_student表删除。DROP TABLE new_student;

9.定义数据完整性:数据完整性是指数据的正确性、一致性和安全性

主要包括:

主键约束(PRIMARY KEY):定义为主键的一列或多列的组合值在任意两行上都不能相同,即不能有重复值,并且任一个主属性都不能为空。一个表中只能定义一个主键约束

例4.22 在当前方案中创建一个名为student的表,包括学号(studentID)、姓名(name)、性别(sex)、出生日期(birthday)四个字段。其中学号(studentID)为主键。

CREATE TABLE student

( studentID CHAR(6) PRIMARY KEY,name VARCHAR2(8), sex CHAR(2),birthday DATE); 例 4.23 在当前方案中创建一个名为score的表,包括学号(studentID)、课程号(courseID)、分数(grade)三个字段。其中学号(studentID)与课程号(courseID)的组合为主键。

CREATE TABLE score (studentID CHAR(6),courseID CHAR(3),grade NUMBER(5,2), CONSTRAINT pk_score PRIMARY KEY(studentID,courseID));

★注意组合主键的特点:任意一列中的值可以重复,但主键中的所有列的组合值必须唯一,而且组合中的每个字段都不能取空值。

不允许为空约束(NOT NULL):只能定义为列级约束

唯一性约束(UNIQUE):用来限制表中的非主键列上的数据的唯一性,即表中非主键列不允许输入重复值。一个表上可以定义多个UNIQUE约束。

例4.27 重新创建course的课程表,包括课程号(courseID)、课程名(name)、学分(credit)字段。要求课程号字段定义主键约束,课程名字段定义唯一性约束。

DROP TABLE course;

CREATE TABLE course(courseID CHAR(3) PRIMARY KEY, name VARCHAR2(20) UNIQUE, credit NUMBER(3));

检查约束(CHECK):指定某列的可取值的范围

例4.30 修改学生表student,在所在系sdept字段创建一个CHECK约束,以限制只能输入有效的系名称。

ALTER TABLE student ADD CONSTRAINT ch_sdept

CHECK(sdept IN('软件工程系','计算机应用系','网络工程系'));

外键约束(FOREIGN KEY):用于与其他表(称为参照表,或父表)中的列(称为参照列)建立连接。

例4.31 在当前方案下,创建雇员表employee和部门表department,其中department表包含部门编号deptID和部门名称deptName,deptID为主键;employee表包含职工编号empID、职工姓名name、年龄age、所在部门depID,其中empID为主键,deptID为外键。CREATE TABLE department(deptID INT PRIMARY KEY, deptName VARCHAR2(20)); CREATE TABLE employee(empID INT PRIMARY KEY,name VARCHAR2(8) NOT NULL,

age NUMBER(3),deptID INT REFERENCES department(deptID));

第五章SQL基本查询

1.select基本查询语句:

例5.4 查询scott方案下的emp表中每个雇员的姓名、工作和工资增加300元后的新工资,命令和执行结果如下。

SELECT ename||'的工作是'||job AS 雇员, sal+300 AS 新工资 FROM scott.emp;

字符串连接运算符(||)。

算数运算符包括:加(+)、减(-)、乘(*)、除(/)和取模(%)运算。

例5.5 查询scott方案下的emp表中的job和deptno字段,要求去除重复的行。

SELECT DISTINCT job,deptno FROM scott.emp; 注:distinct必须在select后第一例5.11 查询scott方案下的emp表中姓名以A开头的雇员信息。

SELECT * FROM scott.emp WHERE ename LIKE 'A%';

查询scott方案下的emp表中经理为空的记录。

SELECT * FROM scott.emp WHERE mgr IS NULL;

★ORDER BY 子句:ASC:表示按升序排列,可省略。 DESC:表示按降序排列。

默认使用的是ASC关键字,升序。

例5.17 将scott方案下的emp表中的记录先按工作升序排列,当工作相同时再按工资的降序排列。

SELECT empno,ename,job,sal FROM scott.emp ORDER BY job,sal DESC;

例5.20 统计scott方案下的emp表中雇员的总人数。

SELECT COUNT(*) AS 总人数 FROM scott.emp;

★GROUP BY 子句:

统计scott方案下的emp表中各种工作的雇员人数。

SELECT job,COUNT(*) AS 人数 FROM scott.emp GROUP BY job;

使用HAVING子句可以对分组后的结果进一步筛选

例5.23 统计scott方案下的emp表中平均工资大于2500的工作。

SELECT job,AVG(sal) AS 平均工资 FROM scott.emp

GROUP BY job HAVING AVG(sal)>2500;

例5.24 统计scott方案下的emp表中1982年后参加工作的、雇员人数超过了2人的部门编号。

SELECT deptno,COUNT(*) AS 人数FROM scott.emp

WHERE hiredate>'1-1月-1982' GROUP BY deptno HAVING COUNT(*)>=2;

2. SQL*PLUS中常用函数介绍:

例5.25 转换字符的大小写。

SELECT UPPER('abc'),LOWER('ABC'),INITCAP('abc') FROM DUAL;

例5.26 截取雇员表中姓名的前两位字母。

SELECT SUBSTR(ename,1,2) FROM scott.emp;

例5.28 求指定日期所在月份的最后一天

SELECT LAST_DAY(SYSDATE) FROM DUAL;

例5.28 求两日期之间相隔的月数。

SELECT MONTHS_BETWEEN(SYSDATE,'20-1月-2010')FROM DUAL;

例5.29 求下一个星期五的日期。 SELECT NEXT_DAY(SYSDATE,'星期五') FROM DUAL;

例5.30 将系统日期转换为字符串。

SELECT TO_CHAR(SYSDATE, 'YYYY MONTH DD')FROM DUAL;

例5.31 将字符串转换为数字。还有to_data函数

SELECT TO_NUMBER('1234')FROM DUAL;

第6章SELECT高级查询

1.简单链接查询:表,字段设置别名

两表的笛卡尔积运算:Select * from 表1,表2

为例6.4的查询中使用的表设置别名,代码如下:

SELECT s.studentID,sname,sc.courseID,cname,grade FROM student s,course c ,score sc WHERE s.studentID=sc.studentID AND c.courseID=sc.courseID AND grade>=60;

注意:

如果为表指明了别名,则所有引用表名的地方都必须使用别名,不能再用原表名;

另外,为表设置别名时不能使用AS关键字;

当查询多个表之间的同名字段时,必须使用“表名.同名字段”进行限制;

对于表间不同名的字段,可以在字段名前加表名进行限制,也可以不加表名,如果字段名前加上表名,则查询效率更高。

2.使用jion关键字的连接查询:内,外,左外,右外,完全连接

例6.5 利用scott方案下的emp 表和dept表,查询雇员工资大于2000的雇员编号、姓名、工资、所在部门编号、部门名称。

SELECT empno,ename,sal,e.deptno,dname FROM scott.emp e INNER JOIN scott.dept d

ON e.deptno=d.deptno WHERE SAL>2000;

例6.7 将例6.5改为自然连接。

SELECT empno,ename,sal,deptno,dname

FROM scott.emp NATURAL JOIN scott.dept WHERE SAL>2000;

例6.9 查询每个部门包括的雇员,如某部门没雇员,也要显示其情况。要求显示部门名称,雇员名字。

SELECT dname,ename

FROM scott.dept LEFT JOIN scott.emp ON dept.deptno=emp.deptno;

使用简单连接的方式也可以实现两个表的左外连接,格式如下:

FROM 表1,表2 WHERE 表1.公共字段=表2.公共字段 (+)

将上面的例题改为如下形式:

SELECT dname,ename FROM scott.dept ,scott.emp WHERE dept.deptno=emp.deptno (+) 例6.10 将例6.9中的左外连接改为右外连接,命令如下。

SELECT ename,dname

FROM scott.emp RIGHT OUTER JOIN scott.dept ON dept.deptno=emp.deptno;

例6.11 使用scott方案下的emp表和dept表执行完全外部连接查询。

SELECT ename,dname FROM scott.emp full OUTER JOIN scott.dept

ON dept.deptno=emp.deptno;

3. SELECT查询的集合操作:

UNION集合运算:UNION运算符可以将多个查询结果集合并,形成一个结果集。

?多个查询的列的数量必须相同

?数据类型必须兼容,且顺序必须一致

例6.14 使用UNION将工资大于2000的雇员信息与工作为MANAGER的雇员信息合并。SELECT empno,ename,job,sal FROM scott.emp WHERE sal>2000

UNION SELECT empno,ename,job,sal FROM scott.emp WHERE job='MANAGER';

4 .子查询:可以出现在from后,select部分以及where部分。

单行,多行以及多列字查询。每种使用条件和注意事项

▲子查询是一个完整的SELECT语句,但它作为其他SQL命令的一部分

?一些使用子查询实现的功能,也可以用表之间的连接查询实现,但两种方式并不完全等价例6.17 利用scott方案下的emp表和dept表查询在SALES部门工作的雇员姓名。SELECT ename FROM scott.emp

WHERE deptno=(SELECT deptno FROM scott.dept WHERE dname='SALES');

例6.20 利用scott方案下的emp表和dept表,删除部门是SALES的员工信息。DELETE FROM scott.emp

WHERE deptno=(SELECT deptno FROM scott.dept WHERE dname='SALES');

多行子查询是指:子查询返回单列多行数据,即一组数据。

使用多行比较运算符,包括IN、NOT IN、ANY、ALL、SOME。

例6.22 在学生选课系统中查询选修了课程名为数据库原理的学生信息。

SELECT * FROM student WHERE studentID IN (SELECT studentID FROM score

WHERE courseID=(SELECT courseID FROM course WHERE cname='数据库原理'))

例6.24 利用scott方案下的emp表查询比所有工作是SALESMAN的员工工作早的那些雇员的信息。

SELECT * FROM scott.emp WHERE hiredate

多列子查询:获得多列任意行数据

例6.26 利用scott方案下的emp表查询与编号为7369的雇员的部门和工作岗位完全相同的所有雇员。

SELECT ename,job,sal,deptno FROM scott.emp

WHERE (deptno,job) = (SELECT deptno,job FROM scott.emp WHERE empno=7369);

第7章PL/SQL编程基础

1.PL/SQL基本概念:是oracle公司对sql扩展过程中的一种过程化的sql语言,也是oracle 数据库中主要使用的用来完成各种业务处理的通用语言

2.PL/SQL程序块的基本结构:三部分定义,执行,异常处理熟练掌握

DECLARE

/* 定义部分:定义常量、变量、游标、异常、复杂数据类型等*/

BEGIN

/* 执行部分:PL/SQL语句和SQL语句或者是嵌套其他的PL/SQL程序块 */ EXCEPTION

/* 异常处理部分:处理捕获到的错误 */

END;

例7.1 一个只包含执行部分的PL/SQL程序块。

SET SERVEROUTPUT ON

BEGIN

dbms_output.put_line('hello,everyone!');

END;

/

★在BEGIN和END中间至少要包含一条命令,即使程序块不需要执行命令,也要用NULL关键字代替。

例7.3 一个包含定义部分、执行部分、和异常处理部分的PL/SQL程序块。

DECLARE

i NUMBER(20);

BEGIN

i:=65/0;

EXCEPTION

WHEN zero_divide THEN

dbms_output.put_line('divided by zero');

END;

/

3.变量与常量定义与声明

例7.5 通过PL/SQL程序块定义下列的变量和常量

DECLARE

v_ename V ARCHAR2(10); v_sal NUMBER(6,2); c_tax_rate CONSTANT NUMBER(3,2) :=5.5; v_hiredate DA TE; v_valid BOOLEAN NOT NULL DEFAULT FALSE;

BEGIN

NULL;

END;

例7.6 使用SELECT语句为变量赋值。

SET SERVEROUTPUT ON

DECLARE

var1 NUMBER;

BEGIN

SELECT 10 INTO var1 FROM dual;

dbms_output.put_line(var1);

END;

4.常见SQL语句在PL/SQL程序中的使用

例7.8 以下示例演示了SELECT语句在PL/SQL程序块中的应用。

DECLARE

v_ename VARCHAR2(10);

BEGIN

SELECT ename INTO v_ename FROM scott.emp WHERE empno=7369;

dbms_output.put_line('employee name :'||v_ename);

END;

5.PL/SQL中的复合数据类型:使用%TYPE和%ROWTYPE定义变量

6 PL/SQL中的流程控制语句

例7.25 根据给定的职工编号从scott.emp表中查询该职工的奖金(comm字段的值),如果奖金的值不为0那么将表中该职工的奖金增加200,否则将该职工的奖金设置为100。DECLARE

v_comm NUMBER(6,2);

v_no number(6);

BEGIN

v_no:=&no;

SELECT nvl(comm,0) INTO v_comm FROM scott.emp

WHERE empno=v_no;

IF v_comm<>0 THEN

UPDATE scott.emp SET comm=comm+200 WHERE empno=v_no;

ELSE

UPDATE scott.emp SET comm=100 where empno=v_no;

END IF;

END;

例7.30 使用WHILE循环实现某数的阶乘。

DECLARE

v_num NUMBER(2):=#

v_pro NUMBER(20):=1;

i NUMBER(2):=1;

BEGIN

IF v_num=0 THEN

v_pro:=1;

ELSE

WHILE i<=v_num LOOP

v_pro:=v_pro*i;

i:=i+1;

END LOOP;

END IF;

dbms_output.put_line('num:'||v_num||' factorial:'||v_pro);

END;

7 游标的创建与应用:

(1)显式游标:是用户自己创建并操作的游标

(2)隐式游标:由系统自动创建并管理的游标,用户可以访问隐式游标的属性,也叫sql 游标,oracle服务器自动创建的隐式游标

?显式游标的使用过程

定义游标:CURSOR cursor_name IS select_statement;

例如:CURSOR c1 IS SELECT * FROM scott.emp;

打开游标:当游标被打开时,Oracle会执行游标所对应的SELECT语句,并将游标作为指针,指向SELECT语句结果集的第一行

语法如下:OPEN cursor_name; 例如:OPEN c1;

提取数据:游标被打开后,可以使用FETCH语句获取游标正在指向的查询结果集中的记录FETCH cursor_name INTO variable1,variable2,….;

例如:FETCH c1 INTO emp_rec;

处理数据:例如,将上面emp_rec记录变量中接收到的数据进行输出。

dbms_output.put_line(‘姓名是:’||emp_rec.ename||’工资是’||emp_rec.sal);

关闭游标语法如下:CLOSE cursor_name;

例如:CLOSE c1;

★将上面五个步骤中的操作编写成完整的程序如下例所示。

例7.32 从scott.emp表中查询所有记录,利用游标获取前两行记录并输出ename、job、sal 中的值。

DECLARE

CURSOR c1 IS SELECT * FROM scott.emp;

emp_rec scott.emp%ROWTYPE; --定义一个和表结构完全一致的记录变量

BEGIN

OPEN c1;

FETCH c1 INTO emp_rec;

dbms_output.put_line('姓名是:'||emp_rec.ename|| '工作是:'||emp_rec.job|| '工资是:'||emp_rec.sal);

FETCH c1 INTO emp_rec;

dbms_output.put_line('工作是:'||emp_rec.ename||'工作是:'||emp_rec.job|| '工资是:'||emp_rec.sal);

CLOSE c1;

END;

8.游标的常用属性:

%ISOPEN属性:用于确定游标是否已经打开,如果打开,返回true没有返回false

%FOUND属性:用于检查游标是否从结果集中提取到了数据。到了则返回true。反则反之%NOTFOUND属性:用于检查游标是否从结果集中提取到了数据。到了则返回false ?%ROWCOUNT属性:表示游标从查询结果集中已经获取到的记录总数。

9.显式游标的循环:

(1)游标的LOOP循环

(2)游标的FOR循环:与其他的循环语句相比FOR循环更能方便的控制游标的循环过程这是由于:

FOR循环中的循环控制变量不需要事先定义。

在游标的FOR循环之前,系统能够自动打开游标;在FOR循环结束后,系统能够自动关闭游标,不需要人为操作。

在游标的FOR循环过程中,系统能够自动执行FETCH语句;每一次循环,系统就自动执行一次FETCH语句,将游标指向的当前行记录存入循环控制变量中

例7.35 使用游标查询scott.emp表中的所有记录,并在程序块中输出工资最高的前五行记录。

DECLARE

CURSOR cur IS SELECT * FROM scott.emp ORDER BY sal DESC;

BEGIN

FOR rec IN cur LOOP

IF cur%ROWCOUNT<=5 THEN

dbms_output.put_line('ename: '||rec.ename||' sal:'||rec.sal);

ELSE EXIT;

END IF;

END LOOP;

END;

10.使用游标更新表中的数据:可以使用游标作条件,在数据表中修改、删除游标当前指向行的表中数据。

●但是需要注意,若想通过游标修改或删除数据,那么在定义游标时必须要带有FOR UPDATE子句

语法格式如下:

CURSOR cursor_name[(parameter_name datatype)]

IS select_statement

FOR UPDATE [OF column_reference] [NOWAIT];

●FOR UPDATE子句用于在游标结果集数据上加行共享锁,以防止其他用户在相应行上执行DML操作

例7.39 使用显式游标查询scott.emp表中的记录,并将工资低于3000的工资增加为原来的百分之二十。

DECLARE

CURSOR emp_cursor IS SELECT ename, sal FROM scott.emp FOR UPDATE;

BEGIN

FOR rec IN emp_cursor LOOP

IF rec.sal< 3000 THEN

UPDATE scott.emp SET sal=sal*(1+0.2) WHERE CURRENT OF emp_cursor;

END IF;

END LOOP;

COMMIT;

EXCEPTION

WHEN others THEN

ROLLBACK;

dbms_output.put_line('occurs errors!');

END;

11.异常处理(3种):

(1)系统预定义异常:由系统根据发生的错误已经定义好的异常,它们有错误编号和异常名称,用来处理常见的Oracle错误。

★常见的系统预定义异常包括:(熟练掌握)

CASE_NOT_FOUND ;DUP_V AL_ON_INDEX

TOO_MANY_ROWS ;NO_DA TA_FOUND

(2)非预定义异常:是指ORACLE已为它定义了错误编号,但没有定义异常名字。用户在使用的时候,必须先为它声名一个异常名称。

(3)用户自定义异常:用户可以自己定义违反操作的异常,并通过RAISE命令触发异常,进行相应的处理

例7.46 向scott.emp表中插入一条新记录,在执行的过程中捕获系统预定义异常、系统非预定义异常、用户自定义异常,并分别作相应的处理。

DECLARE

--系统非预定义异常的定义和关联

ex_null EXCEPTION;

PRAGMA EXCEPTION_INIT(ex_null,-01400);

--用户自定义异常的定义

ex_insert EXCEPTION;

--定义程序块变量

eno scott.emp.empno%TYPE:=&no;

e_sal scott.emp.sal%TYPE:=&salary;

BEGIN

IF e_sal>10000 THEN

RAISE ex_insert; --用户自定义异常的触发

ELSE

INSERT INTO scott.emp(empno,sal) V ALUES(eno,e_sal);

END IF;

EXCEPTION

WHEN DUP_V AL_ON_INDEX THEN --系统预定义异常的捕获和处理

dbms_output.put_line('该员工已经存在!');

WHEN ex_null THEN --系统非预定义异常的捕获和处理

dbms_output.put_line('职工编号不能为空!');

WHEN ex_insert THEN --用户自定义异常的捕获和处理

dbms_output.put_line('员工的工资不能超过10000!');

END;

第八章存储过程与函数的创建

会写一个非常简单的存储过程

例8.1 创建存储过程,输出系统的日期和时间

CREATE OR REPLACE PROCEDURE display_time

IS

BEGIN

dbms_output.put_line(systimestamp);

END display_time;

例8.2 使用三种方式调用上面创建的存储过程display_time 。

方式一:

SET SERVEROUTPUT ON

EXECUTE display_time;

方式二:

CALL display_time( );

方式三:

BEGIN

display_time;

END;

第九章索引与视图的创建

熟悉索引类型,会用语句创建索引

1.常见的索引类型包括B树索引﹑位图索引﹑反向键索引﹑基于函数的索引﹑全局索引和局部索引等

2.创建索引:

(1)创建B树索引:

例9.1 在scott.emp表的sal字段上创建一个名为index_sal的B树索引,按字段值的降序排列。

CREATE INDEX index_sal ON scott.emp(sal desc)

TABLESPACE users;

(2)创建位图索引:

例9.4 在scott.emp表中的job字段上创建位图索引bit_index。

CREATE BITMAP INDEX bit_index ON scott.emp(job) TABLESPACE users;

(3)创建反向键索引:反向键索引本质也是一个B树索引,为了避免“歪树”的产生,反向键索引对键值进行反向存储

例9.5 在scott.emp表中的empno字段上创建反向索引re_index。

CREATE INDEX re_index ON scott.emp(empno) REVERSE;

3.应用索引:Oracle中索引的应用是由优化器决定的,优化器根据优化的结果自动选择合适的索引使用。

★决定是否用索引时主要考虑两个因素:①数据表的大小②用户获取记录的多少

4.视图,创建视图的语法如下:

CREATE [OR REPLACE] [FORCE | NOFORCE] VIEW

[schema.]view_name[(column [ ,...n ] )]

AS SELECT_statement

[WITH CHECK OPTION | WITH READ ONL Y]

FORCE:表示不管视图引用的表是否存在,都要强制创建该视图

WITH CHECK OPTION:表示对视图进行插入或修改时,新数据必须满足where字句后面的条件

WITH READ ONL Y:表示视图是只读的。

例9.10 选择FORCE选项,强制创建视图。

CREATE OR REPLACE FORCE VIEW view3 AS SELECT * FROM table1;

例9.9 利用scott.emp和scott.dept两张表的连接查询创建新视图,并且为视图的字段重新命名。

CREATE OR REPLACE VIEW view2(雇员姓名, 所在部门) AS SELECT ename, dname FROM scott.emp e INNER JOIN scott.dept d ON e.deptno=d.deptno;

使用该视图浏览数据:

SELECT * FROM view2;

第十章序列和同义词的创建

熟练掌握和应用序列

1.创建序列:需要具有CREATE SEQUENCE或CREA TE ANY SEQUENCE系统权限。

例10.1 创建一个名为emp_no的序列,从1001开始,一次递增1,没有最大值,并且使用CACHE子句为序列在缓存中预先分配10个序列值,以提高获取序列值的速度。CREATE SEQUENCE emp_no

START WITH 1001

INCREMENT BY 1

NOMAXV ALUE

CACHE 10

NOCYCLE;

2.应用序列:可以使用以下命令访问序列的值:

NEXTV AL:序列生成的下一个值

CURRV AL:序列的当前值

3.管理序列:ALTER SEQUENCE 命令

第十一章触发器的创建与应用

掌握触发器概念,熟练掌握触发器类型应用时只需掌握行级触发器

1.触发器:是一种特殊的存储过程,它在执行方式上不同于一般的存储过程。触发器是通过事件触发后由系统自动调用的。

2.触发器类型:

(1)按照触发的时间分:

①BEFORE触发器,指事前触发器--在触发语句执行前触发器被触发

②AFTER触发器,指事后触发器--在触发语句执行以后触发器被触发

③INSTEAD OF触发器,指替代触发器--触发语句被触发器操作替代

(2)按照触发的事件分:

①DML触发器,对表或视图执行DML操作时触发的触发器行级触发器语句级触发器

②DDL触发器,在数据库中执行DDL操作时触发的触发器数据库级、用户级DDL触发器

③用户事件触发器

系统事件触发器

3.创建触发器:行级触发器创建触发器时若使用了FOR EACH ROW子句,则该触发器称为行级触发器

4.例11.3 为scott.emp表创建一个带有触发条件的行级触发器。当用户向emp表中插入新记录时,如果新插入的员工工资是空值,那么触发器将该工资改为0。

5.CREATE OR REPLACE TRIGGER insert_emp

6.BEFORE INSERT ON scott.emp

7.FOR EACH ROW

8.WHEN(new.sal is null)

9.BEGIN

10.:new.sal:=0;

11.END;

第十二章事务处理与并发控制

1.事务管理命令

commit是事务提交命令,表明该事务对数据库所做的修改操作将永久记录到数据库中,不能被回滚。

ROLLBACK是事务回滚命令,表明撤销未提交的事务所做的各种修改操作。

SET TRANSACTION命令设置当前事务的属性。

如设置事务的隔离级别、设置事务回滚时用的存储空间以及为事务命名等操作。

使用该命令时需要注意的事项:

该语句必须是当前事务中的第一条语句。

命令设置的事务属性只对当前事务生效,当该事务结束后,设置的属性也将失效。

第十三章数据库安全性管理

1系统权限:系统权限是指对整个数据库进行操作时需要获得的权力

2.系统权限的授权

GRANT system_privilege [,system_privilege] TO user_name [,user_name] [WITH ADMIN OPTION];

其中,WITH ADMIN OPTION 表示获得该系统权限的用户同时获得了对该系统权限的管理权(如授权和取消)

3系统权限的回收:

以system用户连接数据库后,回收zhangsan和lisi的CREATE SESSION系统权限。

CONNECT system/abcdef;

REVOKE CREATE SESSION

FROM zhangsan,lisi;

4.系预定义角色:熟练掌握概念

(1)DBA数据库管理员角色

(2)RESOURCE数据库资源角色

(3)CONNECT数据库连接角色

一般情况下,普通用户应该授予RESOURCE和CONNECT角色

第十四章数据库的备份与恢复

1.EXP导出数据:交互式执行EXP命令;预先指定参数执行EXP命令

2. IMP导入数据:用户可以使用IMP命令将EXP导出的数据再导入到数据库中

ORACLE数据库学习心得

ORACLE数据库结课论文 一个好的程序,必然联系着一个庞大的数据库网路... 今年我们学习了oracle数据库这门课程,起初的我,对这个字眼是要多陌生有多陌生,后来上课的时候听一会老师讲课,偶尔再跟上上机课,渐渐的学会了不少东西,但我感觉,我学到的仍是一些皮毛而已,怀着疑惑和求知的心态,我在网上搜索了关于oracle数据库的一些知识。 1.ORACLE的特点: 可移植性ORACLE采用C语言开发而成,故产品与硬件和操作系统具有很强的独立性。从大型机到微机上都可运行ORACLE的产品。可在UNIX、DOS、Windows等操作系统上运行。可兼容性由于采用了国际标准的数据查询语言SQL,与IBM的SQL/DS、DB2等均兼容。并提供读取其它数据库文件的间接方法。 可联结性对于不同通信协议,不同机型及不同操作系统组成的网络也可以运行ORAˉCLE数据库产品。 2.ORACLE的总体结构 (1)ORACLE的文件结构一个ORACLE数据库系统包括以下5类文件:ORACLE RDBMS的代码文件。 数据文件一个数据库可有一个或多个数据文件,每个数据文件可以存有一个或多个表、视图、索引等信息。 日志文件须有两个或两个以上,用来记录所有数据库的变化,

用于数据库的恢复。控制文件可以有备份,采用多个备份控制文件是为了防止控制文件的损坏。参数文件含有数据库例程起时所需的配置参数。 (2)ORACLE的内存结构一个ORACLE例程拥有一个系统全程区(SGA)和一组程序全程区(PGA)。 SGA(System Global Area)包括数据库缓冲区、日志缓冲区及共享区域。 PGA(Program Global Area)是每一个Server进程有一个。一个Server进程起动时,就为其分配一个PGA区,以存放数据及控制信息。 (3)ORACLE的进程结构ORACLE包括三类进程: ①用户进程用来执行用户应用程序的。 ②服务进程处理与之相连的一组用户进程的请求。 ③后台进程ORACLE为每一个数据库例程创建一组后台进程,它为所有的用户进程服务,其中包括: DBWR(Database Writer)进程,负责把已修改的数据块从数据库缓冲区写到数据库中。LGWR(Log Writer)进程,负责把日志从SGA中的缓冲区中写到日志文件中。 SMON(System Moniter)进程,该进程有规律地扫描SAG进程信息,注销失败的数据库例程,回收不再使用的内存空间。PMON (Process Moniter)进程,当一用户进程异常结束时,该进程负责恢复未完成的事务,注销失败的用户进程,释放用户进程占用的资源。

oracle数据库索引的理解与总结

索引是对数据库表中一列或多列的值进行排序的一种结构,使用索引可快速访问数据库表中的特定信息。 例如这样一个查询:SELECT * FROM TABLE1 WHERE ID = 44。如果没有索引,必须遍历整个表,直到ID等于44的这一行被找到为止;有了索引之后(必须是在ID这一列上建立的索引),直接在索引里面找44(也就是在ID这一列找),就可以得知这一行的位置,也就是找到了这一行。可见,索引是用来定位的。 建立索引的目的是加快对表中记录的查找或排序。为表设置索引要付出代价的:一是增加了数据库的存储空间,二是在插入和修改数据时要花费较多的时间(因为索引也要随之变动)。 虽然建立索引能加快对表中记录的查询或者排序速度,但是并不是索引建得越多越好,这就需要我们了解使用索引过程中,索引的一些优点以及缺陷: 使用索引的好处: 创建索引可以大大提高系统的性能: 第一,通过创建唯一性索引,可以保证数据库表中每一行数据的唯一性。 第二,可以大大加快数据的检索速度,这也是创建索引的最主要的原因。 第三,可以加速表和表之间的连接,特别是在实现数据的参考完整性方面特别有意义。 第四,在使用分组和排序子句进行数据检索时,同样可以显著减少查询中分组和排序的时间。 第五,通过使用索引,可以在查询的过程中,使用优化隐藏器,提高系统的性能。使用索引的一些不足: 第一,创建索引和维护索引要耗费时间,这种时间随着数据量的增加而增加。第二,索引需要占物理空间,除了数据表占数据空间之外,每一个索引还要占一定的物理空间,如果要建立聚簇索引,那么需要的空间就会更大。 第三,当对表中的数据进行增加、删除和修改的时候,索引也要动态的维护,这样就降低了数据的维护速度。 索引是建立在数据库表中的某些列的上面。在创建索引的时候,应该考虑在哪些列上可以创建索引,在哪些列上不能创建索引。一般来说,应该在这些列上创建索引: ?在经常需要搜索的列上,可以加快搜索的速度;在作为主键的列上,强制该列的唯一性和组织表中数据的排列结构; ?在经常用在连接的列上,这些列主要是一些外键,可以加快连接的速度; ?在经常需要根据范围进行搜索的列上创建索引,因为索引已经排序,其指定的范围是连续的; ?在经常需要排序的列上创建索引,因为索引已经排序,这样查询可以利用索引的排序,加快排序查询时间; ?在经常使用在WHERE子句中的列上面创建索引,加快条件的判断速度。 同样,对于有些列不应该创建索引。一般来说,不应该创建索引的的这些列具有下列特点: ?对于那些在查询中很少使用或者参考的列不应该创建索引。这是因为,既然这些列很少使用到,因此有索引或者无索引,并不能提高查询速度。相反,由于增加了索引,反而降低了系统的维护速度和增大了空间需求。 ?对于那些只有很少数据值的列也不应该增加索引。这是因为,由于这些列的取值很少,例如人事表的性别列,在查询的结果中,结果集的数据行占了

完美Oracle数据库知识学习文档总汇

? ?ORACLE 一.DDL(数据定义语言) Oracle自动在语句执行前后都加上commit, 则DDL之前的没提交改变被隐式提交, 不能回滚. 数据类型 1.合法表示符(标示符) 1-30个字符,以字符(可以# $ _ )开始,数据库链接可以包含(@ , )两个特殊符号. 不能包含引号,不能是保留字. 特殊情况: 数据库名称最多8个字符, 数据库链接最多128个字符, 把列名放入引号可以使用保留字作为列名. ORACLE数据库的端口默认是1521 2.NUMBER Number(precision[,scale]) precision: 有效位数总数, 1---38 , 包括小数位 scale: 小数位数,没有小数可以省略小数和小数点; 省略此参数表示一个整数;当 scale> precision,则会在有效位之前加0 3.CHAR char(size) size: 1---2000字节, 值不足size时,会自动在值后面补充空格. char(size [CHAR|BYTE]) 指出基于字符或字节,9i以上版本 考虑数据库参数 NLS_LENGTH_SEMATICS (show parameters nls_length_semantics 可以看当前设置). 4.NCHAR 与char差别在于它规定的是最大字符个数.支持Unicode可变长度的字符集. 最大也是2000字节容量. 5.VarChar2 与char差别仅仅是:不会自动在值后面补充空格.最大4000字节,默认基于字节. 6.NVarChar2 存储可变长度且基于字符数量的数据. 7.RAW

Oracle数据库试题

constraint pk_spj primary key (sno,pno,jno), constraint fk_spj_sno foreign key (sno) references s(sno), constraint fk_spj_pno foreign key (pno) references p(pno), constraint fk_spj_jno foreign key (jno) references j(jno) 实验二游标和函数 1、定义一个游标完成显示所有供应商名。 declare v_sname s.sname%type; cursor cursor_sname is select sname from s; begin for curso in cursor_sname loop dbms_output.put_line(curso.sname); end loop; end; 2、定义、调用一个简单函数:查询返回指定供应商编号的供应商名及其供应零件总数量。create or replace function fun(f_sno in s.sno%type,f_sname out s.sname%type) return number as f_qty number; begin SELECT s.sname,sum(qty) into f_sname,f_qty from s,spj WHERE s.sno=spj.sno GROUP BY s.sname,spj.sno having spj.sno=f_sno; return f_qty; end; declare v_sno s.sno%type:='&sno'; v_sname s.sname%type; v_qty spj.qty%type; begin v_qty:=fun(v_sno,v_sname); dbms_output.put_line(v_sname||v_qty); end; 3、定义一个函数:对于给定的供应商号,判断是否存在,若存在返回0,否则返回-1。写一段程序调用此函数,若供应商号存在则在spj插入一元组。

学习oracle数据库的总结(图文整理)

1、在开发环境中连接到数据库,进行基本的select查询操作; 2、熟悉plsql的使用; 3、熟悉sqlplus相关命令(登录、查询、导入导出等) 登录sqlplus: 第一:使用dos窗口登录sqlplus Sqlplus 用户名/密码@数据库实例名 Sqlplus system/密码@数据库实例名as sysdba 第二:使用oracle自带的一个sqlplus登录,提供界面,显得更简单一些。 显示当前用户名:show user; 创建一个用户:create user 用户名identified by 密码; 给用户赋予登录的权限:grant connect to 用户名;(此时才可以使用这个用户来登录这个数据库。)给其赋予dba的权限。 修改用户的密码:alter user 用户名identified by 新密码; 查询: Select * from t_user; Select id from t_user; Select name from t_user; Select birthday from t_user; Select id,name from t_user; 导入导出: 导出表: (注意,导出表的exp命令不是在sqlplus下使用的,是在dos窗口下使用的命令。) exp userid=test/sa@test tables=(qx) file=d:\e1223.dmp exp userid=test/sa@test tables=(t_user,qx) file=f:\test.dmp 导出方案: Exp userid=test/sa@test owner=test file=f:\test2.dmp 导出数据库: Exp userid=test/sa@test full=y inctype=complete file=f:\all.dmp 导入表: 下面以一个例子来说明: 看下面的图,我的用户名test,密码sa,数据库实例名test,所有的表都在这里 现在我执行导出表JD的操作:exp userid=test/sa@test tables=(jd) file=f:\jd.dmp 在我的f盘下就出现了这么一个.dmp文件

ORACLE实训心得体会

O R A C L E实训心得体会 This model paper was revised by the Standardization Office on December 10, 2020

o r a c l e实训 总结 系别:信管院班级:姓名:浦江峰学号 日期: 2012年12月21日 实训总结: 由于感到oracle实训担子很重,而自己的学识、能力和阅历与其任职都有一定的距离,所以总不敢掉以轻心,总在学习,向书本学习、向周围的同学学习,向老师请教,这样下来感觉自己半年来还是有了一定的进步。 颠末一个星期的oracle数据库实训,让我体会到了日常仄凡是很多课堂上所无法实践知晓的,让人收获颇丰,明白如何去应用。而本次数据库实训的目标是让我们把握数据库系统的原理。将理论与实践相结合,利用现有的数据库管理系统硬件、范例、科学地完成一个设计。 这个星期是我们oracle 数据库管理课的实训,经过一个星期的实训,让我领会到了许多平时课堂上所没有接受的课外知识,很让人受益匪浅,懂得如何去运用,而进行的一次分析设计综合的训练。而本次实训的目的是让我们掌握数据库系统的原理、技术。将理论与实际相结合,应用现有的数据库管理系统软件,规范、科学地完成一个设计与实现。这次我们实训的内容是从数据库、数据表的创建和修改开始的,表是建立关系数据库的基本结构,用来存储数据具有已定义的属性,在表的操作过程中,有查看表信息、查看表属性、修改表中的数据、删除表中的数据及修改表和删除表的操作。从实训中让我更明白一些知识,表是数据最重要的一个数据对象,表的创建好坏直接关系到数数据库的成败,表的内容是越具体越好,但是也不能太繁琐,以后在实际应用中多使用表,对表的规划和理解就会越深刻。我们实训的另一个内容是数据库的约束、视图、查询。从中我们了解到查询语句的基本结构,和简单select语句的使用,多表连接查询。而在视图的操作中,也了解到了视图是常见的数据库对象,是提供查看和存取数据的另一种途径,对查询执行的大部分操作,使用视图一样可以完成。使用视图不仅可以简化数据操作,还可以提高数据库的安全性,不仅可以检索数据,也可以通过视图向基表中添加、修改和删除数据。存储过程、触发器也是我们实训的内容之一,在操作中有建立存储过程,执行存储过程,及查看和修改存储过程,这些都是非常基础的东西,但对用户却是非常重要的呢,只有熟悉了t_sql语言,才能更好的掌握更多的东西。我们还学习了,数据库的管理、数据的导入、导出、备份和还原。有oracle 安全访问控制;登录账户的管理;数据库角色的管理;用户权限管理。维护数据库的安全是确保数据库正常运行的重要工作。数据的备份是对oracle数据事务日志进行拷贝,数据库备份记录了在进行备份操作的数据库中所有数据的状态。而数据的备份还分为数据库完整备份、差异备份、事务日志备份、文件及文件组备份。做数据备份就是为了以后的数据库恢复用。在实训内容上我们还做了图书管理数据库,其中的要求包含了许多数据库的对象,综合了我们所学的许多知识,让我们更努力的把所学到的东西运用上去。 实训课是在学习与探索中度过的,短暂的一星期实训是结束了,但其中让我们学到了许多知识,出现许多未知的为什么,如仓库管理数据库的初步设置、数据备份与还原的步骤,如何建立视图、触发器等一系列的问题,正是在老师和同学的共同努力之下,我们才一步步把问题解决了,最终完成了不可能完成的任务。 日期:2012年12月21日篇二:oracle实训总结 oracle数据库管理与应用实训总结 在这一周oracle数据库管理与应用的实训的时间里,实训老师针对我们本学期的学习,有针对性地对我们进行了很有价值的实训工作,从最基础的字段类型,到一般的oracle语句,如创建数据表、视图、存储过程、触发器等,给我们细心讲解,虽然oracle数据库管理与应用的课已经学习了将近一学期,但对其简单的知识点运用的都不是很熟练,没能真正去融会贯通。 不过,经过为期一周的针对性实训,我学到了很多知识,把以前学的所有知识点都贯穿到一起,又温习了一遍,让我们能从真正意义上了解到oracle数据库的用处。 不论再用到什么软件编写网站,都会用到数据库连接,都要从那个数据库中调用数据,这说明了数据库的重要性,认识到学习数据库的必要性。oracle数据库是很重要的数据库系统。在数据库实训过程中,难免会出现小错误,但经过我们的讨论研究,加上老师认真的辅导,我们会解决这些错误,从而更加熟练掌握oracle数据库。这一周不仅学到了oracle数据库的知识,还培养了我们的团队合

Oracle数据库安装学习总结

学习总结 1、配置环境的安装: 2、安装须知: a)拷下来的文件夹大概20+G,从移动硬盘(别人家的移动硬盘) 中拷出和这两个文件夹; b)1中的四个工具在Han_training_college文件夹当中,注意安装 这些程序之前先把其中的EBS_工具集_For_R12改名字去掉其 中的中文,改成比如EBS_For_R12之类的。否则安装的时候会 报错; c)安装第一个工具Developer10G的时候,需要先设置虚拟内存,

虚拟内存的设置方法:计算→系统属性→高级系统设置→高级→性能的设置→高级→虚拟内存的更改,然后更改为自定义大小,贴上我的设置: d)安装第二个文件的时候也就是安装PLSQL Developer的时候, 建议不安装他给的东西,去官网下载最新的程序 https://www.wendangku.net/doc/d116385670.html,/plsqldev1005.exe e)贴上官网给出的中文包: https://www.wendangku.net/doc/d116385670.html,/plsqldevlang/100/chinese.exe

f)安装PLSQL的时候,注意安装的时候会报警,原因是因为安装 路径不允许有空格和括号,所以就像ReadMe里面说的那样, 建议安装在C:\PLSQLdev中; g)第三个没什么要说的; h)第四个的话,需要先安装java的环境和office办公软件,java 环境说的不是jdk和jre之类的,说的是可以直接运行.jar类型 文件的java虚拟机,很小,贴上网址: https://www.wendangku.net/doc/d116385670.html,/zh_CN/ i)安装这些之前或者之后都可以,安装java的jdk和jre,具体的 配置环境变量的就不说了,很容易的; j)安装完这些之后安装虚拟机:VMware-workstation; k)然后用虚拟机打开里面的系统; l)里面是XP系统,已经配置好的XP系统; m)里面是LINUX系统; n)安装VMware-workstation可以选择安装官网最新版的10版本,这个版本支持中文版;https://www.wendangku.net/doc/d116385670.html,/ 3、建立主机和虚拟机的访问 a)这一步的目的是为了让主机和虚拟机之间能够互相Ping通, 互相Ping通的目的是为了让主机里面的PLSQLdev可以访问主 机里面的oracle服务器然后进行操作,现阶段我们操作的主要 是练习SQL语句 b)要让主机和虚拟机之间互相Ping通有两个办法:

oracle数据库学习笔记心得

select* |字段表名 from 表名 where 布尔表达式【条件】 externalcandidate 职员相关信息 contractrecruiter 猎头公司 查看表里所有字段 describe[描述] contractrecruiter select cname,nperecentagecharge from contractrecruiter 不显示原来名字,显示现在名字【用AS】 select cname as "Recruiter Name",nperecentagecharge as "Hire Fees" from contractrecruiter 不显示原来名字,显示现在名字【可不用AS】 select cname "Recruiter Name",nperecentagecharge "Hire Fees" from contractrecruiter 【双引号是否写】 双引号是为了区分大小写 职位表 position select *from position 缺额运算:[想减] select VDESCRIPTION , nbudgetedstrength, NBUDGETEDSTRENGTH -NCURRENTSTRENGTH , NYEAR from position

select VDESCRIPTION "Potion", nbudgetedstrength "Budgeted Strength" , NBUDGETEDSTRENGTH -NCURRENTSTRENGTH "Vacancies", NYEAR "Year" from position 显示非重复运行 查询来源地的人数 describe externalcandidate 查看职员城市名字 select ccity from externalcandidate 查看职员城市名字【名字不重复,插入一个关键字:distinct】select distinct ccity,cstate from externalcandidate 运算符: 两列 select vfirstname,vlastname from externalcandidate 字段拼接 select vfirstname||vlastname from externalcandidate select vfirstname||' '||vlastname from externalcandidate 学校 describe college 查看所有学校 select *from college 查看只是加利福尼亚的学校 select * from college where cstate='California' 一个条件 select vfirstname,vlastname,dbirthdate,ntestscore from externalcandidate where dbirthdate>='01-1月-70'

Oracle数据库备份与恢复总结

Oracle数据库备份与恢复总结 1. EXP/IMP (导出与导入) (6) 1.1基本命令 (6) 1.获取帮助 (6) 2.三种工作方式 (6) 3.三种模式 (7) 1.2高级选项 (7) 1.分割成多个文件 (7) 2.增量导出/导入 (8) 3.以SYSDBA进行导出/导入 (8) 4.表空间传输(速度快) (8) 1.3优化 (10) 1.加快exp速度 (10) 2.加快imp速度 (10) 3.通过unix/Linux PIPE管道加快exp/imp速度 (10) 4.全库导入的一般步骤 (12) 1.4常见问题 (12) 1.字符集问题 (12) 2.版本问题 (13) 2. SQL*LOADER (14) 2.1基本知识 (14) 1.命令格式 (14) 2.控制文件 (14) 3.数据文件 (15) 4.坏文件 (16) 5.日志文件及日志信息 (16) 2.2高级选项 (16) 1. Conventional Path Load与Direct Path Load (16) 2. SPOOL导出文本数据方法 (16) 2.3脚本 (17) 1.将表中数据记录导出为字段值用分隔符'|'分开的.dat文件 (17) 2.将数据导入到相应表中 (18) 3. OS备份/用户管理的备份与恢复(USER MANAGED BACKUP AND RECOVERY) (20) 3.1相关设置 (20) 3.1.1设置ARCHIVELOG与NONARCHIVELOG模式 (20) 3.1.2 LOGGING与NOLOGGING (21) 3.1.3归档路径 (21)

Oracle数据库心得体会

学习Oracle数据库的心得体会 对于学习Oracle数据库,应该先要了解Oracle的框架。它有物理结构(由控制文件、数据文件、重做日志文件、参数文件、归档文件、密码文件组成),逻辑结构(表空间、段、区、块),内存分配(SGA和PGA)算机的实际内存中得以分配,如果实际内存不够再往虚拟内存中写,后台进程(数据写进程、日志写进程、系统监控、进程监控、检查点进程、归档进程、服务进程、用户进程),SCN(System Change Number)。这些东西感觉都比较专业,我对它们也就是个知道,想要真真去认识我还得努力去做。虽然懂得还不是很多,起码会了基本的软件操作,老师说我们用的都是客户端,服务端看不到,也不知道服务端是什么样的,只知道客户端就挺多东西的,没有真正的去学习利用是很难掌握的。 Oracle数据库的学习使我对数据库的有了新的进步,以后再看到也就不至于什么也不懂,其实那么多数据库我觉得学好一门就行,只是他们的语言可能不大一样,学好一门后就可去认识其它的,这样应该有事半功倍的效果。就像我学习C语言,当时不能说是学习的棒,但不算差。所以我对以后的语言感觉都不是很困难,了解了https://www.wendangku.net/doc/d116385670.html,、C++还有网页中用的Html 语言、asp语言都能看懂,起码可以对别人的东西进行了一下修改。因此,我感谢Oracle数据库老师给了我有用的知识,以便我在以后学习或认识更多的内容能有新的方法和思维,也能更加有效和快速的去消化吸收新的东西。希望在今后中,Oracle能给我更多帮助,让我在我熟悉的https://www.wendangku.net/doc/d116385670.html,中运用上去,我以前的一个目标是要为学校的选课做一个选课助手来帮助大学。不过因为种种原因一直没有完成,也包括我对数据库的不了解,因为学了Oracle以后知道第一项内容是通过SQL查询后得到的,如果去把它们联系起来还不是真正明白,不过我相信我的目标能在学习Oracle后得到进展。

Oracle学习心得

1、Oracle进入数据库的命令: Sqlplus “as sysdba” 2、检查数据库是否已经成功安装: SQL>select status from v$instance; 3、删除数据库: SQL>exit 4、动态表:Oracle的动态表也是属于字典表,属于Oracle内部的表,不能手工更改数据, 动态表是因为表中的数据根据其他表的数据而变化,在Oracle中动态表通常使用“v$” 开头,v$instance为Oracle数据库的动态表之一,该表记录Oracle数据库实例的各种信息。 5、关闭数据库数据库的命令: SQL>shutdown immediate 6、继续输入启动数据库的命令: SQL>startup 7、查看数据库名称的命令 SQL>show parameter db_name Show parameter :表示查看Oracle数据库中的各种参数值。 8、如何查询数据库中的一个用户是什么状态? 可以查询数据字典表dba_users来了解用户的状态,dba_users表存储着Oracle数据库所有用户的信息。 9、字典表:是Oracle数据库的内表,在Oracle数据库中不需要创建就存在的表,不能更改 其信息。 10、查询数据库默认SCOTT用户的状态: SQL>SELECT username,account_status FROM dba_users WHERE username=’scott’ 运行情况如下: 未能查询出任何数据,这是因为:where条件后面的每个字段所表示的值是区分大小写写的,如username字段的值应该为SCOTT,如下: SQL>SELECT username,account_status FROM dba_users WHERE username=’SCOTT’;如下:

oracle数据库优化报告

oracle数据库 优化报告

目录 1、概述 (3) 2、数据库优化部分 (3) 2.1、环境优化 (3) 2.1.1 统计信息收集被关闭 (3) 2.1.2 部分索引失效 (4) 2.2、设计优化 (4) 2.2.1 设计类问题概述 (4) 2.2.2 设计类问题优化建议 (5) 2.3、SQL优化 (5) 2.3.1 SQL_ID= 7gf3typgc469a (5) 2.3.2 SQL_ID= bdcfdz26x5hm9 (6) 3、数据库优化总结 (7)

1、概述 随着应用软件用户负载的增加和愈来愈复杂的应用环境,操作系统的各项性能参数、数据库的使用效率、用户的响应速度、系统的安全运行等性能问题逐渐成为系统必须考虑的指标之一。性能测试以及优化通常通过自动化的测试工具模拟多种正常、峰值以及异常负载条件来对系统的各项性能指标进行测试,用来检测系统是否达到用户提出的性能指标,及时发现系统中存在的瓶颈,最后起到优化系统的目的。 随着需求不断增加,特别是复杂逻辑的需求,一旦出现高并发量时,也将可能导致数据库主机无法承载,因此数据库优化亟待解决。 2、数据库优化部分 从2018年1月份开始跟踪及分析,发现托管区数据库在环境、设计及SQL三方面,都存在不少问题。在SQL类优化中,本地化代码编写和设计不良,是比较明显的问题。下面将分成环境、设计、SQL优化三类进行持续分析,并给出相关建议、整改方案、整改进度。 2.1、环境优化 2.1.1 被关闭 zonghe托管区数据库统计信息未自动收集,如果未打开收集,会对系统性能造成较大的影响。

需要开启统计信息 开启方法如下: --执行 BEGIN dbms_auto_task_admin.enable(client_name => 'auto optimizer statscollection', operation => NULL, window_name =>NULL); END; 2.1.2 部分索引失效 需要将索引进行删除。删除命令参考如下: drop index index_name; 2.2、设计优化 2.2.1 设计类问题概述 序号 类型 问题描述 1 表 ZJ_KZH_DATE 、ZJ_CRM_S_ORDER_GATHER 等本 地表,设计了大量的V1,V2,需要开发人员核对需 求 2 索引 索引定义较混乱,常与其他表进行连接的表,在连接

ORACLE实训心得体会

o r a c l e实训 总结 系别:信管院班级:姓名:浦江峰学号 日期: 2012年12月21日 实训总结: 由于感到oracle实训担子很重,而自己的学识、能力和阅历与其任职都有一定的距离,所以总 不敢掉以轻心,总在学习,向书本学习、向周围的同学学习,向老师请教,这样下来感觉自己半年来 还是有了一定的进步。 颠末一个星期的oracle数据库实训,让我体会到了日常仄凡是很多课堂上所无法实践知晓的, 让人收获颇丰,明白如何去应用。而本次数据库实训的目标是让我们把握数据库系统的原理。将理论 与实践相结合,利用现有的数据库管理系统硬件、范例、科学地完成一个设计。 这个星期是我们oracle 数据库管理课的实训,经过一个星期的实训,让我领会到了许多平时课 堂上所没有接受的课外知识,很让人受益匪浅,懂得如何去运用,而进行的一次分析设计综合的训练。而本次实训的目的是让我们掌握数据库系统的原理、技术。将理论与实际相结合,应用现有的数据库 管理系统软件,规范、科学地完成一个设计与实现。这次我们实训的内容是从数据库、数据表的创建和修改开始的,表是建立关系数据库的基本结构,用来存储数据具有已定义的属性,在表的操作过程中,有查看表信息、查看表属性、修改表中的数据、删除表中的数据及修改表和删除表的操作。从实 训中让我更明白一些知识,表是数据最重要的一个数据对象,表的创建好坏直接关系到数数据库的成败,表的内容是越具体越好,但是也不能太繁琐,以后在实际应用中多使用表,对表的规划和理解就 会越深刻。我们实训的另一个内容是数据库的约束、视图、查询。从中我们了解到查询语句的基本结构,和简单select语句的使用,多表连接查询。而在视图的操作中,也了解到了视图是常见的数据库对象,是提供查看和存取数据的另一种途径,对查询执行的大部分操作,使用视图一样可以完成。使 用视图不仅可以简化数据操作,还可以提高数据库的安全性,不仅可以检索数据,也可以通过视图向 基表中添加、修改和删除数据。存储过程、触发器也是我们实训的内容之一,在操作中有建立存储过程,执行存储过程,及查看和修改存储过程,这些都是非常基础的东西,但对用户却是非常重要的呢,只有熟悉了t_sql语言,才能更好的掌握更多的东西。我们还学习了,数据库的管理、数据的导入、 导出、备份和还原。有oracle 安全访问控制;登录账户的管理;数据库角色的管理;用户权限管理。维护数据库的安全是确保数据库正常运行的重要工作。数据的备份是对oracle数据事务日志进行拷贝,数据库备份记录了在进行备份操作的数据库中所有数据的状态。而数据的备份还分为数据库完整备份、差异备份、事务日志备份、文件及文件组备份。做数据备份就是为了以后的数据库恢复用。在实训内 容上我们还做了图书管理数据库,其中的要求包含了许多数据库的对象,综合了我们所学的许多知识,让我们更努力的把所学到的东西运用上去。 实训课是在学习与探索中度过的,短暂的一星期实训是结束了,但其中让我们学到了许多知识,出现许多未知的为什么,如仓库管理数据库的初步设置、数据备份与还原的步骤,如何建立视图、触 发器等一系列的问题,正是在老师和同学的共同努力之下,我们才一步步把问题解决了,最终完成了 不可能完成的任务。 日期:2012年12月21日篇二:oracle实训总结 oracle数据库管理与应用实训总结 在这一周oracle数据库管理与应用的实训的时间里,实训老师针对我们本学期的学习,有针对 性地对我们进行了很有价值的实训工作,从最基础的字段类型,到一般的oracle语句,如创建数据表、视图、存储过程、触发器等,给我们细心讲解,虽然oracle数据库管理与应用的课已经学习了将近一学期,但对其简单的知识点运用的都不是很熟练,没能真正去融会贯通。 不过,经过为期一周的针对性实训,我学到了很多知识,把以前学的所有知识点都贯穿到一起,又温习了一遍,让我们能从真正意义上了解到oracle数据库的用处。 不论再用到什么软件编写网站,都会用到数据库连接,都要从那个数据库中调用数据,这说明了数据库的重要性,认识到学习数据库的必要性。oracle数据库是很重要的数据库系统。在数据库实训 过程中,难免会出现小错误,但经过我们的讨论研究,加上老师认真的辅导,我们会解决这些错误, 从而更加熟练掌握oracle数据库。这一周不仅学到了oracle数据库的知识,还培养了我们的团队合

大学oracle数据库总结(考试必备)

1.下列选项中,关于序列的描述哪一项不正确?(任何时候都可以使用序列的伪列CURRVAL返回当前序列。) 2.oracle中,用来判断列值为空的操作符是(IS NULL) 3.下列选项中,那一部分不是oracle实例的组成部分?(控制文件) 4.使用传统导出工具EXP导出SCOTT用户的所有对象时,应该选择下列哪一项?(SCHEMAS) 5.在oracle中,一个用户拥有所有数据库对象统称:(模式) 6.在oracle中,使用HAVING子句亦可以进行条件查询,以下选项说法正确的是(HAVING子句用于对已分组结果的条件查询) 7.视图头部中的RETURN语句的作用是什么?(声明返回值的数据类型) 8.有字符串数据“TEST”,分别存放到char(10)和varchar(10)类型的字段中,其实际存储长度为:(10 4) 9.下列哪一个动作不会激发一个触发器?(查询数据) 10对于下面的函数,哪个语句将成功调用?(Sum:=Calc_Sum(23,12))11.DELETE FROM S WHERE 年龄>60的语句功能:S表中年龄大于60岁的记录被加上删除标记 12.GROUP BY子句的作用是什么?(查询结果的分组条件) 13.查看下面的语句构建了哪一种索引?(复合索引) 14.下列哪个语句会终止事务(COMMIT) 1.(表空间)是oracle中可以使用的最大的逻辑存储结构,(数据块)是oracle逻辑存储结构中最小的I/O单元。 2.PL/SQL程序块主要包括3个主要部分:声明部分、可执行部分、(异常处理部分)。 3.查看操作数据表中所影响的行数,可通过游标的(%ROWCOUNT)属性实现。 4.(角色)是具有名称的一组相关权限的组合。 5.oracle数据库系统的物理存储结构主要由3类文件组成,分别为数据文件、(控制文件)、(重做日志文件)。 6.在SQL PLUS命令行下,查看EMP表的结构应使用(describe)命令。 7.自定义异常必须使用(raise)语句引发。 8.在oracle10g版本以前,对撤销信息的管理采用(回滚段),从oracle10g后采用(自动UNDO管理)方式管理撤销信息。

Oracle知识点总结

Oracle知识点总结 根据阎赫老师讲义整理Zealjiang 1、Oracle数据库的安装和配置 ⑴Oracle Internet级数据库 SQLServer 中小企业级数据库 Access 桌面级数据库 ⑵Oracle的安装 注意:来源和目标的目录不允许有中文或空格 ⑶Oracle数据库启动时必需开启的后台服务 ①OracleOrahome90TNSListener 使第三方的软件或语言访问 ②OracleServiceETC Oracle的实例 CRUD 增删改查 注意:②中的ETC是你起的实例的名字 ⑷Oracle的开发工具 ①DOS界面的开发平台 -> 运行->sqlplus ②Oracle本身基于DOS的平台 ->运行-> sqlplusw ③Oracle Enterprise Manager Console ④PL/SQL Developer7.1.5 ⑸创建一个表的完整流程 ①创建一个数数库 例子:创建一个数据库 ETC , 物理文件放在F:\ ,初始化1m ,自增长开启 create tablespace etc

datafile 'f:\etc.dbf' size 1m autoextend on; 删除表空间 drop tablespace 数据库名称; ②为该数据库创建一个帐号和密码 语法: create user 用户名称 identified by 密码 default tablespace 数据库名称 注意:1、在Oracle中账号和数据库one2one绑定 2、Oracle的密码不允许为纯数字或空 3、需要在system账号完成动作 修改Oracle的账号密码 语法:alter user 用户 identified by 新密码 ③用grant 权限 to 用户为该帐户授权 语法: grant 权限名称 to 用户; 撤销权限 语法:revoke 权限名称 from 用户名; ④在该帐号下创建表

oracle数据库学习总结.doc

oracle数据库学习总结 篇一:oRAcLE数据库学习心得 oRAcLE数据库结课论文 一个好的程序,必然联系着一个庞大的数据库网路... 今年我们学习了oracle数据库这门课程,起初的我,对这个字眼是要多陌生有多陌生,后来上课的时候听一会老师讲课,偶尔再跟上上机课,渐渐的学会了不少东西,但我感觉,我学到的仍是一些皮毛而已,怀着疑惑和求知的心态,我在网上搜索了关于oracle数据库的一些知识。 1.oRAcLE的特点: 可移植性oRAcLE采用c语言开发而成,故产品与硬件和操作系统具有很强的独立性。从大型机到微机上都可运行oRAcLE的产品。可在UNIX、doS、windows等操作系统上运行。可兼容性由于采用了国际标准的数据查询语言SqL,与Ibm的SqL/dS、db2等均兼容。并提供读取其它数据库文件的间接方法。 可联结性对于不同通信协议,不同机型及不同操作系统组成的网络也可以运行oRAˉcLE数据库产品。 2.oRAcLE的总体结构 (1)oRAcLE的文件结构一个oRAcLE数据库系统包括以下5类文件:oRAcLERdbmS的代码文件。 数据文件一个数据库可有一个或多个数据文件,每个数据文件可以存有一个或多个表、视图、索引等信息。

日志文件须有两个或两个以上,用来记录所有数据库的变化, 用于数据库的恢复。控制文件可以有备份,采用多个备份控制文件是为了防止控制文件的损坏。参数文件含有数据库例程起时所需的配置参数。 (2)oRAcLE的内存结构一个oRAcLE例程拥有一个系统全程区(SGA)和一组程序全程区(PGA)。 SGA(SystemGlobalArea)包括数据库缓冲区、日志缓冲区及共享区域。PGA(ProgramGlobalArea)是每一个Server进程有一个。一个Server 进程起动时,就为其分配一个PGA区,以存放数据及控制信息。(3)oRAcLE的进程结构oRAcLE包括三类进程: ①用户进程用来执行用户应用程序的。 ②服务进程处理与之相连的一组用户进程的请求。 ③后台进程oRAcLE为每一个数据库例程创建一组后台进程,它为所有的用户进程服务,其中包括: dbwR(databasewriter)进程,负责把已修改的数据块从数据库缓冲区写到数据库中。LGwR(Logwriter)进程,负责把日志从SGA中的缓冲区中写到日志文件中。 SmoN(Systemmoniter)进程,该进程有规律地扫描SAG进程信息,注销失败的数据库例程,回收不再使用的内存空间。PmoN (Processmoniter)进程,当一用户进程异常结束时,该进程负责恢复未完成的事务,注销失败的用户进程,释放用户进程占用的资源。ARcH(ARcHIVER)进程。每当联机日志文件写满时,该进程将其拷贝到归档存储设备上。另外还包括分布式db中事务恢复进程REco和

Oracle数据库知识总结

AD1. 执行一个SQL脚本文件 SQL>start file_name SQL>@ file_name 我们可以将多条sql语句保存在一个文本文件中,这样当要执行这个文件中的所有的sql语句时,用上面的任一命令即可,这类似于dos中的批处理。 4. 将显示的内容输出到指定文件 SQL> SPOOL file_name 在屏幕上的所有内容都包含在该文件中,包括你输入的sql语句。 5. 关闭spool输出 SQL> SPOOL OFF 只有关闭spool输出,才会在输出文件中看到输出的内容。 7. COL命令: 主要格式化列的显示形式。 1). 改变缺省的列标题 COLUMN column_name HEADING column_heading For example: Sql>select * from dept; DEPTNO DNAME LOC ---------- ---------------------------- --------- 10 ACCOUNTING NEW YORK sql>col LOC heading location sql>select * from dept; DEPTNO DNAME location --------- ---------------------------- ----------- 10 ACCOUNTING NEW YORK 2). 将列名ENAME改为新列名EMPLOYEE NAME并将新列名放在两行上: Sql>select * from emp Department name Salary ---------- ---------- ---------- 10 aaa 11 SQL> COLUMN ENAME HEADING ’Employee|Name’ Sql>select * from emp Employee Department name Salary ---------- ---------- ---------- 10 aaa 11 note: the col heading turn into two lines from one line. 3). 改变列的显示长度: FOR[MAT] format Sql>select empno,ename,job from emp; EMPNO ENAME JOB ---------- ---------- --------- 7369 SMITH CLERK

相关文档