• oracle的常规操作(基本命令)


     Oracle基本命令

    前言:... 3

    连接数据库:... 3

    使用sql*plus连接oracle. 3

    命令方式... 3

    文件操作命令... 3

    显示和设置环境变量... 3

    查看当前所有表... 4

    查询当前日期... 4

    查看本用户下的各种对象的SQL脚本... 4

    表空间管理... 5

    概述:... 5

    查看表空间的名字和所属文件... 5

    创建表空间:... 6

    修改表空间并为表空间添加物理文件:... 6

    增加表空间大小的四种方法... 6

    修改物理文件大小... 6

    修改用户表table的表空间... 7

    查询所有用户表:... 7

    删除表空间:... 7

    移动表至另一表空间... 7

    建立临时表空间... 7

    设定后查看表空间信息... 7

    用户管理:... 7

    创建用户... 7

    概述:... 7

    创建用户... 8

    查看当前用户所属角色:... 8

    查看当前用户的缺省表空间... 8

    查看某用户所拥有的对象:... 8

    查看某用户的所有表:... 8

    给用户修改密码... 8

    删除用户... 8

    角色管理... 9

    1.connect角色... 9

    2.resource角色... 9

    3.dba角色... 9

    4:创建角色:... 9

    5:给角色授权:... 10

    6:把某个角色的权限赋予某个用户... 10

    7:显示所有角色... 10

    Oracle表的管理... 10

    表名和列的命名规则... 10

    oracle支持的数据类型... 10

    字符类... 10

    数字型... 11

    日期类型... 11

    日期类型相关函数和格式转换函数的使用... 11

    图片... 13

    创建表的案例... 13

    建一个和a表结构一样的空表... 13

    创建序列(名称为:myCus_seq)... 14

    SQL编程语法:... 14

    循环的语句格式:... 14

    自定义函数和使用... 15

    创建函数... 15

    Oracle创建函数(function)... 15

    案例1:... 15

    案例2:... 16

    存储过程相关:... 16

    1、基本语法... 16

    写一个简单的例子修改emp表的ename字段... 16

    有返回值的存储过程... 17

    Oracle创建包... 17

    概述:... 17

    1、创建包规范... 17

    实例:... 18

    用pl/sql developer导出表结构和数据... 19

    1、点击Tools--Export User Objects 19

    2、如果想将表中数据一起导出,可用Tools--Export Tables 19

    第一种是导出为.dmp的文件... 19

    第二种是导出为.sql文件:... 19

    第三种是导出为.pde格式:... 19


    前言:

    连接数据库:

    使用sql*plus连接oracle

    命令方式

    1.conn[ect]

    用法:conn 用户名/密码@网络服务名[as sysdba/sysoper]当用特权用户身份连接时,必须带上as sysdba或是as sysoper

    远程连接:sqlplus usr/pwd@//host:port/sid 如:conn sys/admin@127.0.0.1:1521/orcl as sysdba;

    2.disc[onnect]

    说明: 该命令用来断开与当前数据库的连接

    3.psssw[ord]

    说明: 该命令用于修改用户的密码,如果要想修改其它用户的密码,需要用sys/system登录。4.show user

    说明: 显示当前用户名

    5.exit

    说明: 该命令会断开与数据库的连接,同时会退出sql*plus

    文件操作命令

    1.start和@

    说明: 运行sql脚本

    案例: sql>@ d:a.sql或是sql>start d:a.sql

    2.edit

    说明: 该命令可以编辑指定的sql脚本

    案例: sql>edit d:a.sql,这样会把d:a.sql这个文件打开

    3.spool

    说明: 该命令可以将sql*plus屏幕上的内容输出到指定文件中去。

    案例: sql>spool d:.sql 并输入 sql>spool off

    显示和设置环境变量

    概述:可以用来控制输出的各种格式,show all可以显示当前相关的设置

    1.linesize

    说明:设置显示行的宽度,默认是80个字符

    show linesize

    set linesize 90

    查看当前所有表:

    select * from tab;

    查询当前日期

    select to_char(sysdate,'yyyy-mm-dd,hh24:mi:ss') from dual;

    查看本用户下的各种对象的SQL脚本

    SQL语句:

    表:

      select * from cat;

      select * from tab;

      select table_name from user_tables;

    视图:

      select text from user_views where view_name=upper('&view_name');

    索引:

      select index_name,table_owner,table_name,tablespace_name,status from user_indexes order by table_name;

    触发器:

      select trigger_name,trigger_type,table_owner,table_name,status from user_triggers;

    快照:

      select owner,name,master,table_name,last_refresh,next from user_snapshots order by owner,next;

    同义词:

      select * from syn;

    序列:

      select * from seq;

    数据库链路:

      select * from user_db_links;

    约束限制:

      select TABLE_NAME,CONSTRAINT_NAME,SEARCH_CONDITION,STATUS from user_constraints;

    本用户读取其他用户对象的权限:

      select * from user_tab_privs;

    本用户所拥有的系统权限:

      select * from user_sys_privs;

    用户:

      select * from all_users order by user_id;

    表空间剩余自由空间情况:

      select tablespace_name,sum(bytes) 总字节数,max(bytes),count(*) from dba_free_space group by tablespace_name;

    数据字典:

      select table_name from dict order by table_name;

    锁及资源信息:

      select * from v$lock;不包括DDL锁

    数据库字符集:

      select name,value$ from props$ where name='NLS_CHARACTERSET';

    inin.ora参数:

      select name,value from v$parameter order by name;

    SQL共享池:

      select sql_text from v$sqlarea;

    数据库:

      select * from v$database

    控制文件:

      select * from V$controlfile;

    重做日志文件信息:

      select * from V$logfile;

    来自控制文件中的日志文件信息:

      select * from V$log;

    来自控制文件中的数据文件信息:

      select * from V$datafile;

    NLS参数当前值:

      select * from V$nls_parameters;

    ORACLE版本信息:

      select * from v$version;

    描述后台进程:

      select * from v$bgprocess;

    查看版本信息:

      select * from product_component_version;

    表空间管理

    概述:

    Oracle表空间是数据管理的基本方法,所有用户的对象要存放在表空间中,也就是用户有空间的使用权,才能创建用户对象。否则是不充许创建对象,因为就是想创建对象,如表,索引等,也没有地方存放,Oracle会提示:没有存储配额。因此,在创建对象之前,首先要分配存储空间。分配存储,就要创建表空间

    Oracle可以创建的表空间有三种类型:

    (1)TEMPORARY: 临时表空间,用于临时数据的存放;创建临时表空间的语法如下:CREATE TEMPORARY TABLESPACE "SAMPLE"。。。。。。

    (2)UNDO : 还原表空间。用于存入重做日志文件。创建还原表空间的语法如下:CREATE UNDOTABLESPACE "SAMPLE"。。。。。。

    (3)用户表空间: 最重要,也是用于存放用户数据表空间可以直接写成: CREATE TABLESPACE"SAMPLE"TEMPORARY 和 UNDO 表空间是Oracle 管理的特殊的表空间。只用于存放系统相关数据。

    查看表空间的名字和所属文件

    select tablespace_name, file_id, file_name,

    round(bytes/(1024*1024),0) total_space

    from dba_data_files

    order by tablespace_name;

    创建表空间:

    创建表空间名称为:epet_tablespace

    表空间的物理文件位置:E:oracleproduct10.2.0oradataJBITDBEPET.DBF 大小为100M

    CREATE TABLESPACE epet_tablespace

    DATAFILE 'E:oracleproduct10.2.0oradataJBITDBEPET.DBF'

    SIZE 100M;

    修改表空间并为表空间添加物理文件:

    ALTER TABLESPACE JIANGWFTABLESPACE ADD DATAFILE 'E:PROJECTSHONGHUAPROJECTDATABASEHONGHUAJIANGWFTABLESPACE2.DBF'

    size   50m;

     

    ALTER TABLESPACE "TEMPTABLESPACE" ADD DATAFILE 'E:PROJECTSHONGHUAPROJECTDATABASEHONGHUAJIANGWFTABLESPACE2.ORA'

    SIZE 5M AUTOEXTEND ON NEXT 100K MAXSIZE UNLIMITED

    增加表空间大小的四种方法

     Meathod1:给表空间增加数据文件

     ALTER TABLESPACE app_data ADD DATAFILE

     'D:ORACLEPRODUCT10.2.0ORADATAEDWTESTAPP03.DBF' SIZE 50M;

     

     Meathod2:新增数据文件,并且允许数据文件自动增长

     ALTER TABLESPACE app_data ADD DATAFILE

     'D:ORACLEPRODUCT10.2.0ORADATAEDWTESTAPP04.DBF' SIZE 50M

     AUTOEXTEND ON NEXT 5M MAXSIZE 100M;

     

     Meathod3:允许已存在的数据文件自动增长

     ALTER DATABASE DATAFILE 'D:ORACLEPRODUCT10.2.0ORADATAEDWTESTAPP03.DBF'

     AUTOEXTEND ON NEXT 5M MAXSIZE 100M;

     

     Meathod4:手工改变已存在数据文件的大小

     ALTER DATABASE DATAFILE 'D:ORACLEPRODUCT10.2.0ORADATAEDWTESTAPP02.DBF'

     RESIZE 100M;

    修改物理文件大小

    alter database datafile 'E:PROJECTSHONGHUAPROJECTDATABASEHONGHUAJIANGWFTABLESPACE3.DBF'

    resize 10M

    修改用户表table的表空间

    alter table 表名 move tablespace 新表空间名;

    查询所有用户表:

    select * from user_tables;

    删除表空间:

    drop tablespace 表空间名称

    移动表至另一表空间

    alter table move tablespace room1;

    建立临时表空间

    CREATE TEMPORARY TABLESPACE temp_data

    TEMPFILE '/oracle/oradata/db/TEMP_DATA.dbf' SIZE 50M

    设定后查看表空间信息

    SELECT A.TABLESPACE_NAME,A.BYTES TOTAL,B.BYTES USED, C.BYTES FREE,

    (B.BYTES*100)/A.BYTES "% USED",(C.BYTES*100)/A.BYTES "% FREE"

    FROM SYS.SM$TS_AVAIL A,SYS.SM$TS_USED B,SYS.SM$TS_FREE C

    WHERE A.TABLESPACE_NAME=B.TABLESPACE_NAME AND A.TABLESPACE_NAME=C.TABLESPACE_NAME;

    用户管理:

    创建用户

    概述:在oracle中要创建一个新的用户使用create user语句,一般是具有dba(数据库管理员)的权限才能使用。

     语法格式:create user 用户名 identified by 密码;

    创建用户

    create user EPET

      identified by "BDQN"

      default tablespace "EPET_TABLESPACE"

      temporary tablespace "DIAOCHA_TEMP"

      profile DEFAULT

      ACCOUNT UNLOCK;

    给用户赋予某个角色的权限:

    grant 角色 to QIUDING;

    grant unlimited tablespace to QIUDING

    查看当前用户所属角色:

    select * from user_role_privs;

    查看当前用户的缺省表空间

     select username,default_tablespace from user_users;

    查看某用户所拥有的对象:

    SELECT owner,object_name, object_type FROM dba_objects WHERE owner= 'EPET';

    查看某用户的所有表:

    select * from all_tables where owner='SHOPXP';--用户名称为“SHOPXP”的所有表

    给用户修改密码

    概述:如果给自己修改密码可以直接使用

    password 用户名

    如果给别人修改密码则需要具有dba的权限,或是拥有alter user的系统权限

    alter user 用户名 identified by 新密码

    删除用户

    概述:一般以dba的身份去删除某个用户,如果用其它用户去删除用户则需要具有drop user的权限。

    比如 drop user 用户名 【cascade】

    在删除用户时,注意:

    如果要删除的用户,已经创建了表,那么就需要在删除的时候带一个参数cascade;

    权限说明:

    创建的新用户是没有任何权限的,甚至连登陆的数据库的权限都没有,需要为其指定相应的权限。给一个用户赋权限使用命令grant,回收权限使用命令revoke。

    角色管理

    1.connect角色

     connect角色具有一般应用开发人员需要的大部分权限,当建立了一个用户后,多数情况下,只要给用户授予connect和 resource角色就够了,那么connect角色具有哪些系统权限呢?

     alter session

     create table

     create view

     create sequence create cluster

     create database link

     create session

     2.resource角色

     resource角色具有应用开发人员所需要的其它权限,比如建立存储过程,触发器等。这里需要注意的是 resource角色隐含了unlimited tablespace系统权限。

     resource角色包含以下系统权限:

     create cluster

     create indextype

     create table

     create sequence  create type

     create procedure

     create trigger

    3.dba角色

     dba角色具有所有的系统权限,及with admin option选项,默认的dba用户为sys和system,它们可以将任何系统权限授予其他用户。但是要注意的是dba角色不具备sysdba和sysoper的特权(启动和关闭数据库)。

     自定义角色.

     顾名思义就是自己定义的角色,根据自己的需要来定义。一般是dba来建立,如果用别的用户来建立,则需要具有create role的系统权限。在建立角色时可以指定验证方式(不验证,数据库验证等)。

    4:创建角色:

    CREATE ROLE "QIUDINGROLE" NOT IDENTIFIED;

    把角色赋予某个用户

    GRANT "CONNECT" TO "QIUDINGROLE";

    GRANT "DBA" TO "QIUDINGROLE";

    GRANT "RESOURCE" TO "QIUDINGROLE";

    5:给角色授权:

    grant select on scott.emp to 角色名;

    grant insert, update, delete on scott.emp to 角色名;

    6:把某个角色的权限赋予某个用户

    grant 角色名 to 用户名称

    GRANT DBA TO用户名称; 

    GRANT resource TO用户名称;

    7:显示所有角色

     SQL> select * from dba_roles;

    Oracle表的管理

    表名和列的命名规则

    · 必须以字母开头

    · 长度不能超过30个字符

    · 不能使用oracle的保留字

    · 只能使用如下字符 A-Z,a-z,0-9,$,#等

    oracle支持的数据类型

     字符类

    char    定长 最大2000个字符。

    例子:char(10)  ‘小韩’前四个字符放‘小韩’,后添6个空格补全 如‘小韩      ’ varchar2(20)  变长  最大4000个字符。

    例子:varchar2(10) ‘小韩’ oracle分配四个字符。这样可以节省空间。

    clob(character large object) 字符型大对象 最大4G

    char 查询的速度极快浪费空间,查询比较多的数据用。

    varchar 节省空间

    数字型

    number范围 -10的38次方 到 10的38次方,可以表示整数,也可以表示小数 :number(5,2)表示一位小数有5位有效数,2位小数

    范围:-999.99到999.99

    number(5)  表示一个5位整数

    范围99999到-99999

    日期类型

    date 包含年月日和时分秒   oracle默认格式  1-1月-1999

    timestamp 这是oracle9i对date数据类型的扩展。可以精确到毫秒。

    日期类型相关函数和格式转换函数的使用

    获取系统日期:  SYSDATE()

    格式化日期:    TO_CHAR(SYSDATE(),'YY/MM/DD HH24:MI:SS)

          或        TO_DATE(SYSDATE(),'YY/MM/DD HH24:MI:SS)

    格式化数字:    TO_NUMBER

           注:     TO_CHAR  把日期或数字转换为字符串

                    TO_CHAR(number, '格式')

                    TO_CHAR(salary, '$99,999.99')

                    TO_CHAR(date, '格式')

                    TO_DATE  把字符串转换为数据库中的日期类型

                    TO_DATE(char, '格式')

                    TO_NUMBER  将字符串转换为数字

                    TO_NUMBER(char, '格式')

    返回系统日期,输出 25-12月-09

    select sysdate from dual;

    mi是分钟,输出 2009-12-25 14:23:31

    select to_char(sysdate,'yyyy-MM-dd HH24:mi:ss') from dual;

    mm会显示月份,输出 2009-12-25 14:12:31

    select to_char(sysdate,'yyyy-MM-dd HH24:mm:ss') from dual;

    输出 09-12-25 14:23:31

    select to_char(sysdate,'yy-mm-dd hh24:mi:ss') from dual 

    输出 2009-12-25 14:23:31

    select to_date('2009-12-25 14:23:31','yyyy-mm-dd,hh24:mi:ss') from dual

    而如果把上式写作:

     select to_date('2009-12-25 14:23:31','yyyy-mm-dd,hh:mi:ss') from dual

    则会报错,因为小时hh是12进制,14为非法输入,不能匹配。

    输出 $10,000,00 :

    select to_char(1000000,'$99,999,99') from dual;

    输出 RMB10,000,00 :

    select to_char(1000000,'L99,999,99') from dual;

    输出 1000000.12 :

    select trunc(to_number('1000000.123'),2) from dual;

    select to_number('1000000.123') from dual;

    转换的格式:

    表示 year 的:y 表示年的最后一位 、

                 yy 表示年的最后2位 、

                 yyy 表示年的最后3位 、

                 yyyy 用4位数表示年

    表示month的: mm 用2位数字表示月 、

                 mon 用简写形式, 比如11月或者nov 、

                 month 用全称, 比如11月或者november

    表示day的: dd  表示当月第几天 、

                 ddd 表示当年第几天 、

                 dy  当周第几天,简写, 比如星期五或者fri 、

                 day 当周第几天,全称, 比如星期五或者friday

    表示hour的:hh   2位数表示小时 12进制 、

                  hh24 2位数表示小时 24小时

    表示minute的:mi 2位数表示分钟

    表示second的:ss 2位数表示秒 60进制

    表示季度的:q 一位数 表示季度 (1-4)

    另外还有ww 用来表示当年第几周 w用来表示当月第几周。

    24小时制下的时间范围:00:00:00-23:59:59

    12小时制下的时间范围:1:00:00-12:59:59

    数字格式:  9  代表一个数字

              0  强制显示0

              $  放置一个$符

              L  放置一个浮动本地货币符

              .  显示小数点

              ,  显示千位指示符

    补充:

    当前时间减去7分钟的时间

    select sysdate,sysdate - interval '7' MINUTE from dual;

    当前时间减去7小时的时间

    select sysdate - interval '7' hour from dual;

    当前时间减去7天的时间

    select sysdate - interval '7' day from dual;

    当前时间减去7月的时间

    select sysdate,sysdate - interval '7' month from dual;

    当前时间减去7年的时间

    select sysdate,sysdate - interval '7' year from dual;

    时间间隔乘以一个数字

    select sysdate,sysdate - 8*interval '7' hour from dual;

    图片

    blob 二进制数据 可以存放图片/声音  4G   一般来讲,在真实项目中是不会把图片和声音真的往数据库里存放,一般存放图片、视频的路径,如果安全需要比较高的话,则放入数据库。

    创建表的案例

    --创建好了表空间和用户student后

    --用student用户登录,就可以创建表了

    create table grade

    (

    gradeid number primary key,

    name varchar2(29),

    location varchar2(30)

    )

    --create sequence seq_grade increment by 1 start with 1 nomaxvalue nocycle

    --nocache;

    --create or replace trigger tri_grade before insert on grade for each row

    --begin

     -- select seq_grade.Nextval into:new.gradeid from dual;

    --end

    insert into grade(gradeid,name,location) values(1,'jiangwf','shenzhen');

    insert into grade(gradeid,name,location) values(2,'zhulei','shenzhen');

    insert into grade(gradeid,name,location) values(3,'jianghaoyu','shenzhen');

    select * from grade

    create table 学生表

    (

    学生编号 number primary key,

    学生姓名 varchar2(50),

    学生地址 varchar2(50)

    );

    insert into 学生表(学生编号,学生姓名,学生地址) values(1,'jiangwf','shenzhen');

    insert into 学生表(学生编号,学生姓名,学生地址) values(2,'zhulei','shenzhen');

    insert into 学生表(学生编号,学生姓名,学生地址) values(3,'jianghaoyu','shenzhen');

    建一个和a表结构一样的空表

    create table b as select * from a where 1=2;

    create table b(b1,b2,b3) as select a1,a2,a3 from a where 1=2;

    创建序列(名称为:myCus_seq)

    CREATE SEQUENCE myCus_seq

    START WITH 1

    INCREMENT BY 1

    NOMAXVALUE

    CACHE 10;

    SQL编程语法:

    循环的语句格式:

    declare

    x number;

    begin

    x:=0;

    loop

    x:=x+1;

    if x>=3 then

    exit;

    end if;

    dbms_output.put_line('内部x='||x);

    end loop;

    dbms_output.put_line('外部x='||x);

    end;

    /

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

    begin

    for i in 1..5 loop

    dbms_output.put_line('内部i='||i);

    end loop;

    dbms_output.put_line('结束');

    end;

    /

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

    declare

    x number;

    begin

    x:=0;

    while x<=3 loop

    x:=x+1;

    dbms_output.put_line('内部x='||x);

    end loop;

    dbms_output.put_line('外部x='||x);

    end;

    /

    自定义函数和使用

    创建函数

    Oracle创建函数(function)

    1、基本语法规则如下:

    create or replace function (Name in type, Name in type, ...) return number is

      Result number;

    begin

      return (Result);

    end ;

    ----例子---------------------------------------------------------------------

     create or replace function getmastername(uid number) return varchar2

     as

     mname varchar2(50);

     begin

     select  loginid into mname from master where master.id=uid;

     return mname;

     end;

    案例1:

    create or replace function jiangwf.getUserName(userid varchar2)

    return varchar2

    is

    uName varchar2(50);

    begin

    select nvl(UserName,'') into uName from jiangwf.UserInfo where UserNo=userid;

    return uName;

    end;

    调用函数

    select jiangwf.getUserName(UserNo),jiangwf.UserInfo.UserPWD from jiangwf.UserInfo

    *********************************************************************************************

    案例2:

    创建函数

    create or replace function jiangwf.getUserPWD(userid varchar2)

    return varchar2

    is

    UserPassWord varchar2(50);

    begin

    select nvl(UserPWD,'') into UserPassWord from jiangwf.UserInfo where UserNo=userid;

    return UserPassWord;

    end;

    调用:

    select jiangwf.UserInfo.*,jiangwf.getUserPWD(UserNo) from jiangwf.UserInfo;

    存储过程相关:

    1、基本语法

    create or replace procedure update_emp_sal

    (Name in out type,

     Name in out type, ...

    ) is

    begin

     

    end update_emp_sal;

    写一个简单的例子修改emp表的ename字段

    create or replace procedure update_emp

    (

    v_empno  varchar2,

    v_ename  varchar2

    ) is

    begin

    update emp set ename=v_ename where empno=v_empno; 

    end update_emp;

    调用方法如下:

    exec  update_emp('7935','test');

    有返回值的存储过程

    就写一个简单的返回empno=7935的sal值

    create or replace procedure emp_out_sal

     (

     v_empno in varchar2,

     v_sal out number

     ) is

     vsal number(7,2);

     begin

          select sal into vsal from emp where empno=v_empno;

          v_sal:=vsal;

     end;

    调用有返回值的过程

    var vsal number

    exec emp_out_sal('7935',:vsal);

    PL/SQL procedure successfully completed

    vsal

    ---------

    700

    SQL> var vsal number

    SQL> call emp_out_sal('7935',:vsal);

    Method called

    vsal

    ---------

    700

    Oracle创建包

    概述:

    包用于组合逻辑相关的过程和函数,它由包规范和包体两个部分组成。包规范用于定义公用的常量、变量、过程和函数,创建包规范可以使用CREATE PACKAGE命令,创建包体可以使用CREATE PACKAGE BODY

    1、创建包规范

     create package emp_pkg is

     procedure emp_update_ename(v_empno varchar2,v_ename varchar2);

     function emp_get_sal(v_empno varchar2) return number;

     end;

    创建包体

    create or replace package body emp_pkg

    is

        procedure emp_update_ename

        (

        v_empno varchar2,

        v_ename varchar2

        )

        is

        vename varchar2(32);

        begin

        update emp set ename=v_ename where empno=v_empno;

        commit;

        select ename into vename from emp where empno=v_empno;

      

        dbms_output.put_line('雇员名称:'||vename);

       

        end;

       

        function emp_get_sal

        (

        v_empno varchar2

        )

        return number is

        vsal number(7,2);

        begin

        select sal into vsal from emp where empno=v_empno;

        return vsal;

        end;

    end;

    在此提示,在没有创建包规范就创建包体,会失败,要使用包,必须先创建包规范,然后在创建包体

    当要调用包的过程和函数时,在过程和函数的名称前加上包名作为前缀(包名.子程序名称),而如果要访问其他方案的包时需要在包的名称前加上方案的名称(方案名称.包名.子程序名称)

    实例:

    SQL> var vsla number

    SQL> call emp_pkg.emp_get_sal('7935') into :vsal;

    Method called

    vsal

    ---------

    700

    SQL> exec emp_pkg.emp_update_ename('7935','helong');

    雇员名称:helong

    SQL> call emp_pkg.emp_update_ename('7935','helong');

    Method called

    SQL> select * from dual;

    DUMMY

    -----

    X

    用pl/sql developer导出表结构和数据

    1、点击Tools--Export User Objects

        这种方式可以导出当前用户拥有的所有对象,包括表、视图、触发器、同义词等等,对于表,只能导出表结构,不能导出数据,选中要导出的对象,设置好导出的路径和各个参数后,点击Export就OK

        PS:这种方式还可以导出其他用户的对象,在下面user下拉框中选择要用户就可以,默认是系统当前登录用户

    2、如果想将表中数据一起导出,可用Tools--Export Tables:

    这种方式导出的文件,本身就带着创建表结构的sql语句 选中要导出的表(可选多个),导出方式有三种:

        Oracle Export,Sql Insert,pl/sql developer

     第一种是导出为.dmp的文件:

    .dmp文件是二进制的,可以跨平台,还能包含权限,效率也很不错,用得最广

    第二种是导出为.sql文件:

    可用文本编辑器查看,通用性比较好,但效率不如第一种,适合小数据量导入导出。尤其注意的是表中不能有大字段(blob,clob),如果有,会提示不能导出,可以用第一种和第三种方式导出。

    第三种是导出为.pde格式:

    .pde为Pl/sql developer自有的文件格式,只能用Pl/sql developer自己导入导出;不能用编辑器查看,效率不知道怎么样

    PS:只有“Oracle Export”方式导出再导入后,表结构和索引结构没有发生变化,另两种方式都改变了索引类型。 导入的情况和导出一样

  • 相关阅读:
    送给每天用电脑超4小时的朋友!!
    股票技术指标分析详细
    2003安装新版MSN9的方法 / MSN9 for 2003
    买卖股票基本原则新手参考
    更改Windows软件默认安装路径
    永不套牢的方法(教你正确止损)
    股票的技术参数很多,图线参数常见的有这些
    教育网ftp大全
    【笔记】【汇编语言】第4章 第一个程序
    【笔记】【汇编语言】第2章 寄存器
  • 原文地址:https://www.cnblogs.com/nucdy/p/5619505.html
Copyright © 2020-2023  润新知