oralce笔记 - 修改版 - 图文(7)

2020-05-05 15:57

数据表(表)的逻辑备份和恢复

备份分为逻辑备份和物理备份。 逻辑备份:指使用工具exprot将数据对象的结构和数据导出到文件的过程。逻辑恢复:使用工具import利用备份文件把数据对象导入到数据库的过程。逻辑备份和恢复只能在数据库open的状态下进行。物理备份和恢复也可以在close状态下进行。

导出

导出具体分三种:导出表、导出方案(包括所有的表、视图、触发器、存储过程等等)、导出数据库(包括所有的方案)。 导出使用exp命令来完成,常用命令的选项有: userid:用于指定执行导出操作的用户名、密码、连接字符串(oracle实例名)。 tables:用于指定执行导出操作的表。 owner:用于指定执行导出操作的方案。

韩顺平主讲

full=y:用于指定执行导出操作的数据库。 inctype:用于指定执行导出操作的增量类型。

rows:用于指定执行导出操作是否要要导出表中的数据。 file:用于指定导出文件名。

导出表

导出自己的表或则导出其它方案的表。 一 导出自己的表:

exp userid=scott/tiger@myoral tables=(emp,person) file=d:\\e1.dmp; userid:是用户名和密码

emp和person是要导出的表名

d:\\e1.dmp是导出到那个文件里,一般是以dmp为后缀名。

注意:进行导出时,必须要到oracle/bin目录里,才能执行exp命令。 二 导出其它方案的表:

要导出其它用户的包,则需要dba的权限或是exp_full_database的权限。比如system就可以导出scott的表。

exp userid=system/manager@myoral tables=

(scott.emp,scott.person) file=d:\\e1.dmp;

唯一不同就是在表名前加上方案名。 只导出表的结构,不导出表的数据

exp userid=scott/tiger@myoral tables=(emp) file=d:\\e1.dmp rows=n; 只是在后面加上rows=n就可以了。

使用直接导出的方式:

速度比较快,适合大表的导出。

exp userid=scott/tiger@myoral tables=(emp) file=d:\\e1.dmp direct=y; 导出方案

一 导出自己的方案:

exp scott/tiger@myoral owner=scott file=d:\\scott.dmp;

二 导出其它方案:

需要dba的权限或是exp_full_database的权限。

exp system/manager@myoral owner=(system,scott) file=d:\\scott.dmp (system,scott)导出system和scott两个方案。 导出数据库

必须具有dba或exp_full_database的权限。

exp userid=system/manager@myor1 full=y inctype=complete

file=d:\\x.dmp; 导入

要使用import工具将文件中的对象和数据导入到数据库中。也分为导入表、导入方案、导入数据库。 用imp命令,常用选项如下:

韩顺平主讲

导入表(将表结构和表数据同时导入)

imp userid=scott/m123@myora1 tables=(emp) file=d:\\emp.dmp; emp表导入到了scott方案里。这个emp表应该是scott用户导出的。

如果用system用户等导入scott用户导出的emp表吗?

imp userid=system/manager@myora1 tables=(emp) file=d:\\emp.dmp; 结果是导入失败的,为什么呢?因为emp表里有主外键关系,所有不能导入,如果要成功导入,则emp表不能有主外键关系。这样导入成功后,则system方案里就有emp表。这就意味着system方案里的emp表和scott方案里的emp表是一模一样的。

导入表和导出表结构的命令是一样的,只要你选对文件就可以了,如果emp.dmp是导出表结构的文件,那么这就是导入表结构。如果是导出表的文件,这就是导入表了。 导入表结构

imp userid=soctt/tiger@myor1 tables=(emp) file=d:\\xxx.dmp rows=n; 导入数据

如果对象(比如表)已经存在,就可以只导入表的数据

imp userid=scott/tiger@myor1 tables=(emp) file=d:\\xxx.dmp ignore=y; 导入方案

一 导入自身的方案

imp userid=scott/tiger file=d:\\xxx.dmp;

二 导入其它方案

需要有dba的权限。

imp userid=system/manager file=d:\\xxx.dmp

fromuser=system touser=scott; 导入数据库

默认情况下,当导入数据库时,会导入所有对象结构和数据。 imp userid=system/manager full=y file=d:\\xxx.dmp; 数据字典和动态性视图

数据字典是oracle数据库中最重要的组成部分,它提供了数据库的一些系统信息。

韩顺平主讲

动态性视图记载了例程启动后的相关信息。

约束

数据的完整性用于确保数据库数据遵循从一定的商业和逻辑规则。在oracle中数据完整性可以使用约束、触发器、应用程序(存储过程、函数)三种方法来实现。 约束作为确保数据完整性的首选,因为它效率高。 约束包括:not null(非空)、unique(唯一约束,不能重复,但可以为空,空值也要唯一)、primary key(主键约束,不能重复,不能为空值,一个表只能有一个主键)、foreign key(外键约束)、check(自定义约束) Foreign key(外键约束):用于定义主表和从表之间的关系。外键约束要定义在从表上,主表则必须具有主键约束或是unique约束。当定义外键约束后,要求外键列数据必须在主表的主键列存在或是为null。 Check(自定义强制约束,很少用):用于强制行数据必须满足的条件,假定在sal列定义了check约束,并要求sal列值在1000-2000之间如果不再1000-2000之间就会提示出错。

商品表 create table goods(goodsId char(8) primary key,--主键 goodsName varchar2(30), unitprice number(10,2) check (unitprice > 0),--check约束 category varchar2(8), provider varchar2(30));

客户表 create table customer(customerId char(8) primary key,--主键 name varchar2(50) not null,--非空约束 addres varchar2(50), email varchar2(50) unique,--unique约束 sex char(2) default ?男? check(sex in(?男?,?女?)), cardId char(18)); 订单表 create table purchase( customerId char(8) references customer(customerId),--外键 goodsId char(8) references goods(goodsId),--外键 nums number(5) check(nums between 1 and 30)); 注意:外键字段的类型必须要和指向主键字段的类型相同。References customer(customerId)就是指向customer表中的customerId字段。

可以用alter table命令对约束进行修改或添加约束。Not null约束要用modify选项,其它约束用add选项。 Alter table goods modify goodsName not null; //对goodsname字段添加not null约束。 韩顺平主讲

Alter table customer add constraint carddunique unique(cardId); //对customer表的cardId字段添加unique约束 constraint是关键字,add constraint就是添加约束,carddunique我们创建的约束名,可以随便取。 Alter table customer add constraint addrescheck check(address in(?东城?,?西城?,?宣武?)); 删除约束:

Alter table 表名 drop constraint 约束名称;

删除主键约束:

Alter table 表名 drop primary key;

在删除主键约束时,可能有错误,如果主键被别的字段引用了,那么就不能删除这个主键了。

一定要删除怎么办呢?

Alter table 表名 drop primary key cascade; //强行删除主键并且把主外键关系也删除了。

查看某个表所有约束信息:

Select constraint_name,constraint_type,status,validated from User_constraints where table_name = ?表名?;

查看约束对应的列:

Select column_name,position from user_cons_columns

Where constraint_name = ?约束名?;

当然最简单的办法是用pl/sql developer工具查看。

上面创建表时在字段后面添加的约束是字段级约束,也可以添加表级约束。表级约束是在所列后面再定义约束。注意:not null约束只能在列级定义。

constraint 约束名:就是为约束取一个我们自定义的约束名,如果没有写oracle会自动为约束取一个约束名。 表级约束定义:

Create table employee2( Emp_id number(4), Name varchar2(15), Dept_id number(2), Constraint pk_emplyee primary key (emp_id),--主键约束 Constraint fk_department foreign key (dept_id) –外键约束 references depart (dept_id));--引用depart表dept_id字段 索引

索引是用于加速数据存取的数据对象。合理的使用索引可以大大降低i/o次数,从而提高数据访问性能。索引有很多种,我们主要介绍常用的几种。

韩顺平主讲

为什么添加了索引,会加快查询速度呢?(加快了查询速度,自然降低插入和修改数据的速度,这是以空间换时间,因为创建索引是占用空间) 单列索引:基于单个列所建立的索引。 Create index 索引名 on 表名(列名);

复合索引:基于两列或多列的索引(不是为两个字段分别创建索引,而是为两个列的组合创建索引,就是查询两个列的组合时速度提高速度)。一张表可以有多个索引,但必须要求列的组合唯一。

Create index emp_index on emp(ename,job);

使用索引的原则:

1 必须是大数据的表创建索引才有意义。

2 在where子句或连接条件上经常引用的列上建立索引。 3 索引的层次不要超过4层。

索引缺点:

1 建立索引,系统要占用大约为表的1.2倍的硬盘和内存空间来保存索引。

2 更新数据的时候,系统必须要有额外的时间来同时对索引进行更新,以维持数据和索引的一致性。

韩顺平主讲


oralce笔记 - 修改版 - 图文(7).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:小初高学习八年级数学下册 7.1 普查与抽样调查限时作业1(无答案

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: