文档库 最新最全的文档下载
当前位置:文档库 › Oracle数据库开发知识点

Oracle数据库开发知识点

Oracle数据库开发知识点
Oracle数据库开发知识点

Oracle数据库开发指南

前言

参考

第一部分基础

一、数据库对象

表空间Tablespace:存储数据库对象的容器

模式Schema

表Table

表名最长为30个字符,不能以数字开头。一个表最多254个列。

CREATE TABLE tablename AS select_statement,通过子查询建立新表

DESC tablename,查看表或其它数据库对象的定义

ALTER TABLE tablename RENAME new_tablename,修改表名

RENAME tablename TO new_tablename,修改表名,注意修改表名后,视图必须重建。

索引Index

保证表中数据的唯一性;减少定位和检索数据所需要的I/O操作

Oracle允许对列值创建索引,也可对表达式创建索引。所以既可是UNIQUE,也可是UNIQUE

Oracle对DESC(降序)索引认为是基于函数的索引。

序列Sequence

使用序列为表的码值生成唯一的序列值

聚簇Cluster

视图View

由一个预定义的查询构成,可看作为数据库的逻辑表。

SELECT text_length FROM user_views WHERE view_name = …viewname?

Set long 5000

SELECT text FROM user_views WHERE view_name = …viewname?

快照Snapshot

快照与视图都是基于查询结果的。但快照使用物理的存储空间,快照中的数据一般都是静态的,只有刷新时才改变。

快照的目的是提供某个时间点的数据。

二、数据类型

CHAR(n),255字符

V ARCHAR2(n):2000字符

LONG,2G字符,只能用在列SELECT列表,UPDATE语句的SET子句或INSERT语句的V ALUES子句中,一个表中只能有一个LONG列,LONG列不能建索引,也不能有完整性约束,不能用于表达式。DATE

NUMBER(p,s),s可以小于0,最高有效位38位

RAW,255个字节,存储二进制数据

LONG RAW,存储大型二进制数据

第二部分Oracle查询

基本查询

SELECT DISTINCT

表别名

列别名

使用表达式

数值型:+、-、*、/

日期型:+、-

字符串连接:||

函数

条件和组合查询

逻辑操作符:=、!=、<>、<、>、<=、>=

范围操作符:BETWEEN

值集操作符:IN、NOT IN

模式匹配:LIKE …_?或…%?

组合逻辑连接符:AND、OR、NOT

伪列

实际上在表中不存在,但查询时能返回一个值。

Sequence.CURRV AL和Sequence.NEXTV AL

SELECT sequence_name.NEXTV AL FROM dual

SELECT sequence_name.CURRV AL FROM dual

一旦选择了Sequence.NEXTV AL,该值便不能再重用

ROWID,记录的物理存储位置

ROWNUM,检索的结果数据的序列号

SELECT userid,email FROM awoke WHERE rownum<20 ORDER BY userid

SYSDA TE,当前日期和时间

SELECT sysdate+3 FROM dual

LEVEL,查询的深度,用于Oracle高级查询的树查询

空值

IS NULL

Oracle的NVL函数,通知查询用一个值来代替出现的空值

多表连接查询

笛卡儿连接:列出关联表的全部叉积

内连接:抛弃不匹配的记录行

外联接

查询连接

UNION操作符(+)

(SELECT DISTINCT userid,email FROM awoke ) UNION (SELECT …libo?,?libo@https://www.wendangku.net/doc/4218226120.html,?)

INTERSECT操作符(^)

(SELECT userid,email FROM awoke WHERE userid LIKE '1') INTERSECT (SELECT '1','fds' FROM dual) MINUS操作符(-)

(SELECT DISTINCT userid,email FROM awoke) MINUS (SELECT DINSTINCT userid,email FROM awoke)

子查询和动态视图

子查询用在条件WHERE子句

动态视图用在FROM子句,类似普通表,但无法用组成动态视图的各原始表上的索引。

TRUNCATE TABLE tablename,快速删除表中所有记录,且不能回滚

Dual内部表

第二部分Oracle函数

标准函数

转换函数

TO_CHAR(number[,format]),format类型

TO_CHAR(date,format),?Q?为季度y q m d h m s

TO_DATE(string,format)

TO_NUMBER(number[,format])

日期函数

ADD_MONTHS(date,number),输入日期加上指定的月数后产生的新日期,允许负数和小数

LAST_DAY(date),输入日期的所在月份的最后一天

MONTHS_BETWEEN(date1,date2),返回两个日期之间的月份,小数部分为月中剩余部分,第二个日期若早则返回负数

NEXT_DA T(date,day),返回输入日期指定若干天后的日期,day为字符型

本周日SELECT NEXT_DAY(sysdate,'SUNDAY') FROM dual

上周五SELECT NEXT_DAY(sysdate-7,'SUNDAY') FROM dual

ROUND(date,format),把一个日期四舍五入至最接近格式元素指定的形式。

SQL>SELECT TO_CHARr(sysdate,'YYYY-MM-DD HH24:MI:SS') cur_date , TO_CHAR(ROUND(sysdate,'MM'),'YYYY-MM-DD HH24:MI:SS') round_date from dual;

结果:

CUR_DATE:2003-04-26 12:00:01

ROUND_DATE:2003-05-01 00:00:00

TRUNC(date,format),按格式掩码输入日期后返回

SQL>SELECT TO_CHARr(sysdate,'YYYY-MM-DD HH24:MI:SS') cur_date , TO_CHAR(TRUNC(sysdate,'MM'),'YYYY-MM-DD HH24:MI:SS') trunc_date from dual;

结果:

CUR_DATE:2003-04-26 11:59:11

TRUNC_DATE:2003-04-01 00:00:00

数值函数

ABS(number),返回绝对值

CEIL(number),返回大于等于输入值的下一个整数

FLOOR(number),返回小于等于输入值的最大整数

MOD(n,m),返回n除m的模

ROUND(number,decimal_digits),四舍五入,小数位可以为0和负数

SIGN(number),返回输入值的符号

SQRT(number),返回输入数据的平方根

TRUNC(number[,decimal_pluces]),在指定的小数位上把数值截断。

字符函数

字符和ASCII码转换

ASCII(character)、CHR(number)

CONCAT(string1,string2),字符串连接函数,等同于?||?,尽可能使用?||?

INITCAP(string),将字符串中每个单词的第一个字母变成大写,其余字符为小写

SQL> SELECT INITCAP('WE'||' '||'are'||' '||'the world') FROM dual;

结果:We Are The World

INSTR(input_string,search_string[,n,[m]]),从字符串中的第n个字符开始查找搜索字符串底第m次出现。注意是字节数。

SQL>SELECT INSTR('时光软件cicro时光宽带','时光',1,2) FROM dual;

结果:14

LENGTH(string),返回字符串字节长度,

大小写转换

LOWER(string),UPPER(string)

删除串中字符

LTRIM(string[,set_of_chars]),删除所有前导字符,默认为空格

SQL> SELECT LTRIM('ccsc','c') FROM dual;

结果:

sc

RTRIM(string[,set_of_chars]),删除所有后继字符,默认为空格

TRIM(string),去掉左右空格

TRIM([LEADING\TRAILING\BOTH] trim_char\trim_char FROM trim_source)

SQL> SELECT TRIM( 'c' FROM 'ccsc') FROM dual;

结果:

s

填充串中字符

LPAD(string,n[,pad_chars]),在字符串左边填充上pad_chars指定的字符(不指定为空格),使其总长为n RPAD(string,n[,pad_chars]),在字符串右边填充。

字符排序

NLSSORT(string[,nlsparms]),对字符串按字符集中的字符序列进行排序,缺省为ASCII。

SUBSTR(string,start[,length]),子串处理

字符转换

CONVERT(char_value,target_char_set,source_char_set),将字符串从一个字符集转换到另一个字符集REPLCAE(string,search_string[,replace_string]),字符串替换,将所有出现在搜索字符集中的字符串转换成替换字符串。

TRANSLA TE(string,search_set[,replace_set]),字符替换,将所有出现在搜索字符集中的字符转换成替换字符集中的相应字符。

SQL>

SELECT TRANSLA TE('haha','abcdefghijklmnopqrstuvwxyz','bcdefghijklmnopqrstuvwxyza') FROM dual;

结果:

Ibib

单行函数

GREATEST(list of values),返回列表中项的最大值或最近日期

LEAST(list of valuss) ,返回列表中项的最小值或最早日期

NVL(expression,replacement_value),空值转换

NVL2(expression1, expression2, expression3),空值转换,如果expression1非空,则返回expression2,为空则返回expression3

多行函数

A VG(expression),平均值

COUNT(expression),个数

MAX(expression),最大值

MIN(expression),最小值

SUM(expression),求和

STDDEV(expression),统计标准偏差

V ARIANCE(expression),统计方差

第三部分Oracle复杂查询

递归查询

树查询

两个子句

CONNECT BY定义表中的各行的关系

START WITH定义数据行查询的初始起点

向下浏览

SELECT org_id,org_name,supervisor_org_id FROM org

CONNECT BY supervisor_org_id = PRIOR org_id

START WITH supervisor_org_id IS NULL;

PRIOR关键字指定当前选定行的supervisor_org_id必须等于前面已选择过的数据行的org_id。

向上浏览

SELECT org_id,org_name,supervisor_org_id FROM org

CONNECT BY org_id = PRIOR supervisor_org_id

START WITH org_name = …Development II?;

不显示某些分支

在CONNECT BY子句中添加条件

连接树查询与其它表

Oracle不允许使用SELECT语句在树查询中连接其它表,

SELECT e.emp_name,d.dept_name FROM emp e, dept d

WHERE e.dept_id = d.dept_id

CONNECT BY e.supervisor_emp_id = PRIOR e.emp_id

START WITH e.supervisor_emp_id IS NULL

但可以通过使用查询的FROM子句中的动态视图来创建树查询作为一个独立块执行连接操作。

SELECT e.emp_name,d.dept_name

FROM emp e, dept d,

(

SELECT emp_id FROM emp

CONNECT BY supervisor_emp_id = PRIOR emp_id

START WITH supervisor_emp_id IS NULL

) e2

WHERE e.emp_id = e2.emp_id AND e.dept_id = d.dept_id

外连接

对于在连接表中没有匹配行的数据,可采用外连接。外连接即在被连接的表中加入一个空行来与没有匹配行的数据进行匹配。

在WHERE子句中,在表后放置(+)表示在该表中加入一个空行。

注意,外连接的访问路径是基于单表连接条件的。

使用外连接可执行数据完整性检查,替代性能低的IN 子查询

相关子查询

特殊的子查询,在主查询的WHERE子句中定义选择条件。相关子查询就是在其条件中引用了主查询中的

表的子查询。

EXISTS条件用来判断是否有数据行满足指定的相关条件

NOT EXISTS条件与EXISTS相反。

基本原则:

可以使用简单查询就不要使用相关子查询做相同的事情

如果子查询只返回少量的数据,则相关子查询的效率不高;如果对主查询的每一个实际,相关子查询都返回大量的数据,则应采用子查询。

如果相关子查询是基于子查询表的主键,最好不用相关子查询。

在基于子查询的查询中,应使用NOT EXISTS条件,而不要用NOT IN条件,原因是该条件未使用索引。

第四部分Oracle查询高级技术

DECODE

Oracle函数

注:

标准SQL语句中以CASE函数体现,MYSQL、SQL Server等数据库支持CASE函数,但Oracle不支持。但Oracle的DECODE函数较为灵活。

DECODE(expression,val1,trans1,val2,trans2,…valn,transn,default)

即:

IF expression == val1 THEN

RETURN trans1;

ELSE IF expression == val2 THEN

RETURN trans2;

ELSE IF expression == valn THEN

RETURN transn;

ELSE

RETURN default;

DECODE函数支持嵌套。

按照订单状态进行排序;1未确认,2已确认未受理,3已受理未送达,4已送达,6失效

SELECT ordered,

DECODE(order_status,?1?,?未确认?,?2?,?已确认未受理?,?3?,?已受理未送达?,?4?,?已送达?,?失效?) orderStatus

FROM order

ORDER BY order_status

统计

GROUP BY … HA VING

HA VING 子句用于将返回的数据行进行一次筛选。

至少有10种商品的商户

SELECT https://www.wendangku.net/doc/4218226120.html,pname,count(goods.goodsid) FROM company,goods

WHERE https://www.wendangku.net/doc/4218226120.html,pid = https://www.wendangku.net/doc/4218226120.html,pid(+)

GROUP BY https://www.wendangku.net/doc/4218226120.html,pname HA VING count(goods.goodsid)>=10

在动态视图中使用GROUP BY

在FROM子句中使用GROUP BY 子句,可以将组查询结果数据作为查询的选择条件。

查找工资低于本部门平均工资20%的雇员信息

SELECT

d.dept_name,

e.emp_last_name,e.salary,g.avg_salary

FROM

dept d, emp e, (SELECT dept_id, avg(salary) avg_salary FROM emp GROUP BY dept_no) g WHERE

e.dept_id = d.dept_id AND e.dept_id = g.dept_id AND e.salary<=0.8*g. avg_salary

报表矩阵

通过DECODE函数和分组子句

计算每个商户在2002年每个季度的订单成交额

SELECT https://www.wendangku.net/doc/4218226120.html,pname, SUM(od.price*od.goodsnum),TO_CHAR(o.createdate,?Q?) OrderMonth FROM company c, order o, orderdetail od

WHERE https://www.wendangku.net/doc/4218226120.html,pid = https://www.wendangku.net/doc/4218226120.html,pid

AND o.orderstatus = …4?

AND o.orderid = od.orderid

AND o.createdate BETWEEN …2002-01-01? AND …2002-12-31?

GROUP BY https://www.wendangku.net/doc/4218226120.html,pname, TO_CHAR(o.createdate,?Q?)

按矩阵形式表现上面的查询结果

SELECT https://www.wendangku.net/doc/4218226120.html,pname,

SUM(DECODE(TO_CHAR(o.createdate,?Q?),?1?, (od.price*od.goodsnum),0) )“2002-1Q”, SUM(DECODE(TO_CHAR(o.createdate,?Q?),?2?, (od.price*od.goodsnum),0) )“2002-2Q”, SUM(DECODE(TO_CHAR(o.createdate,?Q?),?3?, (od.price*od.goodsnum),0) )“2002-3Q”, SUM(DECODE(TO_CHAR(o.createdate,?Q?),?4?, (od.price*od.goodsnum),0) )“2002-4Q”FROM company c, order o, orderdetail od

WHERE https://www.wendangku.net/doc/4218226120.html,pid = https://www.wendangku.net/doc/4218226120.html,pid

AND o.orderstatus = …4?

AND o.orderid = od.orderid

AND o.createdate BETWEEN …2002-01-01? AND …2002-12-31?

GROUP BY https://www.wendangku.net/doc/4218226120.html,pname

自身表连接

显示代码分类表中每个分类名称及上级分类名称

SELECT a.deptname,b.deptname FROM dept a , dept b WHERE a.fatherid = b.deptid

第五部分数据修改操作

一次基于一个表

提交和回滚

Insert插入

插入单行

插入多行

通过与SELECT集成,可将SELECT检索出来的数据插入至表中。

INSERT INTO table_copy (tid,tname)

SELECT tid,tname FROM table_source WHERE tid LIKE …%aaa?

从其它表拷贝数据

CREATE TABLE table_copy AS SELECT …

Update修改

UPDA TE语句也可以同INSERT语句一样使用SELECT语句

Delete删除

TRANCATE快速删除

因为删除记录要将数据存储在系统回滚段对象中,以便以后恢复时用。所以大量数据的删除将花费大量的时间。

使用TRANCATE语句可将表中数据及该表上的所有索引项全部删除。该语句不带条件,且删除后不能回滚。

第六部分数据库对象

为何使用

简化系统功能,高效。

索引

提供唯一键码,提高性能。

索引不存储空值。

索引类型包括:唯一(PERIMARY KEY和UNIQUE约束)和非唯一索引。

任何表上都不应超过5个索引,否则插入、删除和修改操作将会很慢。

何时不用索引:

没有WHERE子句

只有少量数据行的表

被索引的列在WHERE子句的表达式或函数中

被索引的列使用了否定操作符或者与NULL 比较(IS NULL)

聚簇CLUSTER

基于码值的存储方法,新行并不都存储在同一个Oracle块中,而是根据它们的码值存储在不同的Oracle块中,共有两类聚簇:索引聚簇和散列聚簇。

索引聚簇可根据某个共同码值将多个表的数据存储在同一个Oracle块中(表间连接最多可基于16列),如果某个应用程序经常同时存取两个表,就可以把这两个表的数据存储在数据库的相同位置。例如:订单表和订单明细表。

索引聚簇的缺点是当只访问一个表时,性能会降低。

索引聚簇的创建步骤:

创建一个聚簇,并指定用于连接两个表的列的数据类型和大小;

CREATE CLUSTER order_orderdetail_cluster(ordered V ARCHAR2(16));

在该聚簇上创建索引

CREATE INDEX order_orderdetail_index ON CLUSTER order_orderdetail_cluster;

创建表,并在CREA TE TABLE语句后面指明存储在该聚簇中的表和表中哪些列存储数据

CREATE TABLE order(ordered V ARCHAR2(16) NOT NULL,companyid V ARCHAR2(16));

CREATE TABLE orderdetail(ordered V ARCHAR2(16) NOT NULL,goodsid V ARCHAR2(16));

向这两个表插入数据后,两个表中的行具有相同的ROWID块。

查询下面的语句将会很快

SELECT https://www.wendangku.net/doc/4218226120.html,panyid,a.ordered,b.goodsid

FROM order a,orderdetail b

WHERE a.orderid=b.orderid

散列聚簇只有一个表,类似与Hashtable,当知道码值时,使用散列聚簇可加快完全匹配速度,但如果使用码值范围和通配符,则应使用索引。

可在一个表上同时建立索引和散列聚簇。

散列聚簇的缺点是如果码值不是平均分布的,用户访问所有具有相同码值的数据行时,会降低性能。

散列聚簇的创建步骤:

创建一个散列聚簇对象,指定码列的数据类型、数据行的大小以及不同码值的个数,这些信息用于确定数据行的存储位置和为该散列聚簇分配的初始存储空间大小。

CREATE CLUSTER customer_clu (customerid V ARCHAR2(16))

SIZE 1K

HASH IS customerid

HASHKEY 200;

创建表

CREATE TABLE customer (…) CLUSTER customer_clu(customer_id)

使用散列聚簇

SELECT customer_name FROM customer WHERE customerid = …100300?;

单表聚簇

与索引聚簇相似,但是在同一个表中。

使用聚簇的优点:

不用减少存取数据的Oracle块数

不用索引直接存取数据

码值使用较少的存储空间

使用聚簇的缺点:

降低插入的速度

降低全表扫描的速度

序列SEQUENCE

序列是用来快速生成序列数的Oracle数据库对象,可为数据行提供一个系统生成的码值。

使用序列可以不用等待释放锁,多个进程可以同时从该序列中获得下一个值。

CREATE SEQUENCE goods_seq

INSERT INTO goods (goodsid,goodsname) V ALUES(goods_seq.NEXTV AL,?PC Server?)

创建序列的其它选项

INCREMENT BY,每次递增值,可以为负值,最大值为10的27次方

START WITH,从几开始

MAXV ALUE,最大值

MINV ALUE,最小值

CYCLE,到最大值后回到最小值

CACHE,每次缓存序列值的个数

序列的缺点:

生成序列数后,不能回滚,因此序列值可能不是连续的。

视图

视图是一个存储的SQL语句,视图不保存数据的拷贝,因此通过视图看到的数据都是最新的。

对简单视图可以进行增删改操作。

视图的列名和底层查询中被选择出来的列名是一样的。如果列名用于函数或者用在该查询SELECT部分的表达式中,则必须使用别名,并且这个别名就是通过视图看到的信息。

视图的创建

CREATE OR REPLACE VIEW view_order AS

SELECT https://www.wendangku.net/doc/4218226120.html,panyname,a.ordered

FROM company a , order b

WHERE https://www.wendangku.net/doc/4218226120.html,panyid = https://www.wendangku.net/doc/4218226120.html,panyid

使用

SELECT * FROM view_order;

视图的优点

简化对复杂数据的访问

可以使用视图对表中数据进行及时概括。即使表中的数据改变了,视图也总能得到最新的信息。

简化编程

数据独立,由于应用程序基于视图而不是实际的表,可以获得一层数据独立性。

数据库链接

数据库链接是其它Oracle或非Oracle数据库的别名,使用数据库链接可以访问另一个数据库中的表和其它数据对象,只要在SQL语句中的远程表名后加上@,后面加上数据库链接名即可。

需要由DBA进行下层网络协议的配置。

同义词

同义词是其它数据库对象的别名。

当我们在应用程序开发时,使用同义词可避免硬编码。

第七部分事务处理

事务是包含一组修改(增删改)工作的逻辑单位。事务要么被保存到数据库,要么被回滚。一旦事务被提交到数据库,它就不能被回滚。

缺省情况下,Oracle会自动锁住INSERT、UPDATE或DELETE影响的数据行,不需要任何编码。只有受实际影响的行才被锁住,Oracle不会锁住整个表或整个数据块。

第一个获得封锁的用户可以继续工作,而其他想更新相同数据的用户必须等待该锁被释放。

SELECT FOR UPDA TE

在执行INSERT、UPDA TE或DELETE语句前锁住满足一定条件的数据行,这时可用SELECT FOR UPDA TE语句。SELECT FOR UPDA TE子句后面必须跟上一列或几列的名字;但在修改时,却没有关系。封锁只对记录一级。

如果这些行已经被锁住,则执行SELECT FOR UPDA TE就会等待,导致应用无法执行。使用NO WAIT 选项,那么碰到这种情况,SELECT FOR UPDA TE语句会失败,而不是等待。

死锁

两个或多个进程在相互等待对方释放锁时会出现死锁问题。

上面两个事务出现了死锁。

避免死锁

一个简单办法,使用数据库的应用程序最好以相同顺序对表进行封锁。

DDL语句和事务

事务中的DDL语句执行后自动进行COMMIT提交处理,它之前的语句如果是修改语句将不能再回滚。

第八部分PL/SQL介绍

PL/SQL是Orcale对SQL语言的程序化扩展。主要用在Oracle存储过程和触发器。

具体语法见PL/SQL参考资料。

第九部分数据库约束、触发器和过程

约束

主键、外键、UNIQUE、NOT NULL、CHECK、REFERENCE(FOREIGN KEY)

软件包、存储过程、函数、触发器

第十部分性能优化

1、设置Oracle数据库SGA,设置共享内存

2、游标Statement,为了优化使用共享缓冲池区中的游标区,应建立并遵从一定的编码标准,使SQL语句

看上去完全相同。使用过程、函数创建可重用代码,也可保证使用少量的游标。

3、当在线用户数大于500时,使用多线程服务器(MTS)

4、查询优化器:基于规则和基于代价

第十一部分基于Oracle数据库的项目开发方式

第十二部分JDBC使用注意事项

第十三部分试题

数据库及Oracle基础知识培训自学教材试题_V1 0

Oracle初级试题 一、选择题(20% 不定项每题2分) 1.对于Oracle用户方案下,根据模式/映像,请选出不属于模式的对象(D) A.表B.索引C.视图D.约束 2.在客户端配置哪个文件,可以使客户端访问oracle server?(A) A.tnsnames.ora B.sqlnet.ora C.listener.ora D.init.ora 3.搜索列中的数据,但只记得部分字符串,通常可以用以下哪种运算?(C) A.in B.between C.like D.exists 4.如从表中删除了一条记录,以下哪个语句可以保存数据库中的改变?(B) A.savepoint B.commit C.rollback D.update 5.下面关于视图的说法,请选出正确的(ABCD) A.一个视图可以创建为只读 B.一个视图可以用来连接两张或更多的表而被创建 C.在视图中不能含有order by子句 D.在视图中不能含有group by子句 6.在select语句中包含了where子句,请问group by子句可以放在哪里?(D) A.where子句前面 B.from子句前面 C.order by子句后面 D.where子句后面 7.关于having子句,以下说法正确的是:(C) A.having与where相同 B.having用于单行条件查询 C.having用于已分组的条件查询 D.having子句必须紧跟在where子句后面使用 8.能够在外部表上进行的操作有:(A) A.select B.update C.insert D.delete 9.在更改索引的操作(alter index)中,以下哪些子句可以定期优化索引?(AC) A.rename B.coalesce C.rebuild D.deallocate unused 10.请选出能够产生锁的操作:(AB) A.select … for update B.commit C.rollback D.lock table 二、填充题(20% 每空4分) 1.数据库最常用的DML操作有SELECT、UPDATE 、DELETE 和INSERT 等(要求写出操作命令)。 2.假设有两个数据N1和N2,请用函数实现如下算法:当N1>N2时,返回“大于”; 当N1=N2时,返回“等于”;当N1N2 then Return ‘大于’;

oracle数据库基本命令

oracle数据库基本命令 oracle安装后 sys:超级管理员(dba),默认密码为:change_on_install system:系统管理员(dbaoper),默认密码为:manager; sys与system的不同在于sys能够create datebase而system则不能。scott:普通用户,默认密码:tiger 1.切换用户:conn 用户名/密码; SQL> conn system/manager; Connected to Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 Connected as system SQL> conn sys/change_on_install as sysdba; Connected to Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 Connected as SYS 注意:sys与其他用户在命令窗口切换时的不同。 2.修改密码:passw username;(普通用户可以修改自己密码,管理员可以修改其他人的密码) 3.显示当前用户。show user; 4.断开数据库同时推出:exit; 文件操作 5.运行sql脚本,start d:\a.sql; 6.编辑指定的sql脚本。Edit d:\a.sql; 7.将屏幕上指定的内容输出到指定文本中去。spool e:\b.sql;执行语句;spool off;

8.显示设置环境变量; 可以用来控制输出的各种格式,如果希望永久保存可以修改glogin.sql脚本。 Linesize(行宽): show linesize;显示行宽 set linesize 90;设置行宽为90个字符。 Pagesize(页面大小): Show pagesize;显示页面大小 Set pagesize 180;设置页面的小。 (做报表时可以用。一页设定几行。)

Oracle数据库基础

Oracle 数据库基础 数据库是我们安装完产品后建立的,可以在同一台主机上存在8i,9i,10g,11g等多个数据库产品,一套产品可以建立多个数据库,每个数据库是独立的。每个数据库都有自己的全套相关文件,有各自的控制文件、数据文件、重做日志文件、参数文件、归档文件、口令文件等等。 其中控制文件、数据文件、重做日志文件、跟踪文件及警告日志(trace files,alert files)属于数据库文件; 参数文件(parameter file)口令文件(password file)是非数据库文件 我们的表存储在数据库中 数据库不能直接读取 我们通过实例(instance)来访问数据库 数据库实例 实例由内存和后台进程组成 实例是访问数据库的方法 初始化参数控制实例的行为 一个实例只能连接一个数据库

启动实例不需要数据库 产品安装好 有初始化参数文件 就可以启动实例 与是否存在数据库无关 实例内存分为SGA 和PGA SGA:是用于存储数据库信息的内存区,该信息为数据库进程所共享。它包含Oracle 服务器的数据和控制信息,它是在Oracle 服务器所驻留的计算机的实际内存中得以分配,如果实际内存不够再往虚拟内存中写。 PGA:包含单个服务器进程或单个后台进程的数据和控制信息,与几个进程共享的SGA正相反,PGA 是只被一个进程使用的区域,PGA 在创建进程时分配,在终止进程时回收. 后台进程是实例和数据库的联系纽带 分为核心进程和非核心进程 当前后台进程的查看 SQL> select name,description from v$bgprocess where paddr<>'00'; NAME DESCRIPTION

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)进程,当一用户进程异常结束时,该进程负责恢复未完成的事务,注销失败的用户进程,释放用户进程占用的资源。

oracle11g数据库管理与开发第7章答案.

第7章安全管理 一、填空题 1.Oracle数据库用户口令认证可以采用数据库验证、外部验证、全局验证等几种方式。 2.Oracle数据库概要文件主要用于资源管理、控制口令等。 3.Oracle数据库中的权限分为系统权限和对象权限两种类型,向用户直接授权需要grant权限to用户SQL语句。 4.用户连接Oracle数据库后希望得到角色权限,这有两种实现方法:一种方法是让管理员把角色设置为用户默认角色,另一种方法是向用户授予角色,需调用的SQL语句是grant 角色to用户。 二、简答题 1.简要说明在oracle数据库内普通用户口令认证和管理员口令认证都有哪些方法? 答:oracle数据库普通用户口令认证有以下3种认证方法: (1)数据库认证(2)外部认证(3)全局认证 管理员口令认证有以下3种认证方法: (1)口令文件认证(2)操作系统认证(3)基于网络认证服务认证 2.简述用户通过默认角色和非默认角色获得权限有何异同? 答:用户通过默认角色获得权限时,用户默认角色在用户连接后被自动激活,所以用户不用显式启用角色就可以立即获得它们所具有的权限。而通过非默认角色获得权限时,必须通过命令调用为其授权,才能使非默认角色获权。 三、实训题 1.请创建一个用户books_pub,要求他第一次登录时必须修改口令,将其默认表空间和默认临时表空间分别设置为books_pub和temp,并在表空间users,demots和books_pub上分别为他分配10MB,10MB和50MB的存储空间。 create tablespace books_pub//创建books_pub表 datafile'f:\app\administrator\admin\orcl\hcy_1.dbf'size5M; create tablespace demots//创建demots表 datafile'f:\app\administrator\admin\orcl\hcy_2.dbf'size5M; create user books_pub//创建books_pub用户 identified by123 password expire default tablespace books_pub temporary tablespace temp quota10M on users quota10M on demots quota50M on books_pub; 2.把创建会话的系统权限,以及scott用户dept表和emp表上的所有对象授予用户books_pub。

数据库基本知识(自己整理,初学者可以看一下,基于某MySql)

数据库

1常见数据库 1.1MySql : 甲骨文 1.2Oracle: 甲骨文 1.3SQL Server: 微软 1.4Sybase: 赛尔斯 1.5DB2: IBM 2MySql基础知识 2.1关系结构数据模型数据库 2.2SQL(Structured Query Language)结构化查询语言2.2.1DDL(Data Definition Language):数据定义语言,用来定义数据库对象:库、表、列等 操作数据库 CREATE DATABASE [IF NOT EXISTS]mydb1 USE mydb1 DROP DATABASE [IF NOT EXISTS] mydb1

ALTER DATABASE mydb1 CHARACTER SET utf8 操作表 插入表 CREATE TABLE stu( sid CHAR(6), sname VARCHAR(20), age INT, gender VARCHAR(10) ); 更改表 ALTER TABLE t_user ADD (student varcher(20)) ALTER TABLE t_user MODIFY gender CHAR(20) ALTER TABLE t_user CHANGE gender VARCHER(20) ALTER TABLE t_user REMANE genderTO genders ALTER TABLE t_user DROP gender 删除表 DROP TABLE t_user 2.2.2DML(Data Manipulation Language):数据操作语言,用来定义数据库记录(数据) 插入数据 INSERT INTO t_user VALUES() INSERT INTO 表名 VALUES(值1,值2,…)

oracle数据库操作手册

操作手册 目录 一.表空间 (4) 1.创建表空间 (4) 2.增加表空间 (4) 3.删除表空间 (5) 4.查询表空间状态 (5) 5.查询数据文件路径 (5) 6.移动表空间中数据文件的路径 (5) 7.移动表和索引到其他表空间 (6) 8.查看表空间的使用率 (7) 二.用户和权限 (9) 1.创建用户 (9) 2.修改用户的密码 (9) 3.给用户授权 (9) 4. 查询数据库系统上有多少用户,文件名和创建时间 (10) 三.归档和非归档模式 (10) 1.查看数据库的归档模式 (10) 2.修改数据库的归档模式 (10) 四.日志文件 (11) 1.查询日志文件信息 (11) 2.增加日志文件配置信息 (12) 3.增加日志成员 (12) 4.删除一组日志 (12) 五.密码文件 (13) 1.创建密码文件 (13) 六.参数文件(SPFILE PFILE) (13) 1.查看数据库使用参数文件(SPFILE 还是PFILE) (13) 2.创建SPFILE (13) 3.通过PFILE 启动数据库 (13) 七.STATSPACK (14) 1.安装STATSPACK (14) 2.数据采集 (14) 3.设置自动快照 (14) 4.设置数据采集的时间 (14) 八.ORACLE信息查询 (15) 1.查询ORACLE数据库的名字,创建日期 (15) 2. 查询ORACLE所在操作系统的主机名,实例名,版本 (15) 3.查询ORACLE数据库系统版本详细信息 (15) 九.控制文件 (16) 1.查询控制文件 (16) 2.备份控制文件 (16)

十.索引 (16) 1.创建普通索引 (16) 2.创建位图索引 (16) 3.查询索引所在的表,表空间,索引类型 (16) 4.查询索引所在的列 (17) 十一.主键 (17) 1.定义主键 (17) 2.查询主键索引 (18) 3.查询约束信息 (18) 4.禁止约束 (18) 5.开启主键 (19) 十二.手工建库脚本 (19) 十三..PROFILE文件内容 (19) 十四.做定时JOB (20) 1.创建存储过程,为此存储过程作定时JOB (20) 2.定时JOB 的参数说明 (21) 十五.查询出SQL语句 (22) 1.通过SID 找出HASH VALUE 值 (22) 2.通过HASH VALUE 值查询出SQL 语句 (22) 3.根据HASH VALUE 值查询出对应的 SESSLIN SID (22) 4.根据HASH VALUE 找出对应的机器名称 (22) 5.通过HASH VALUE 查询出该语句的执行计划 (23) 6.查询存储过程 (23) 7.查询对象属于哪个用户 (23) 8.查询表的分析时间 (23) 9.查询对象(表)的类型 (23) 十六.查询脚本 (24) 1.查询等待事件 (24) 2.查询大表已经索引超过2G 的对象 (24) 3.查看锁 (25) 十七.基本的SQL语句 (25) 1.对表的操作 (25) 2.常用的函数 (26) 十八.安装手册 (27) 十九.错误总结 (27) 1. ORA-00257: 归档程序错误 (27) 二十.故障处理 (29) 1.日志挖掘 (29) 2.行链接行迁移 (30) 3.逻辑备份(exp/imp) (35) 4.关闭和启动数据库的步骤 (36) 二十一.METALINK操作 (37) 1.开二级别SR (37) 2.OPATCH 下载地址 (37)

Oracle数据库基本知识点

1、数据库基本语句 (1)表结构处理 创建一个表:cteate table 表名(列1 类型,列2 类型); 修改表的名字 alter table 旧表名 rename to 新表名 查看表结构 desc 表名(cmd) 添加一个字段 alter table 表名 add(列类型); 修改字段类型 alter table 表名 modify(列类型); 删除一个字段 alter table 表名 drop column列名; 删除表 drop table 表名 修改列名 alter table 表名 rename column 旧列名 to 新列名; (2)表数据处理 增加数据:insert into 表名 values(所有列的值); insert into 表名(列)values(对应的值); 更新语句:update 表 set 列=新的值,…[where 条件] 删除数据:delete from 表名 where 条件 删除所有数据,不会影响表结构,不会记录日志, 数据不能恢复--》删除很快: truncate table 表名 删除所有数据,包括表结构一并删除: drop table 表名 去除重复的显示:select distinct 列 from 表名 日期类型:to_date(字符串1,字符串2)字符串1是日期的字 符串,字符串2是格式 to_date('1990-1-1','yyyy-mm-dd')-->返回日期的 类型是1990-1-1 (3)查询语句 1)内连接 select a.*,b.* from a inner join b on a.id=b.parent_id

Oracle数据库基础题库【含答案】

1、判断题,正确请写写"T",错误请写写"F", 1、oracle数据库系统中,启动数据库的第一步是启动一个数据库实例。( T ) 2、Oracle服务器端的监听程序是驻留在服务器上的单独进程,专门负责响应客户机的连接请求。( F) 3、oracle数据库中实例和数据库是一一对应的(非ORACLE并行服务,非集群)。( T) 4、系统全局区SGA 是针对某一服务器进程而保留的内存区域,它是不可以共享的。( F ) 5、数据库字典视图ALL_***视图只包含当前用户拥有的数据库对象信息。( F ) 8、数据字典中的内容都被保存在SYSTEM表空间中。( T ) 9、HAVING后面的条件中可以有聚集函数,比如SUM(),AVG()等, WHERE 后面的条件中也可以有聚集函数。( F ) 10、"上海西北京" 可以通过like ‘%上海_’查出来。( F ) 11、表空间是oracle 最大的逻辑组成部分。Oracle数据库由一个或多个表空间组成。一个表空间由一个或多个数据文件组成,但一个数据文件只能属于一个表空间。( T ) 12、表空间分为永久表空间和临时表空间两种类型。( T ) 13、truncate是DDL操作,不能 rollback。( T ) 14、如果需要向表中插入一批已经存在的数据,可以在INSERT语句中使用WHERE语句。( F ) 15、Oracle数据库中字符串和日期必须使用双引号标识。( F ) 16、Oracle数据库中字符串数据是区分大小写的。( T ) 17、Oracle数据库中可以对约束进行禁用,禁用约束可以在执行一些特殊操作时候保证操作能正常进行。( F ) 18、为了节省存储空间,定义表时应该将可能包含NULL值的字段放在字段列表的末尾。( T ) 20、在连接操作中,如果左表和右表中不满足连接条件的数据都出现在结果中,那么这种连接是全外连接。( T ) 21、自然连接是根据两个表中同名的列而进行连接的,当列不同名时,自然连接将失去意义。( T ) 23、PL/SQL代码块声明区可有可无。( T ) 24、隐式游标与显式游标的不同在于显式游标仅仅访问一行,隐式的可以访问多行。( F )

Oracle数据库期末复习知识点整理

基础知识 表3.2 Oracle数据类型

表3.3 XSB的表结构

操作表 创建表 CREATE TABLE [schema.] table_name ( column_namedatatype [DEFAULT expression] [column_constraint][,…n] [,…n] ) [PCTFREE integer] [PCTUSED integer] [INITRANS integer] [MAXTRANS integer] [TABLESPACE tablespace_name] [STORGE storage_clause] [CLUSTER cluster_name(cluster_column,…n)] [ENABLE | DISABLE ] [AS subquery] 【例】使用CRETE TABLE命令为XSCJ数据库建立表XSB,表结构参照表3.3。 打开SQL*Plus工具,以system方案连接数据库,输入以下语句: CREATE TABLE XSB ( XH char(6) NOT NULL PRIMARY KEY, XM char(8) NOT NULL, XB char(2) DEFAULT '1' NOT NULL, CSSJ date NOT NULL, ZY char(12) NULL, ZXF number(2) NULL, BZ varchar2(200) NULL ); 修改表 ALTER TABLE [schema.] table_name [ ADD(column_namedatatype [DEFAULT expression][column_constraint],…n) ] /*增加新列*/ [ MODIFY([ datatype ] [ DEFAULT expression ] [column_constraint],…n) ] /*修改已有列的属性*/ [ STORAGE storage_clause ] *修改存储特征*/ [ DROP drop_clause ] /*删除列或约束条件*/ 【例】使用ALTER TABLE语句修改XSCJ数据库中的表。

Oracle基础知识大全,

课程目标: 1. 了解数据库系统在项目开发中的地位 2. 了解目前主流数据库系统 3. 熟练掌握查询命令 4. 熟练掌握数据操作方式 5. 熟练使用数据库内置函数 6. 掌握pl/sql程序设计语法结构 7. 掌握视图 8. 掌握存储过程 9. 掌握用户自定义函数 10. 掌握触发器 了解: 1.数据库组件: 1.1 实施应用集群 1.2 Oracle OLAP 1.3 数据挖掘 1.4 应用程序接口 1.5 网络组件 1.6 SQL Plus 1.7 企业管理器OEM

2. 几个版本间的差异: 2.1 增加了服务器参数文件SPFILE 2.2 使用了OMF免去了手工管理数据库文件的繁琐 2.3 支持多种数据库块大小 2.4 会话可以自动调整PGA的大小 2.5 引入了列表分区 课程内容: 1. 操作数据之前的准备工作: 1.1. 要保证有一个数据库: 1.2. 要保证创建一个表空间 create tablespace hbjr datafile 'E:\dbs\hbjr.dbf' size 100M; 1.3. 要创建一个用户,用户默认的表空间就是你创建的表空间 create user hbjr identified by orcl default tablespace hbjr; //授权限: grant dba to hbjr; 1.4. 用户/密码登录:

2. 表名/列字段名起名规范: 2.1 使用常规字母和数字 2.2 长度不要超过30 2.3 表名/列名不能重复 2.4 不能使用oracle的保留字 3. 数据类型 3.1 char:定长,存储单位--字节(bite) 3.2 varchar2:变长,存储单位--字节 3.3 nchar:定长,存储单位--字符 3.4 nvarchar2:变长,存储单位--字符 3.5 date:日期类型,7个字节,存储着--世纪,年,月,日,时,分,秒 3.6 timestamp:日期类型,11个字节,存储着--世纪,年,月,日,时,分,秒,毫秒 3.7 number:数据类型(数值类型) 3.8 clob:大字段类型,适合存储纯文本信息(例如:*.txt 文件)

Oracle数据库技术课程学习大纲详细

《现代数据库技术》教学大纲 课程名称:《现代数据库技术》 课程编号:学时数:56 学分数:3.5 适应专业:计算机与信息学院所有专业 一、本课程的地位、任务和作用 现代数据库技术是计算机在数据处理应用领域中的主要内容和坚实基础;也是今后若干年内研究和应用的最活跃的分支之一。因此,信息管理、软件开发、计算机等专业的学生,特别是以应用为目标的学生都必须学习和具备数据库原理与应用的知识。本课程通过介绍Oracle数据库基本操作、体系结构与数据库基本管理使学生初步掌握大型数据库的基本原理,了解大型数据库的管理方法。了解大型数据库的管理方法,使学生熟练掌握Oracle数据库系统下的SQL语言运用及PL/SQL程序设计。 本课程是一门理论和实践相结合的课程,要求学生在完成本课程的学习以后,能够结合自己所熟悉的某一门高级语言和Oracle,开发出一个小型的数据库应用系统。 二、本课程的相关课程 本课程的先修课程为《计算机组成原理》,《离散数学》,《数据结构》,《计算机网络》及《数据库原理》等课程。 三、本课程的基本内容及要求 教学内容: 第一章数据库概述(2学时) 1、教学内容: 1.1数据库基础知识 1.2关系数据库系统 1.3 Oracle基础知识 (1)Oracle的发展历史 (2)Oracle的特点 第二章O racle体系结构(6学时) 1、教学内容: 2.1 Oracle 体系结构概述 2.2Oracle的存储结构 (1)物理存储结构 (2)逻辑存储结构 2.3Oracle的实例 (1)Oracle内存结构

(2)Oracle进程 2.4数据字典 2、教学重点:Oracle的物理结构、oracle实例、Oracle的逻辑结构 3、教学难点:数据库实例与进程 第三章O racle11g的安装(2学时) 1、教学内容: 3.1 Oracle 11g环境介绍 3.2Oracle 11g for Windows的安装 (1)安装Oracle 11g服务器 (2)Oracle 11g与Windows (3)安装Oracle 11g客户端 3.3 Oracle 11g 的卸载 2、教学重点:学会Oracle的安装 第四章O RACLE数据库管理工具及网络配置(2学时) 1、教学内容: 4.1 SQL*Plus命令 (1)设置SQL*Plus 运行环境 (2)常用SQL*Plus命令 (3)格式化查询结果 4.2 Oracle企业管理器 4.3 数据库配置助手 4.4 启动与关闭oracle实例 2、教学重点:学会使用SQL*Plus 第五章S QL语言基础(5学时) 1、教学内容: 5.1SQL简介 5.2SQL的基本语法 5.3数据查询语言 5.4数据操纵语言 5.5数据定义语言 5.6数据控制语言 5.7常用函数 5.8 事务处理 2、教学重点:数据查询语言、数据操纵语言、数据定义语言、数据控 制语言 3、教学难点:SQL的基本语法 第六章P L/SQL编程(8学时)(课本第6,7章) 1、教学内容: 6.1PL/SQL基础 (1)变量及声明 (2)数据类型 (3)表达式 (4)PL/SQL程序块结构 6.2PL/SQL控制结构

数据库基础知识试题

数据库基础知识试题 部门____________ 姓名__________ 日期_________ 得分__________ 一、不定项选择题(每题分,共30分) 1.DELETE语句用来删除表中的数据,一次可以删除( )。D A .一行 B.多行 C.一行和多行 D.多行 2.数据库文件中主数据文件扩展名和次数据库文件扩展名分别为( )。C A. .mdf .ldf B. .ldf .mdf C. .mdf .ndf D. .ndf .mdf 3.视图是从一个或多个表中或视图中导出的()。A A 表 B 查询 C 报表 D 数据 4.下列运算符中表示任意字符的是( )。B A. * B. % C. LIKE 5.()是SQL Server中最重要的管理工具。A A.企业管理器 B.查询分析器 C.服务管理器 D.事件探察器 6.()不是用来查询、添加、修改和删除数据库中数据的语句。D A、SELECT B、INSERT C、UPDATE D、DROP 7.在oracle中下列哪个表名是不允许的()。D A、abc$ B、abc C、abc_ D、_abc 8.使用SQL命令将教师表teacher中工资salary字段的值增加500,应该使用的命 令是()。D A、Replace salary with salary+500 B、Update teacher salary with salary+500 C、Update set salary with salary+500 D、Update teacher set salary=salary+500 9.表的两种相关约束是()。C

Oracle数据库开发规范

项目编号:××× xxx Oracle数据库开发规范 Oracle DB Development Standardization <部门名称> **年**月**日 文档信息: 文档名称: 文档编号: 文档版本日期: 起草人: 起草日期: 复审人: 复审日期: 版本历史: 版本 日期 作者 更改参考 说明

审批信息: 签字/日期 审核 审批 目录 1 概述 4 1.1 编写目的 4 1.2 文档约定 4 1.3 预期的读者和阅读建议 4 1.4 参考文献 5 2 数据库对象命名 6 2.1 命名总体原则 6 2.2 表名 6 2.3 视图 6 2.4 同义词 6 2.5 序列7 2.6 索引7 2.7 存储过程7 2.8 存储函数8 2.9 存储程序包8 2.10 触发器8 2.11 字段8 2.12 其他9 3 设计规范9 3.1 范围9 3.2 表空间9 3.3 字符集10 3.4 主外键约束10 3.5 分区表10 3.6 RAC下的序列设计10 3.7 字段10 3.8 表结构设计11 3.9 索引设计11 3.10 临时表11 4 SQL编写规范 12 4.1 书写规范12 4.2 SQL语句的索引使用13 4.3 SQL语句降低系统负荷 15 5 PL/SQL编程规范18

5.1 书写规范18 5.2 常用数据库操作语句编码规范19 5.3 常用过程控制结构20 5.4 Condition 21 5.5 Cursor 22 5.6 变量定义与赋值22 5.7 过程与函数调用23 5.8 例外处理(Exception) 23 5.9 例外处理的错误消息24 5.10 注释(Comment) 25 5.11 应用调试控制27 5.12 并发控制27 5.13 代码测试、维护29 1 概述 1.1 编写目的 为规范软件开发人员的Oracle数据库开发提供参考依据和统一标准。 1.2 文档约定 说明本文档中所用到的专用术语定义或解释,缩略词定义。 1.3 预期的读者和阅读建议 本文档适用于所有开发员。 1.4 参考文献 列出有关的参考文件,如: a.属于本项目的其他已发表文件; b.本文件中各处引用的文档资料。 列出这些文件的标题、作者,说明能够得到这些文件资料的来源。 2 数据库对象命名 2.1 命名总体原则 本规范所涉及数据库对象主要是指表、视图、同义词、索引、序列、存储过程、函数、触发器等; 命名应使用富有意义的英文词汇,尽量避免使用缩写,多个单词组成的,中间以下划线分割;避免使用Oracle的保留字或关键字,如LEVEL和TYPE; 各表之间相关列名尽量同名; 除数据库模式对象名称长度为1-8个字符,其余对象名称均要求不超过30个字符; 命名只能使用大写英文字母,数字和下划线,且以英文字母开头。 2.2 表名 规则:XXX_MMM_DDDD 说明:XXX代表子系统或模块名称(2-3个字母构成); MMM代表子模块名称(2-3个字母构成,根据实际情况可以没有); DDDD为表的简称含义,使用英文单词或词组构成,可包括下划线,但不得使用汉语拼音。 示例:PO_HEADERS_ALL 2.3 视图 规则:XXX_MMM_DDDD_V 说明:XXX代表子系统或模块名称(2-3个字母构成);

ORACLE数据库基础测试题oracle数据库复习题

ORACLE数据库基础测试题 提示:本题为ORACLE数据库基础测试题,适合初学者对基础知识进行测试,以便查漏补缺。 1、 DDL指得就是:()。 A、数据定义语言 B、数据操作语言 C、数据查询语言 D、数据控制语言 正确答案:A解析: 2、 下列创建表语句正确得就是:(). A、create table emp(id number(4),); B、createtable emp(id number(4)); C、alter table emp(id number(4)) ; D、alter tableemp(id number(4),) ;

正确答案:B解析: 3、 下列Oracle函数中能够返回两个字符串连接后得结果得就是:()。 A、initcap B、instr C、trim D、concat 正确答案:D解析: 4、 下列SQL语句得查询结果就是:()。selectround(45、925,0),trunc(45、925)fromdual; A、4545 B、4645 C、4546 D、46 46 正确答案:B解析:

5、 关于函数nvl(d1,d2)得用法说法正确得就是:()。 A、表示如果d1为null则d2必须为null B、表示如果d1为null则忽略d2 C、表示如果d1不为null则用d2替代 D、表示如果d1为null则用d2替代 正确答案:D解析: 6、 显示emp表得所有行,所有列,下列SQL语句正确得就是:()。 A、select*fromemp; B、select all、*from emp; C、selectallfromemp; D、select/* from emp; 正确答案:A解析: 7、 查询职员得姓名及其直接领导,如果没有直接领导得职员,则显示为“NoManager",下列SQL语句正确得就是:()。

北语20秋《Oracle数据库开发》作业1【标准答案】

20秋《Oracle数据库开发》作业1 试卷总分:100 得分:100 一、单选题 (共 9 道试题,共 36 分) 1.Orcacle提供了(),用于支持采用向导方式创建数据库。 A.SQL*Plus B.Oracle Net C.Oracle Listner D.Oracle Database Configuration Assistant。 答案:D 2.可以自动执行操作的存储对象是() A.程序包。 B.函数。 C.过程。 D.触发器 答案:D 3.在Oracle中,约束可以在DML语句执行之后立即生效,也可以延迟到事务处理提交时才生效。()语句可以让用户在事务处理中设置延迟约束的强制模式 A.set constraint B.set transaction C.take constraint D.take constraint 答案:A 4.Oracle的分区表可以包括多个分区,每个分区都是一个独立的(),可以存放到不同的表空间中。 A.段。 B.盘区。 C.物化视图。 D.数据文件 答案:A 5.初始化参数()指定了实例启动时希望创建的共享服务器进程的数目 A.SHARED_SERVICES。 B.DISPATCHERS。 C.HOST。 https://www.wendangku.net/doc/4218226120.html,_SERVICES 答案:A 6.假设需要格式化作者表AUTHOR查询的列信息,将AUTHOR_ID列名字格式化为“作者编号”,AUTHOR_ID列名字格式化为“作者名称”,AUTHOR_DESC列名字格式化为“作者简介”,可以使用如下()方式 A.FORMAT AUTHOR_ID HEADING ’作者编号’FORMAT AUTHOR_NAME HEADING ’作者名称’FORMAT

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

ORACLE数据库基础知识1

第一部分 Oracle数据库概念与原理 一、Oracle数据库概念 1. 数据库 数据库是一套解决信息管理问题的工具,是数据文件及处理这些数据文件的程序的集合。一个数据库系统必须实现在多用户环境下可靠地管理大量的数据,使得很多用户在并发处理时获得相同的结果,而且必须具有处理数据的高效性、可靠性、安全性和容错性,同时提供简便易用的客户端用户操作过程和应用接入。 2. Oracle数据库 Oracle数据库是采用数据库进程和应用程序分进程处理的Client/Server结构的关系型数据库,采用大型数据库的磁盘空间管理形式,支持大量用户同时操作相同的数据,实现高度可靠性、高度的安全性、高效率和在线备份机制。Oracle数据库适合于各种不同的硬件环境和不同的操作系统,且具有接口方便和控制容易的特性,并支持多点实时复制。 二、Oracle数据库原理 1. Oracle数据库的基本任务 (1)录入数据; (2)存储数据; (3)查询、处理数据

2. Oracle数据库的组成结构 Oracle按照应用情况可以分为核心数据(DATA)、操作系统(Operation System)、数据库服务器部分(Oracle Server)、Oracle SQL Server程序、Oracle工具(包括SQL*PLUS和很多像Developer 2000、designer 2000等工具)以及Oracle的各种应用。 按照Oracle的对象组成结构来看,Oracle数据库由以下几部分组成: ⑴实例(Instance):Oracle实例是一组有自己的系统全局区和与其相关数据库文件的Oracle服务器进程,每个实例都有自己的SID(系统识别符)。 ⑵对象(Object):由应用程序中的SQL语句引用的表空间、用户、表、视图、索引、权限、DBA(数据库管理员)等。 ⑶程序:也是Oracle数据库的过程,主要包括客户过程(client processes),根据用户的要求向服务器过程提出需求信息的请求;服务器过程server processes),接收用户过程发出的请求,并根据请求与数据库通信,完成对数据库中数据的处理。 ⑷文件:包括数据文件(Datafile),存放所有数据库有关的数据。 日志文件(Log File),也称重演日志文件(Redo Logs File)或事务记录文件(Trasaction Log File),记录针对数据库进行的修改操作或各种事务,节省数据库直接操作数据文件的时间和次数,提高处理效率。 控制文件(Control File),存放与Oracle数据库所有文件均相关的关键信息,Oracle数据库通过控制文件保持数据的一致性,以及恢复数据时使用哪些重演日志。 每个数据库至少应该有两个以上的控制文件和日志文件备份。 ⑸内存结构 Oracle的内存结构SGA主要是一个通信器,它是一块存放系统信息的内存区域,使得通信过程尽量能够在内存中处理, 达到快速度、高效率。所有用户进程和服务器进程都能够访问这个内存结构。SGA区主要分为四块: ① Data Buffer Cache(数据高速缓冲区)中存放着Oracle最近使用过的数据库数据块,当用户一次访问数据时,用户进程从物理磁盘中读取数据后将其放在这个高速缓冲区,下一次或其他用户访问时从缓冲区读取,Oracle数据库根据数据被访问的频度和缓冲区的物理大小通过相应的HASH算法将经常访问的数据保留,而去除不经常访问的数据块。 ② Dictionary Cache(Row Cache,字典高速缓冲区)用于保存数据字典中的行,数据字典中存放Oracle系统管理时需要的所有信息,这些信息包括:访问Oracle数据库的用户以及他们访问哪些数据库对象和这些对象所放的位置等。 ③ Redo Log Cache(Transaction Log Cache,即重演日志缓冲区),任何需要事务在写入到重演日志之前首先放到缓冲区中,然后定期将其写入到重演日志。 ④ Share SQL Pool(共享SQL池)相当于程序高速缓冲区,所有用户的经过语法分析的、准备执行的SQL语句都放在此共享池中。 3. Oracle数据库的数据处理流程

相关文档
相关文档 最新文档