Oracle数据库

0 前言

学习完Oracle数据库了,在此将个人认为一些很重要但容易忘记的内容记录下来,供以后查看。

一、数据的导入导出

1. 数据导出

Oracle数据库使用exp命令进行导出,导出的结果是一个dmp文件,分三种形式导出(一次只能选择一种方式):

  1. 导出整个数据库实例下的所有数据,参数为full
  2. 导出指定用户的所有表,参数为owner
  3. 导出指定表,参数为tables

导出的通用格式为:

exp user/pwd@sid file=path log=path 参数
-- 注意:log日志文件不是必须项,开发中一般要求导入导出是生成日志文件,其他项则为必须项

-- 1. 将数据库orcl全部导出
exp system/oracle@orcl file=d:\daochu.dmp log=d:\daochu.log full=y

-- 2. 将数据库中用户1和用户2的表导出
exp system/oracle@orcl file=d:\daochu.dmp log=d:\daochu.log owner=(user1, user2)

-- 3. 将数据库中指定用户的表1和表2导出
exp system/oracle@orcl file=d:\daochu.dmp log=d:\daochu.log tables=(user.table1, user.table2)

-- 注意: 2、3的参数中若只有一项则可省略小括号

2. 数据导入

Oracle数据库使用imp命令进行导入,可以将dmp文件导入到数据库中。与数据导出相对于,也分为三种导入方式:

  1. 导入整个数据库实例下的所有数据
  2. 导入指定用户的所有表
  3. 导入指定表

再导入dmp文件前,必须保证数据库中的表空间和用户已经存在,否则就要创建相应的表空间和用户。
另外,Oracle向下兼容,即高版本能导入低版本的dmp文件,反之则不行。
现假定表空间和用户都已存在(若没有,请参考下文表空间和用户的创建),其命令格式为:

imp user/pwd@sid file=path log=path 参数

-- 1. 将数据库orcl全部导入
imp system/oracle@orcl file=d:\dw.dmp log=d:\daoru.log full=y ignore=y
-- ignore 表示的是导入时是否忽略遇到的错误,默认为n

-- 2. 将dmp文件中的用户1导入到指定用户用户2中
imp system/oracle@orcl file=d:\dw.dmp log=d:\daoru.log fromuser=user1 touser=user2 ignore=y

-- 3. 导入用户user1的指定表
imp system/oracle@orcl file=d:\dw.dmp log=d:\daoru.log fromuser=user1 tables=(table1, table2) ignore=y

二、表空间及用户的创建赋权限

1. 查看表空间(数据表空间、临时表空间)

  • 查看数据表空间
  • select * from dba_data_files;
  • 查看临时表空间
  • select * from dba_temp_files;

2. 创建表空间

--创建数据表空间
create tablespace ts_dw datafile 'D:\ts_dw_01.dat' size 10M;
--创建临时表空间
create temporary tablespace ts_temp tempfile 'D:\ts_temp_01.dat' size 10M;

其中,增加表空间的容量的方式为:

alter tablespace ts_dw add datafile 'D:\ts_dw_02.dat' size 10M;

故表空间ts_dw的时间存储空间为20M,只不过使用两个文件存储,分别是ts_dw01.dat、ts_dw02,dat

3. 创建用户

--创建用户u1
creat user u1 identified by pwd default tablespace ts_data temporary tablespace ts_temp;
--给用户赋权限
grant dba to u1;

三、数据库对象的使用

1. 表的创建

表创建的两种方式(指定表空间):

--1. 手动创建(基本创建方式)
create table t1 (列名 数据类型[约束]...) tablespace ts_data;
--2. 子查询创建
create table t2 tablespace ts_data as select * from t1;

若建表时未指定表空间,会使用默认的表空间,此时要更改表的表空间使用如下语句:

alter table t1 move tablespace 表空间名

2. 修改表名和字段名

1) Oracle修改表名

修改表名共有两种方式:

--1. 采用alter table
alter table t1 rename to tt1;
--2. 直接使用rename方式
rename t2 to tt2;

注意:
与MySQL的区别:

  1. 方式1完全相同,但方式二则有点细微的差别,MySQL的执行语句为:rename table t2 to tt2;
    注意,此处多了个table
2) Oracle修改字段名:

其格式为:
alter table t1 rename column 字段名 to 新字段名;

与MySQL的区别:
alter table t1 change column 字段名 新字段名 字段类型;

3. 创建索引

create [unique] index 索引名 on 表名(列名) tablespace 表空间;

4. 创建序列

create sequence 序列名
minvalue 10000		-- 序列最小值
maxvalue 99999		-- 序列最大值
start with 20000	-- 开始值
increment by 2		-- 每次增长的值
cache 20			-- 数据库缓存值,默认为20
cycle;				-- 到最大值后是否重新开始, nocycle不新头开始

索引的使用:

  1. nextval获取下一个值,currval获取当前值;
  2. 第一次使用时必须先执行nextval,否则currval没数据
    例:
    select seq.nextval from dual;
    select seq.currval from dual;

四、添加非空约束

alter table 表名 modify 列名 not null;

五、将数据导出txt文件

spool 路径
set echo off	--不显示脚本中正在执行的sql语句(即本条select语句)
set feedback off	--不显示sql查询或修改行数(测试并未看到实际效果)
set term off	--不在屏幕显示txt文件的结果
set heading off	--不显示列名
set linesize off	--设置行宽,默认100,值要求大于你的查询结果的长度,否则会换行
select 语句

--执行完毕
spool off
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值