dmp导入数据 oracle_Oracle

什么是执行计划

执行计划是一条查询语句在 Oracle 中的执行过程或访问路径的描述。

执行计划的常用列字段解释:

  • 基数(Cardinality):Oracle 估计的当前操作的返回结果集行
  • 字节(Bytes):执行该步骤后返回的字节数
  • 耗费(COST)、CPU 耗费:Oracle 估计的该步骤的执行成本,用于说明 SQL 执行的代价,理论上越小越好(该值可能与实际有出入)
  • 时间(Time):Oracle 估计的当前操作所需的时间

使用执行计划

通过工具启动执行计划。选中需要查看执行计划的查询语句,在工具栏中选

Tools--->Explain Plan 或者 或者是选择需要查看执行计划的查询语句后按 F5。

执行顺序

缩进最多的最先执行;(缩进相同时,最上面的最先执行)

表访问的几种方式(非全部):

  • TABLE ACCESS FULL(全表扫描)
  • TABLE ACCESS BY INDEX ROWID(通过 ROWID 的表存取)
  • TABLE ACCESS BY INDEX SCAN(索引扫描)

TABLE ACCESS FULL(全表扫描):Oracle 会读取表中所有的行,并检查每一行是否满足 SQL 语句中的 Where 限制条件;使用建议:数据量太大的表不建议使用全表扫描,除非本身需要取出的数据较多,占到表数据总量的 5% ~ 10% 或以上。

TABLE ACCESS BY INDEX ROWID(通过 ROWID 的表存取):行的 ROWID 指出了该行所在的数据文件、数据块以及行在该块中的位置,所以通过ROWID 可以快速定位到目标数据上,这也是 Oracle 中存取单行数据最快的方法;(ROWID 是由 Oracle 自动加在表中每行最后的一列伪列,既然是伪列,就说明表中并不会物理存储 ROWID 的值。)

TABLE ACCESS BY INDEX SCAN(索引扫描)

在索引块中,既存储每个索引的键值,也存储具有该键值的行的 ROWID

索引扫描其实分为两步

  1. 扫描索引得到对应的 ROWID。
  2. 通过 ROWID 定位到具体的行读取数据。

五种索引扫描

  • INDEX UNIQUE SCAN(索引唯一扫描)
  • INDEX RANGE SCAN(索引范围扫描)
  • INDEX FULL SCAN(索引全扫描)
  • INDEX FAST FULL SCAN(索引快速扫描)
  • INDEX SKIP SCAN(索引跳跃扫描)

Oracle 的优化器

  • RBO(Rule-Based Optimization) 基于规则的优化器(基本被抛弃)
  • CBO(Cost-Based Optimization) 基于代价的优化器

CBO 优化器

CBO 是一种比 RBO 更加合理、可靠的优化器,在 ORACLE 10g 中完全取代 RBO。CBO通过计算各种可能的执行计划的“代价”,即 COST,从中选用 COST 最低的执行方案作为实际运行方案。

  1. 等值链接的查询效率高于子查的执行效率
  2. 建立适当的索引可以提高查询效率
  3. 尽可能少的使用like关键字进行模糊查询
  4. 尽量避免*号代替所有列,编写查询语句时使用具体列名代替*,可以防止全表扫描

Oracle 的数据导入与导出

数据库导入导出需要注意

1.目标数据库要与源数据库有着名称相同的表空间。

2.目标数据在进行导入时,用户名尽量相同(这样保证用户的权限级别相同)。

3.目标数据库每次在进行数据导入前,应做好数据备份,以防数据丢失。

4.弄清是导入导出到相同版本还是不同版本(oracle10g 版本与 oracle11g 版本)。

5.目标数据导入前,弄清楚是数据覆盖(替换),还是仅插入新数据或替换部分数据表。

6.确定目标数据库磁盘空间是否足够容纳新数据,是否需要扩充表空间。

7.导入导出时注意字符集是否相同,一般 Oracle 数据库的字符集只有一个,并且固定,一般不改变。

8.确定操作者的账号权限

导出数据格式介绍

  1. Dmp 格式:.dmp 是二进制文件,可跨平台,还能包含权限,效率好。
  2. Sql 格式:.sql 格式的文件,可用文本编辑器查看,通用性比较好,效率不如第一种,适合小数据量导入导出。尤其注意的是表中不能有大字段 (blob,clob,long),如果有,会报错。
  3. Pde 格式:.pde 格式的文件,.pde 为 PL/SQL Developer 自有的文件格式,只能用 PL/SQLDeveloper 工具导入导出,不能用文本编辑器查看。

传统方式 exp(导出)和(imp)导入:

命令执行方式

该命令需要在操作系统的命令窗口执行,而非 sql/plus

在使用导出或导入命令时,在命令的后侧不要添加分号。

命令执行方式

该命令需要在操作系统的命令窗口执行,而非 sql/plus

在使用导出或导入命令时,在命令的后侧不要添加分号。

命令格式

exp|imp 用 户 名 / 密 码 @ 连 接 地 址 : 端 口 / 服 务 名 file= 路 径 / 文 件 名 .dmp

full=y|tabels(tablename,tablename...)|owner(username1,username2,username3)

  • exp:导出命令,导出时必写。
  • imp:导入命令,导入时必写,每次操作,二者只能选择一个执行。
  • username:导出数据的用户名,必写;
  • password:导出数据的密码,必写;
  • @:地址符号,必写;
  • SERVICENAME:Oracle 的服务名,必写;
  • 1521:端口号,1521 是默认的可以不写,非默认要写;
  • file="文件名.dmp" : 文件存放路径地址,必写;
  • full=y :表示全库导出。可以不写,则默认为 no,则只导出用户下的对象;
  • tables:表示只导出哪些表;
  • owner:导出该用户下对象;
  • full|tables|owner:只能使用一种;

导出数据

exp 用户名/密码@oracle 的连接地址:端口/需要导出的服务名 file=路径/文件名.dmp

将 HR 用户下的对象导出。

exp hr/oracle@localhost:1521/orcl file=d:/1.dmp

导入数据

imp 用户名/密码@oracle 的连接地址:端口/需要导出的服务名 file=路径/文件名.dmp

将导出的 dmp 文件导入到数据库中。

imp hr/oracle@localhost:1521/orcl file=d:/1.dmp

使用 PL/SQL Developer 实现数据的导入与导出

887beb85c0bd00dfdc18c1ae3325acea.png

导出 DMP 格式

cacdc3d629fe812ad88556c27928788c.png

导入 DMP 格式

59dd77aed54fcf314aa82ee138e8d572.png

导出 SQL 格式

3587269db42a14867b6d6bc82c5a6e2f.png

导入 SQL 格式

7235a41d0e3afb6dd73925b11064a0f3.png

导出 PDE 格式

ca9acec307573b7eb61d9c84e13aabd1.png

导入 PDE 格式

cab6a2ce5ff25b32fe5524d355d0d4bf.png

数据中其他对象的导入与导出

f9c754dcff287470042e37691427b567.png

导出数据库对象(导出的是sql文件)

22d0be13d11c84a3765256500ec49c25.png

导入用

f9e3a7ab8260e68d3776cfebdaf0f695.png

-----------------------------------

MySQL 数据库的使用

MySQL 是一种关系型数据库管理系统,关系型数据库将数据保存在不同的表中,而不是将所有数据放在一个大仓库内,这样就增加了速度并提高了灵活性。

MySQL 特点

  1. MySQL 是开源的,所以你不需要支付额外的费用。
  2. MySQL 支持大型系统的数据库。可以处理拥有上千万条记录的大型数据库。
  3. MySQL 使用标准的 SQL 数据语言形式。
  4. MySQL 可以运行于多个系统上,并且支持多种语言。这些编程语言包括 C、C++、Python、Java、Perl、PHP、Eiffel、Ruby 和 Tcl 等。
  5. MySQL 存储数据量较大,32 位系统表文件最大可支持 4GB,64 位系统支持最大的表文件为 8TB。
  6. MySQL 是可以定制的,采用了 GPL 协议,你可以修改源码来开发自己的 MySQL 系统。

MySQL 与 Oracle 的区别

实例区别

  1. MySQL 是轻量型数据库,开源免费。Oracle 是收费的而且价格非常高。
  2. MySQL 一个实例可以操作多个库,而 Oracle 一个实例只能对应一个库。
  3. MySQL 安装完后 300M 而 Oracle 有 3G 左右。

操作区别

  1. 主键: MySQL 一般使用自动增长类型,而 Oracle 则需要使用序列对象。
  2. 单引号的处理: MySQL 里可以用双引号包起字符串,ORACLE 里只可以用单引号包起字符串。
  3. 分页的 SQL 语句: MYSQL 用 LIMIT,而 Oracle 需要使用内建视图和 rownum 伪列。
  4. 事务处理:MySQL 默认是自动提交,而 Oracle 默认不自动提交,需要用户 CTL 语言进行事务提交

操作 MySQL

创建数据库 areate database数据库名 default character set 字符编码;

创建数据库:create database test default character set utf8;

查看数据库:show databases;

查看数据库编码:select schema_ name,default_character_set_name from information_ schema.schemata where schema_ name = 'test';

删除数据库 Drop database +数据库名称;

删除 test 数据库

drop database test;

创建一个名称为 bjsxt 的数据库,编码为 utf8

create database bjsxt default character set = utf8;

选择该数据库

use bjsxt;

MySQL 中的数据类型

数值类型

MySQL 支持所有标准 SQL 数值数据类型。

作为 SQL 标准的扩展,MySQL 也支持整数类型 TINYINT、MEDIUMINT 和 BIGINT。

dc5a19629db62d1d5a615b3f7500a786.png

数值类型中的长度 m 是指显示长度,并不表示存储长度,只有字段指定 zerofill 时有用例如:int(3),如果实际值是 2,如果列指定了 zerofill,查询结果就是 002,左边用 0 来填充

浮点型

a779e2aa4fbe24e4639296fb03176309.png

字符串型

a49cfb300adc2166ca1d5d10a452e2ee.png

char 和 varchar

char(n) 若存入字符数小于 n,则以空格补于其后,查询之时再将空格去掉。所以 char类型存储的字符串末尾不能有空格,varchar 不限于此。

char 类型的字符串检索速度要比 varchar 类型的快。

varchar 和 text

  1. varchar 可指定 n,text 不能指定,内部存储 varchar 是存入的实际字符数 +1 个字节(n<=255)或 2 个字节(n>255),text 是实际字符数 +2 个字节
  2. text 类型不能有默认值。
  3. varchar 可直接创建索引,text 创建索引要指定前多少个字符。varchar 查询速度快于 text, 在都创建索引的情况下,text 的索引似乎不起作用。

日期类型

fc25dc99ba4759b439e3137e64700540.png

创建表与删除表

通过 DDL 语句创建表

创建一个 employees 表包含雇员 ID,雇员名字,雇员薪水

create 

查看已创建的表 Show tables;

通过 DDL 语句删除表

删除 employees 表

drop table employees;

使用 DDL 语句修改表名 alter table 旧表名 rename新表名

创建一个 employees 表包含雇员 ID,雇员名字,雇员薪水

create 

将 employees 表名修改为 emp

alter 

使用 DDL 修改列名 alter table表名 change column旧列名 新列名 类型

将 emp 表中的 lastname 修改为 name

alter 

使用 DDL 语句修改列类型 alter table表名 modify 列名 新类型

将 emp 表中的 name 的长度指定为 40

alter 

使用 DDL 语句添加列 alter table表名 add column新列名 类型

在 emp 表中添加一个新的列为 commission_pct

alter 

使用 DDL 语句删除列 alter table 表名 drop column列名

删除 emp 表中的 commission_pct

alter 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值