首页 数据库 mysql教程 【Oracle篇】约束和数据泵导入导出

【Oracle篇】约束和数据泵导入导出

Jun 07, 2016 pm 03:12 PM
oracle 导入 导出 建立 数据 用户 约束

-- : 建立一个用户,以下的操作在本用户下(例如用户名为 test) create user test identified by test; -- : 进入sys用户,分别在test下建立emp和dept表 create table test.emp as select * from scott.emp; create table test.dept as select * from scott.


-- : 建立一个用户,以下的操作在本用户下(例如用户名为  test)
create user test identified by test;

-- : 进入sys用户,分别在test下建立emp和dept表
 create table test.emp as select * from scott.emp;
 create table test.dept as select * from scott.dept;

--  使用命令给上题的表建立上主外键
alter table emp add constraints pk_empno primary key(empno);
alter table dept add constraints pk_deptno primary key(deptno);
alter table emp add constraints fk_de_em  foreign key(deptno) references dept(deptno);

-- 导出这个用户
--1、连接Oracle数据库
SQL> conn / as sysdba

--2、创建一个操作目录
SQL> create directory chenfeng_dir as 'D:\北民2014\7.1\dump';

--注意同时需要使用操作系统命令在硬盘上创建这个物理目录。

--目录已创建。

--3、分配目录对象my_dir使用权限,给需要导出的用户
SQL>grant read,write on directory chenfeng_dir to chenfeng;

C:\>expdp chenfeng/chenfeng directory=chenfeng_dir dumpfile=20140701_schema_chenfeng.dmp schemas=chenfeng logfile=chenfeng.log;

--: 删除这个用户
SQL> drop user chenfeng cascade;

--: 导入这个用户看看是否成功。
-- 用户的导入 ----------
--1、连接Oracle数据库
SQL> conn / as sysdba

--2、创建一个导入操作目录
SQL> create directory chenfeng_dir as 'D:\北民2014\7.1\dump';

--3、创建用户,并分配权限
SQL> create user chenfeng identified chenfeng;
SQL> grant connect,resource to chenfeng;
SQL> grant read,write on directory chenfeng_dir to chenfeng;

--4、导入用户
C:\>impdp chenfeng/chenfeng  directory=chenfeng_dir dumpfile=20140701_schema_chenfeng.dmp schemas=chenfeng;

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

-- 熟悉对约束操作的命令:
--建立列时、建立表时间、建立表后。

-- 一、主键加约束
--1-建立列时
create table student(
     sno number primary key,
     sname varchar2(20)
);
drop table student;

--2-建立表时间
create table student(
     sno number,
     sname varchar2(20),
     primary key(sno)
);

--3-建立表后。
create table student(
     sno number,
     sname varchar2(20)
);
alter table student add constraints pk_s primary key(sno);

-- 二、外键加约束
--1-建立列时
drop table teacher;

create table teacher(
     tno number  references student(sno),
     tname varchar2(20), 
     primary key(tno)
);

--2-建立表时间
create table teacher(
     tno number,
     tname varchar2(20),
     constraints  fk_t foreign key(tno) references student(sno)
);

--3-建立表后。
create table teacher(
     tno number,
     tname varchar2(20)
);
alter table teacher add constraints  fk_t foreign key(tno) references student(sno);

-- 二、非空加约束
--1-建立列时
drop table teacher;

create table teacher(
     tno number,
     tname varchar2(20) not null
);

--2-建立表后
create table teacher(
     tno number,
     tname varchar2(20)
);
alter table teacher modify  tname not null;

-- 二、独立加约束
--1-建立列时

drop table teacher;

create table teacher(
     tno number unique,
     tname varchar2(20)
);

--2-建立表时间
create table teacher(
     tno number,
     tname varchar2(20),
     constraints  uq_t unique(tno)
);

--2-建立表后
create table teacher(
     tno number,
     tname varchar2(20)
);
alter table teacher modify  tname unique;


-- 3.5、检查约束:用户表列数据必须要满足的自定义条件。

-- a、定义列的时候定义:
create table tab(
       tid number,
       tage number constraint ck_tage check(tage>=18)
);
-- b、定义表的时候定义:
create table tab(
       tid number,
       tsex number(1),
       constraint ck_tage check(tsex in(0,1))
);
-- c、定义表后定义:
create table tab(
       tid number,
       tsex number(1));
       
alter table tab add constraint ck_tage check(tsex in(1,0));



-- 查看约束
select constraint_name,constraint_type 
    from user_constraints where table_name='EMP';

-- 外键约束的“级联删除”、“级联置空” 设置

create table dept2 as select * from dept;
alter table dept2 add constraint pk_dept2 primary key(deptno);
create table emp2 as select *from emp;
alter table emp2 add constraint pk_emp2 primary key(empno);

-- 删除约束
alter table emp2 drop constraint fk_e2_d2;

-- 设定级联删除外键约束
alter table emp2 add constraint fk_e2_d2 foreign key(deptno) references dept2(deptno) on delete cascade;
-- 设定级联置空外键约束
alter table emp2 add constraint fk_e2_d2 foreign key(deptno) references dept2(deptno) on delete set null;

delete dept2 where deptno=20;



-- 4、视图 -------------------------

-- 需要分配给scott用户视图权限
grant create view to scott;
-- 视图:没有物理数据,仅仅捆绑了一个查询的虚拟数据源。

-- 建立视图:
create or replace view v_dept as select * from dept;


update dept set dname=lower(dname);


-- 视图的分类:
-- 1 简单视图:子查询仅仅涉及一张表,并且没有数据变型。
--             视图数据可以对应到物理数据的ROWID

-- 简单视图,可以通过对视图做DML操作,而修改物理数据。

update v_dept set dname=upper(dname);

-- 2 复杂视图:子查询涉及多张表,或者有数据变型。

-- 复杂视图,不能通过对视图做DML操作,而修改物理数据。

本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

热AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover

AI Clothes Remover

用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool

Undress AI Tool

免费脱衣服图片

Clothoff.io

Clothoff.io

AI脱衣机

AI Hentai Generator

AI Hentai Generator

免费生成ai无尽的。

热门文章

R.E.P.O.能量晶体解释及其做什么(黄色晶体)
3 周前 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.最佳图形设置
3 周前 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.如果您听不到任何人,如何修复音频
3 周前 By 尊渡假赌尊渡假赌尊渡假赌
WWE 2K25:如何解锁Myrise中的所有内容
3 周前 By 尊渡假赌尊渡假赌尊渡假赌

热工具

记事本++7.3.1

记事本++7.3.1

好用且免费的代码编辑器

SublimeText3汉化版

SublimeText3汉化版

中文版,非常好用

禅工作室 13.0.1

禅工作室 13.0.1

功能强大的PHP集成开发环境

Dreamweaver CS6

Dreamweaver CS6

视觉化网页开发工具

SublimeText3 Mac版

SublimeText3 Mac版

神级代码编辑软件(SublimeText3)

oracle数据库如何导入 oracle数据库如何导入 Apr 11, 2025 pm 08:06 PM

数据导入方法:1. 使用 SQLLoader 实用程序:准备数据文件、创建控制文件、运行 SQLLoader;2. 使用 IMP/EXP 工具:导出数据、导入数据。提示:1. 大数据集推荐 SQL*Loader;2. 目标表应存在,列定义匹配;3. 导入后需验证数据完整性。

oracle如何查表空间大小 oracle如何查表空间大小 Apr 11, 2025 pm 08:15 PM

要查询 Oracle 表空间大小,请遵循以下步骤:确定表空间名称,方法是运行查询:SELECT tablespace_name FROM dba_tablespaces;查询表空间大小,方法是运行查询:SELECT sum(bytes) AS total_size, sum(bytes_free) AS available_space, sum(bytes) - sum(bytes_free) AS used_space FROM dba_data_files WHERE tablespace_

oracle如何增加表字段 oracle如何增加表字段 Apr 11, 2025 pm 07:30 PM

使用 ALTER TABLE 语句,具体语法如下:ALTER TABLE table_name ADD column_name data_type [constraint-clause]。其中:table_name 为表名,column_name 为字段名,data_type 为数据类型,constraint-clause 为可选的约束。示例:ALTER TABLE employees ADD email VARCHAR2(100) 为 employees 表添加 email 字段。

如何在oracle中创建表 如何在oracle中创建表 Apr 11, 2025 pm 08:00 PM

创建 Oracle 表涉及以下步骤:使用 CREATE TABLE 语法指定表名、列名、数据类型、约束和默认值。表名应简洁、描述性,且不超过 30 个字符。列名应描述性,数据类型指定列中存储的数据类型。NOT NULL 约束确保列中不允许使用空值,DEFAULT 子句可指定列的默认值。PRIMARY KEY 约束标识表的唯一记录。FOREIGN KEY 约束指定表中的列引用另一个表中的主键。请参见示例表 students 的创建,其中包含主键、唯一约束和默认值。

oracle中乱码怎么解决 oracle中乱码怎么解决 Apr 11, 2025 pm 10:09 PM

Oracle 乱码问题可以通过以下步骤解决:检查数据库字符集以确保与数据相匹配。设置客户端字符集以与数据库相匹配。转换数据或修改列字符集以匹配数据库字符集。使用 Unicode 字符集,并避免多字节字符集。检查数据库和客户端的语言设置是否正确。

oracle如何去重查询 oracle如何去重查询 Apr 11, 2025 pm 07:33 PM

Oracle 提供多种去重查询方法:DISTINCT 关键字返回每列的唯一值。GROUP BY 子句对结果分组并返回每个分组的非重复值。UNIQUE 关键字用于创建仅包含唯一行的索引,查询该索引将自动去重。ROW_NUMBER() 函数分配唯一数字并过滤出仅包含第 1 行的结果。MIN() 或 MAX() 函数可返回数字列的非重复值。INTERSECT 运算符返回两个结果集的公共值(无重复项)。

oracle打不开怎么办 oracle打不开怎么办 Apr 11, 2025 pm 10:06 PM

Oracle 打不开的解决办法包括:1. 启动数据库服务;2. 启动监听器;3. 检查端口冲突;4. 正确设置环境变量;5. 确保防火墙或防病毒软件未阻止连接;6. 检查服务器是否已关闭;7. 使用 RMAN 恢复损坏的文件;8. 检查 TNS 服务名称是否正确;9. 检查网络连接;10. 重新安装 Oracle 软件。

oracle如何查看实例名 oracle如何查看实例名 Apr 11, 2025 pm 08:18 PM

在 Oracle 中查看实例名的方法有三种:命令行中使用 "sqlplus" 和 "select instance_name from v$instance;" 命令。在 SQL*Plus 中使用 "show instance_name;" 命令。通过操作系统的任务管理器、Oracle Enterprise Manager 或检查环境变量 (Linux 上的 ORACLE_SID)。

See all articles