首页 新闻 论坛 群组 Blog 文档 下载 读书 Tag 网摘 搜索 .NET Java 游戏 视频 人才 外包 培训 数据库 书店 程序员
中国软件网
欢迎您:游客 | 登录 注册 帮助
  • 求sqlplus里的常用命令!! [已结帖,结帖人:chendabian]
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • chendabian
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    • 结帖率:
    发表于:2008-11-07 12:33:50 楼主
    刚接触oracle 希望了解一些sqlplus里的常用命令!!

    这里只开个头:

    大家有何高见; 请不吝赐教~~! 还发现一个问题, 这个板块竟然没有精华帖子~?

    建表语句
    create table students(stuid int);

    多个属性时 可以这样:

    CREATE  TABLE  A103AREASTRU  ( 
          ID  NUMBER(10,  0), 
          ENGFLDNAME  VARCHAR2(30), 
          CHNFLDNAME  VARCHAR2(40), 
          FLDTYPE  VARCHAR2(10), 
          FLDLENGTH  NUMBER(10,  0), 
          FLDDEC  NUMBER(2,  0), 
          DEFAULTVALUE  VARCHAR2(254), 
          RELAMASTER  VARCHAR2(100) 
      );

    插入记录:
    insert into students values(1001);

    查询:
    select * from students;

    删除表:
    drop table students;

    查询数据库里有哪些表:
    select * from tab;
    200  修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • hdhai9451
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-11-07 12:39:401楼 得分:10

    ORACLE的基本语法集锦


    -- 表
    create table test (names varchar2(12),
                      dates date,
                      num  int,
                      dou  double);
    -- 视图
    create or replace view vi_test as
    select * from test;

    -- 同义词
    create or replace synonym aa
    for dbusrcard001.aa;

    -- 存储过程
    create or replace produce dd(v_id in employee.empoy_id%type)
    as
    begin
       
    end
    dd;

    -- 函数
    create or replace function ee(v_id in employee%rowtype) return varchar(15)
    is
    var_test varchar2(15);
    begin
      return var_test;
    exception when others then
       
    end

    -- 三种触发器的定义
    create or replace trigger ff
    alter delete
    on test
    for each row
    declare
    begin
      delete from test;
      if sql%rowcount  < 0 or sql%rowcount is null then
          rais_replaction_err(-20004,"错误")
      end if
    end


    create or replace trigger gg
    alter insert
    on test
    for each row
    declare
    begin
      if :old.names = :new.names then
          raise_replaction_err(-2003,"编码重复");
      end if
    end


    create or replace trigger hh
    for update
    on test
    for each row
    declare
    begin
      if updating then
        if :old.names  <> :new.names then
    reaise_replaction_err(-2002,"关键字不能修改")
        end if
      end if
    end 

    -- 定义游标
    declare
      cursor aa is
          select names,num from test;
    begin
      for bb in aa
      loop
            if bb.names = "ORACLE" then
           
            end if
      end loop;
       
    end

    -- 速度优化,前一语句不后一语句的速度快几十倍
    select names,dates 
    from test,b
    where test.names = b.names(+) and
          b.names is null and
          b.dates > date('2003-01-01','yyyy-mm-dd')

     
    select names,dates
    from test 
    where names not in ( select names 
                          from b
                          where dates > to_date('2003-01-01','yyyy-mm-dd'))
                           

    -- 查找重复记录
    select names,num 
    from test 
    where rowid != (select max(rowid) 
                    from test b 
                    where b.names = test.names and
                          b.num = test.num)


    -- 查找表TEST中时间最新的前10条记录
    select * from (select * from test order by dates desc) where rownum  < 11

    -- 序列号的产生
    create sequence row_id
    minvalue 1
    maxvalue 9999999999999999999999
    start with 1
    increment by 1

    insert into test values(row_id.nextval,....) 
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • hdhai9451
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-11-07 12:40:362楼 得分:30
    oracle的临时表
    ORACLE的临时表在应用系统中有很大的作用,它可以让用户只能够操作各自的数据中而互不干扰,不用担心会破坏或影响其他SESSION/TRANSACTION的数据,这也是数据安全的一种解决方法

        临时表分为SESSION、TRANSACTION两种,SESSION级的临时表数据在整个SESSION都存在,直到结束此次SESSION;而TRANSACTION级的临时表数据在TRANACTION结束后消失,即COMMIT/ROLLBACK或结束SESSION都会清除TRANACTION临时表数据。

        两种临时表的语法:

        create global temporary table 临时表名 on commit preserve|delete rows
        用preserve时就是SESSION级的临时表,用delete就是TRANSACTION级的临时表

        例:1、SESSION级临时表

        --建立临时表

    create global temporary table temp_tbl(col_a varchar2(30))
        on commit preserve rows

        --插入数据

        insert into temp_tbl values('test session table')

        --提交 commit

        --查询数据

        select *from temp_tbl

        可以看到数据'test session table'记录还在

        --结束SESSION,重新登录,再查询数据select *from temp_tbl,这时候记录已不存在,因为系统在结束SESSION时自动清除记录

        2、TRANSACTION级临时表

        --建立临时表

    create global temporary table temp_tbl(col_a varchar2(30))
    on commit delete rows

        --插入数据

        insert into temp_tbl values('test transaction table')

        --提交
        commit
        --查询数据

        select *from temp_tbl

        这时候可以看到刚才插入的记录'test transaction table'已不存在了;同样,如果不提交而直接结束SESSION,重新登录记录也不存在。
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • linzhangs
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-11-07 12:40:543楼 得分:0
    这些都是基本sql语句算不上sqlplus的。
    接分
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • sleepzzzzz
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-11-07 12:51:404楼 得分:0
    帮你写两个:
    SQL> set serveroutput on

    SQL> edit
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • BlueskyWide
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    • 2

    发表于:2008-11-07 13:08:045楼 得分:5
    查看数据库的SQL

    1、查看表空间的名称及大小

        select t.tablespace_name, round(sum(bytes/(1024*1024)),0) ts_size
        from dba_tablespaces t, dba_data_files d
        where t.tablespace_name = d.tablespace_name
        group by t.tablespace_name;

    2、查看表空间物理文件的名称及大小

        select tablespace_name, file_id, file_name,
        round(bytes/(1024*1024),0) total_space
        from dba_data_files
        order by tablespace_name;

    3、查看回滚段名称及大小

        select segment_name, tablespace_name, r.status,
        (initial_extent/1024) InitialExtent,(next_extent/1024) NextExtent,
        max_extents, v.curext CurExtent
        From dba_rollback_segs r, v$rollstat v
        Where r.segment_id = v.usn(+)
        order by segment_name ;

    4、查看控制文件

        select name from v$controlfile;

    5、查看日志文件

        select member from v$logfile;

    6、查看表空间的使用情况

        select sum(bytes)/(1024*1024) as free_space,tablespace_name
        from dba_free_space
        group by tablespace_name;

        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;

    7、查看数据库库对象

        select owner, object_type, status, count(*) count# from all_objects group by owner, object_type, status;

    8、查看数据库的版本

        Select version FROM Product_component_version
        Where SUBSTR(PRODUCT,1,6)='Oracle';

    9、查看数据库的创建日期和归档方式

        Select Created, Log_Mode, Log_Mode From V$Database;
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • hdhai9451
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-11-07 13:12:586楼 得分:10
    set wrap off
    set linesize 1000
    设置每行显示1000个字符
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • chendabian
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-11-07 13:14:337楼 得分:0
    我原来用的是 mysql 现在换oracle 有很多不明白的地方

    比如:
    我原来都是 先创建一个数据库, 然后在这个数据库里 建一个表;

    各个数据库之间 独立;

    可以方便的使用 use 数据库名字;切换

    create table borrow
    (
    borrowno int primary key,
    bookno int,
    studentno int,
    foreign key (bookno) references books(bookno) on delete cascade on update cascade,
    foreign key (studentno) references students(studentno) on delete cascade on update cascade,
    borrowdate datetime,
    returndate datetime,
    action int,
    comment varchar(10)
    );

    像如上 设置 主键, 外键的做法;
    oracle里可以吗??
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • gdqsh
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-11-07 13:20:358楼 得分:0
    >sqlplus /nolog
    SQL>conn/sys 用户名/密码 as dba
    SQL>.....
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • zou_wei_forever
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-11-07 18:33:039楼 得分:0
    mark!
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • codearts
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-11-07 20:38:4110楼 得分:10
    我来补上spool
    sql>spool test.txt
    sql>select * from v$datafile;
    sql>spool off

    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • jdsnhan
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-11-07 22:46:3011楼 得分:20
    引用 7 楼 chendabian 的回复:
    我原来用的是 mysql 现在换oracle 有很多不明白的地方

    比如:
    我原来都是 先创建一个数据库, 然后在这个数据库里 建一个表;

    各个数据库之间 独立;

    可以方便的使用 use 数据库名字;切换

    create table borrow
    (
    borrowno int primary key,
    bookno int,
    studentno int,
    foreign key (bookno) references books(bookno) on delete cascade on update cascade,
    foreign key (studentno) references stud…


    oracle 是单库结果,可以通过不同的用户进行区分。
    建立表的基本语法差不多
    create table CUST
    (
      CUSTID  NUMBER(9) not null,
      CUSTNAME VARCHAR2(10),
      CARDID  VARCHAR2(20),
      BIRTH    DATE,
      SEX      VARCHAR2(1),
      PHONE    VARCHAR2(50),
      ADDRESS  VARCHAR2(100),
      ID      VARCHAR2(20)
    );
    alter table CUST
      add constraint PK_CUST primary key (CUSTID)
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • wangsong145
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-11-08 17:15:5712楼 得分:50
    1. 执行一个SQL脚本文件
    SQL>start file_name
    SQL>@ file_name
    我们可以将多条sql语句保存在一个文本文件中,这样当要执行这个文件中的所有的sql语句时,用上面的任一命令即可,这类似于dos中的批处理。
     
    2. 对当前的输入进行编辑
    SQL>edit
     
    3. 重新运行上一次运行的sql语句
    SQL>/
     
    4. 将显示的内容输出到指定文件
    SQL> SPOOL file_name
      在屏幕上的所有内容都包含在该文件中,包括你输入的sql语句。
     
    5. 关闭spool输出
    SQL> SPOOL OFF
      只有关闭spool输出,才会在输出文件中看到输出的内容。
     


    6.显示一个表的结构
    SQL> desc table_name
     
    7. COL命令:
    主要格式化列的显示形式。
    该命令有许多选项,具体如下:
    COL[UMN] [{ column|expr} [ option ...]]
    Option选项可以是如下的子句:
    ALI[AS] alias
    CLE[AR]
    FOLD_A[FTER]
    FOLD_B[EFORE]
    FOR[MAT] format
    HEA[DING] text
    JUS[TIFY] {L[EFT]|C[ENTER]|C[ENTRE]|R[IGHT]}
    LIKE { expr|alias}
    NEWL[INE]
    NEW_V[ALUE] variable
    NOPRI[NT]|PRI[NT]
    NUL[L] text
    OLD_V[ALUE] variable
    ON|OFF
    WRA[PPED]|WOR[D_WRAPPED]|TRU[NCATED]
     
    1). 改变缺省的列标题
    COLUMN column_name HEADING column_heading
    For example:
    Sql>select * from dept;
        DEPTNO DNAME                        LOC
    ---------- ---------------------------- ---------
            10 ACCOUNTING                  NEW YORK
    sql>col  LOC heading location
    sql>select * from dept;
        DEPTNO DNAME                        location
    --------- ---------------------------- -----------
            10 ACCOUNTING                  NEW YORK
     
    2). 将列名ENAME改为新列名EMPLOYEE NAME并将新列名放在两行上:
    Sql>select * from emp
    Department  name          Salary
    ---------- ---------- ----------
            10 aaa                11       
    SQL> COLUMN ENAME HEADING ’Employee|Name’
    Sql>select * from emp
                Employee
    Department  name          Salary
    ---------- ---------- ---------- 
            10 aaa                11
    note: the col heading turn into two lines from one line.
     
    3). 改变列的显示长度:
    FOR[MAT] format
    Sql>select empno,ename,job from emp;
          EMPNO ENAME      JOB       
    ---------- ----------    ---------
          7369 SMITH      CLERK     
          7499 ALLEN      SALESMAN 
    7521 WARD      SALESMAN 
    Sql> col ename format a40
          EMPNO ENAME                                    JOB
    ----------  ----------------------------------------        ---------
          7369 SMITH                                    CLERK
          7499 ALLEN                                    SALESMAN
          7521 WARD                                    SALESMAN
     
    4). 设置列标题的对齐方式
    JUS[TIFY] {L[EFT]|C[ENTER]|C[ENTRE]|R[IGHT]}
    SQL> col ename justify center
    SQL> /
          EMPNO          ENAME                  JOB
    ----------  ----------------------------------------      ---------
          7369 SMITH                                    CLERK
          7499 ALLEN                                    SALESMAN
    7521 WARD                                    SALESMAN
    对于NUMBER型的列,列标题缺省在右边,其它类型的列标题缺省在左边
     
    5). 不让一个列显示在屏幕上
    NOPRI[NT]|PRI[NT]
    SQL> col job noprint
    SQL> /
          EMPNO          ENAME
    ----------    ----------------------------------------
          7369 SMITH
          7499 ALLEN
    7521 WARD
     
    6). 格式化NUMBER类型列的显示:
    SQL> COLUMN SAL FORMAT $99,990
    SQL> /
    Employee
    Department Name        Salary    Commission
    ---------- ---------- --------- ----------
    30          ALLEN        $1,600    300
     
    7). 显示列值时,如果列值为NULL值,用text值代替NULL值
    COMM NUL[L] text
    SQL>COL COMM NUL[L] text
     
    8). 设置一个列的回绕方式
    WRA[PPED]|WOR[D_WRAPPED]|TRU[NCATED]
            COL1
    --------------------
    HOW ARE YOU?
     
    SQL>COL COL1 FORMAT A5
    SQL>COL COL1 WRAPPED
    COL1
    -----
    HOW A
    RE YO
    U?
     
    SQL> COL COL1 WORD_WRAPPED
    COL1
    -----
    HOW
    ARE
    YOU?
     
    SQL> COL COL1 WORD_WRAPPED
    COL1
    -----
    HOW A
     
    9). 显示列的当前的显示属性值
    SQL> COLUMN column_name
     
    10). 将所有列的显示属性设为缺省值
    SQL> CLEAR COLUMNS
     
    8. 屏蔽掉一个列中显示的相同的值
    BREAK ON break_column
    SQL> BREAK ON DEPTNO
    SQL> SELECT DEPTNO, ENAME, SAL
    FROM EMP
      WHERE SAL < 2500
      ORDER BY DEPTNO;
    DEPTNO      ENAME        SAL
    ---------- ----------- ---------
    10          CLARK        2450
    MILLER      1300
    20            SMITH      800
    ADAMS      1100
     
    9. 在上面屏蔽掉一个列中显示的相同的值的显示中,每当列值变化时在值变化之前插入n个空行。
    BREAK ON break_column SKIP n
     
    SQL> BREAK ON DEPTNO SKIP 1
    SQL> /
    DEPTNO ENAME SAL
    ---------- ----------- ---------
    10 CLARK 2450
    MILLER 1300
     
    20 SMITH 800
    ADAMS 1100
     
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • wangsong145
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-11-08 17:16:1313楼 得分:0
    10. 显示对BREAK的设置
    SQL> BREAK
     
    11. 删除6、7的设置
    SQL> CLEAR BREAKS
     
    12. Set 命令:
    该命令包含许多子命令:
    SET system_variable value
    system_variable value 可以是如下的子句之一:
    APPI[NFO]{ON|OFF|text}
    ARRAY[SIZE] {15|n}
    AUTO[COMMIT]{ON|OFF|IMM[EDIATE]|n}
    AUTOP[RINT] {ON|OFF}
    AUTORECOVERY [ON|OFF]
    AUTOT[RACE] {ON|OFF|TRACE[ONLY]} [EXP[LAIN]] [STAT[ISTICS]]
    BLO[CKTERMINATOR] {.|c}
    CMDS[EP] {;|c|ON|OFF}
    COLSEP {_|text}
    COM[PATIBILITY]{V7|V8|NATIVE}
    CON[CAT] {.|c|ON|OFF}
    COPYC[OMMIT] {0|n}
    COPYTYPECHECK {ON|OFF}
    DEF[INE] {&|c|ON|OFF}
    DESCRIBE [DEPTH {1|n|ALL}][LINENUM {ON|OFF}][INDENT {ON|OFF}]
    ECHO {ON|OFF}
    EDITF[ILE] file_name[.ext]
    EMB[EDDED] {ON|OFF}
    ESC[APE] {|c|ON|OFF}
    FEED[BACK] {6|n|ON|OFF}
    FLAGGER {OFF|ENTRY |INTERMED[IATE]|FULL}
    FLU[SH] {ON|OFF}
    HEA[DING] {ON|OFF}
    HEADS[EP] {||c|ON|OFF}
    INSTANCE [instance_path|LOCAL]
    LIN[ESIZE] {80|n}
    LOBOF[FSET] {n|1}
    LOGSOURCE [pathname]
    LONG {80|n}
    LONGC[HUNKSIZE] {80|n}
    MARK[UP] HTML [ON|OFF] [HEAD text] [BODY text] [ENTMAP {ON|OFF}] [SPOOL
    {ON|OFF}] [PRE[FORMAT] {ON|OFF}]
    NEWP[AGE] {1|n|NONE}
    NULL text
    NUMF[ORMAT] format
    NUM[WIDTH] {10|n}
    PAGES[IZE] {24|n}
    PAU[SE] {ON|OFF|text}
    RECSEP {WR[APPED]|EA[CH]|OFF}
    RECSEPCHAR {_|c}
    SERVEROUT[PUT] {ON|OFF} [SIZE n] [FOR[MAT] {WRA[PPED]|WOR[D_
    WRAPPED]|TRU[NCATED]}]
    SHIFT[INOUT] {VIS[IBLE]|INV[ISIBLE]}
    SHOW[MODE] {ON|OFF}
    SQLBL[ANKLINES] {ON|OFF}
    SQLC[ASE] {MIX[ED]|LO[WER]|UP[PER]}
    SQLCO[NTINUE] {> |text}
    SQLN[UMBER] {ON|OFF}
    SQLPRE[FIX] {#|c}
    SQLP[ROMPT] {SQL>|text}
    SQLT[ERMINATOR] {;|c|ON|OFF}
    SUF[FIX] {SQL|text}
    TAB {ON|OFF}
    TERM[OUT] {ON|OFF}
    TI[ME] {ON|OFF}
    TIMI[NG] {ON|OFF}
    TRIM[OUT] {ON|OFF}
    TRIMS[POOL] {ON|OFF}
    UND[ERLINE] {-|c|ON|OFF}
    VER[IFY] {ON|OFF}
    WRA[P] {ON|OFF}
     
    1). 设置当前session是否对修改的数据进行自动提交
    SQL>SET AUTO[COMMIT] {ON|OFF|IMM[EDIATE]| n}
     
    2).在用start命令执行一个sql脚本时,是否显示脚本中正在执行的SQL语句
    SQL> SET ECHO {ON|OFF}
     
    3).是否显示当前sql语句查询或修改的行数
    SQL> SET FEED[BACK] {6|n|ON|OFF}
      默认只有结果大于6行时才显示结果的行数。如果set feedback 1 ,则不管查询到多少行都返回。当为off 时,一律不显示查询的行数
     
    4).是否显示列标题
    SQL> SET HEA[DING] {ON|OFF}
    当set heading off 时,在每页的上面不显示列标题,而是以空白行代替
     
    5).设置一行可以容纳的字符数
    SQL> SET LIN[ESIZE] {80|n}
      如果一行的输出内容大于设置的一行可容纳的字符数,则折行显示。
     
    6).设置页与页之间的分隔
    SQL> SET NEWP[AGE] {1|n|NONE}
    当set newpage 0 时,会在每页的开头有一个小的黑方框。
    当set newpage n 时,会在页和页之间隔着n个空行。
    当set newpage none 时,会在页和页之间没有任何间隔。
     
    7).显示时,用text值代替NULL值
    SQL> SET NULL text
     
    8).设置一页有多少行数
    SQL> SET PAGES[IZE] {24|n}
    如果设为0,则所有的输出内容为一页并且不显示列标题
     
    9).是否显示用DBMS_OUTPUT.PUT_LINE包进行输出的信息。
    SQL> SET SERVEROUT[PUT] {ON|OFF} 
    在编写存储过程时,我们有时会用dbms_output.put_line将必要的信息输出,以便对存储过程进行调试,只有将serveroutput变量设为on后,信息才能显示在屏幕上。
     
    10).当SQL语句的长度大于LINESIZE时,是否在显示时截取SQL语句。
    SQL> SET WRA[P] {ON|OFF}
      当输出的行的长度大于设置的行的长度时(用set linesize n命令设置),当set wrap on时,输出行的多于的字符会另起一行显示,否则,会将输出行的多于字符切除,不予显示。
     
    11).是否在屏幕上显示输出的内容,主要用与SPOOL结合使用。
    SQL> SET TERM[OUT] {ON|OFF}
      在用spool命令将一个大表中的内容输出到一个文件中时,将内容输出在屏幕上会耗费大量的时间,设置set termspool off后,则输出的内容只会保存在输出文件中,不会显示在屏幕上,极大的提高了spool的速度。
     
    12).将SPOOL输出中每行后面多余的空格去掉
    SQL> SET TRIMS[OUT] {ON|OFF} 
       
    13)显示每个sql语句花费的执行时间
    set TIMING  {ON|OFF}
     
    14.修改sql buffer中的当前行中,第一个出现的字符串
    C[HANGE] /old_value/new_value
    SQL> l
      1* select * from dept
    SQL> c/dept/emp
      1* select * from emp
     
    15.编辑sql buffer中的sql语句
    EDI[T]
     
    16.显示sql buffer中的sql语句,list n显示sql buffer中的第n行,并使第n行成为当前行
    L[IST] [n]
     
    17.在sql buffer的当前行下面加一行或多行
    I[NPUT]
     
    18.将指定的文本加到sql buffer的当前行后面
    A[PPEND]
    SQL> select deptno,
      2  dname
      3  from dept;
        DEPTNO DNAME
    ---------- --------------
            10 ACCOUNTING
            20 RESEARCH
            30 SALES
            40 OPERATIONS
     
    SQL> L 2
      2* dname
    SQL> a ,loc
      2* dname,loc
    SQL> L
      1  select deptno,
      2  dname,loc
      3* from dept
    SQL> /
     
        DEPTNO DNAME          LOC
    ---------- -------------- -------------
            10 ACCOUNTING    NEW YORK
            20 RESEARCH      DALLAS
            30 SALES          CHICAGO
            40 OPERATIONS    BOSTON
     
    19.将sql buffer中的sql语句保存到一个文件中
    SAVE file_name
     
    20.将一个文件中的sql语句导入到sql buffer中
    GET file_name
     
    21.再次执行刚才已经执行的sql语句
    RUN
    or
    /
     
    22.执行一个存储过程
    EXECUTE procedure_name
     
    23.在sql*plus中连接到指定的数据库
    CONNECT user_name/passwd@db_alias
     
    24.设置每个报表的顶部标题
    TTITLE
     
    25.设置每个报表的尾部标题
    BTITLE
     
    26.写一个注释
    REMARK [text]
     
    27.将指定的信息或一个空行输出到屏幕上
    PROMPT [text]
     
    28.将执行的过程暂停,等待用户响应后继续执行
    PAUSE [text]
     
    Sql>PAUSE Adjust paper and press RETURN to continue.
     
    29.将一个数据库中的一些数据拷贝到另外一个数据库(如将一个表的数据拷贝到另一个数据库)
    COPY {FROM database | TO database | FROM database TO database}
    {APPEND|CREATE|INSERT|REPLACE} destination_table
    [(column, column, column, ...)] USING query
     
    sql>COPY FROM SCOTT/TIGER@HQ TO JOHN/CHROME@WEST 
    create emp_temp
    USING SELECT * FROM EMP
     
    30.不退出sql*plus,在sql*plus中执行一个操作系统命令:
    HOST
     
    Sql> host hostname
    该命令在windows下可能被支持。
     
    31.在sql*plus中,切换到操作系统命令提示符下,运行操作系统命令后,可以再次切换回sql*plus:
    !
     
    sql>!
    $hostname
    $exit
    sql>
     
    该命令在windows下不被支持。
     
    32.显示sql*plus命令的帮助
    HELP
    如何安装帮助文件:
    Sql>@ ?sqlplusadminhelphlpbld.sql ?sqlplusadminhelphelpus.sql
    Sql>help index
     
    33.显示sql*plus系统变量的值或sql*plus环境变量的值
    Syntax
    SHO[W] option
    where option represents one of the following terms or clauses:
    system_variable
    ALL
    BTI[TLE]
    ERR[ORS] [{FUNCTION|PROCEDURE|PACKAGE|PACKAGE BODY|
    TRIGGER|VIEW|TYPE|TYPE BODY} [schema.]name]
    LNO
    PARAMETERS [parameter_name]
    PNO
    REL[EASE]
    REPF[OOTER]
    REPH[EADER]
    SGA
    SPOO[L]
    SQLCODE
    TTI[TLE]
    USER
     
    1) . 显示当前环境变量的值:
    Show all
     
    2) . 显示当前在创建函数、存储过程、触发器、包等对象的错误信息
    Show error
    当创建一个函数、存储过程等出错时,变可以用该命令查看在那个地方出错及相应的出错信息,进行修改后再次进行编译。
     
    3) . 显示初始化参数的值:
    show PARAMETERS [parameter_name]
     
    4) . 显示数据库的版本:
    show REL[EASE]
     
    5) . 显示SGA的大小
    show SGA
     
    6). 显示当前的用户名
    show user 
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • MyHoliday_2008
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-11-08 17:37:2314楼 得分:0
    用 GOOGLE  or  baidu  搜下呗,网上一大摞`````````````
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • Mr_Von
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-11-08 21:35:4215楼 得分:0
    clear screen, select * from cat etc.
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • chendabian
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-11-09 17:06:3616楼 得分:0
    希望大家 在写代码的时候;

    注明代码的作用!! 一两条代码都没关系;

    原创的也很好, 越基础的越好;
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • linzhangs
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-11-09 19:15:1717楼 得分:0

    常用SQL查询:

    1、查看表空间的名称及大小

    select t.tablespace_name, round(sum(bytes/(1024*1024)),0) ts_size
    from dba_tablespaces t, dba_data_files d
    where t.tablespace_name = d.tablespace_name
    group by t.tablespace_name;

    2、查看表空间物理文件的名称及大小

    select tablespace_name, file_id, file_name,
    round(bytes/(1024*1024),0) total_space
    from dba_data_files
    order by tablespace_name;

    3、查看回滚段名称及大小

    select segment_name, tablespace_name, r.status,
    (initial_extent/1024) InitialExtent,(next_extent/1024) NextExtent,
    max_extents, v.curext CurExtent
    From dba_rollback_segs r, v$rollstat v
    Where r.segment_id = v.usn(+)
    order by segment_name;

    4、查看控制文件

    select name from v$controlfile;

    5、查看日志文件

    select member from v$logfile;

    6、查看表空间的使用情况

    select sum(bytes)/(1024*1024) as free_space,tablespace_name
    from dba_free_space
    group by tablespace_name;

    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;

    7、查看数据库库对象

    select owner, object_type, status, count(*) count# from all_objects group by owner, object_type, status;

    8、查看数据库的版本 

    Select version FROM Product_component_version
    Where SUBSTR(PRODUCT,1,6)='Oracle';

    9、查看数据库的创建日期和归档方式

    Select Created, Log_Mode, Log_Mode From V$Database;

    10、捕捉运行很久的SQL

    column username format a12
    column opname format a16
    column progress format a8

    select username,sid,opname,
          round(sofar*100 / totalwork,0) || '%' as progress,
          time_remaining,sql_text
    from v$session_longops , v$sql
    where time_remaining <> 0
    and sql_address = address
    and sql_hash_value = hash_value
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • chendabian
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-11-09 19:40:2118楼 得分:0
    估计这么说 范围太大;

    还是我来问吧?

    比如说我 有一个表 叫借书表

    用到一个 外键 书 参照书表,

    现在 在书表里,删除一本书 叫 语文;

    我希望在借表里 , 级联删除,借过语文书 的所有记录;

    这个命令 该怎么写呢?
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • chendabian
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-11-09 19:48:3019楼 得分:0
    还有设置 主键 外键的问题;
    11 楼的 说的很好;

    给出了例子; 若同时要求 设定多个主键 该怎么办呢?

    alter table CUST
      add constraint PK_CUST primary key (CUSTID)

    我如果把primary key  , 改为 foreign 是不是 就设外键了;

    若一张表同时要求 设定多个外键 该怎么办呢?
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • zhangyong369
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-11-09 20:02:2620楼 得分:50
    一些基本语句
    1)创建表的语法
      create table 表名
          (列名 数据类型(宽度) [default 表达式][column constraint],
          [table constraint]
          [table_partition_clause]
          );
    1.1)创建图书和出版社表
        create table 出版社
          (编号 varchar2(2),
            出版社名称 varchar2(30),
            地址 varchar2(30),
            联系电话 varchar2(20)
            );
          create table 图书
            (图书编号 varchar2(5),
              图书名称 varchar2(30),
              出版社名称 varchar2(2),
              作者 varchar2(10),
              出版日期 date,
              数量 number(3),
              单价 number(7,2)
              );
            Describe 图书;
    2)通过子查询创建表
      create table 表名(列名...) as sql 查询语句;
    2.1)通过子查询创建新的图书表
      create table 图书1
        as select *from 图书;
      create table 图书2(书名,单价)
        as select 图书名称,单价 from 图书;
      create table 图书3(书名,单价)
        as select 图书名称,单价 from 图书 where 1=2;
    3)设置列的默认值
    3.1)创建表时设置默认值
      create table 图书4
        (图书编号 varchar2(5) default null,
        图书名称 varchar2(30) default'未知',
        出版社编号 varchar2(2) default null,
        出版社日期 date default '01-1月-1900',
        作者 varchar2(10) default null,
        数量 number(3) default 0,
        单价 number (7,2) default null,
        借书数量 number(3) default 0
        );
      insert into 图书4(图书编号) values ('A001');
      select *from 图书4;
    4)删除已创建的表
      drop table 表名[cascade constraints];
    4.1) 删除“图书1”表
      drop table 图书1;


    4.1.2 表的操作
    1)表的重命名
      rename 旧表名 to 新表名;
      rename 图书 to 图书5;
    2)清空表
      truncate table 图书4;
    3)查看表
      describe 表名;
    训练7:显示当前用户的所有表
      select object_name
        from user_objects
        where object_type=' table'; 

       
    4.2.2  表的约束
    1)主键(primary key)
      [constrant 约束名] primary key                ---列级
      [constrant 约束名] primary key (列名1,列名2)  ---表级
    2)非空(not null)
      [constrant 约束名] not null    ---列级
    3)唯一(unique)
      [constrant 约束名] unique                  ---列级
      [constrant 约束名] unique  (列名1,列名2)    ---表级
    4)检查(check)
        [constrant 约束名] check(约束条件)      ---列级,约束条件只包含本列
        [constrant 约束名] check(约束条件)      ---表级,约束条件中包含多列
    5)外键(foreign key)
      [constrant 约束名] foreign key  (列名1,列名2)
      references 表名 (列名1,列名2) On delete set null


    4.2.3 约束条件的创建
      create table 表名
        (列名 数据类型 [default 表达式][column constraint],
        [table constraint]
        );
    训练1:创建带有约束条件的出版社表,若已存在,先删除
      create table 出版社
          (编号 varchar2(2) constraint pk_1 primary key,
            出版社名称 varchar2(30) not null,
            地址 varchar2(30) default '未知',
            联系电话 varchar2(20)
            );

    训练2:创建带有约束条件(包括外键)的图书表(若存在,先删除):
      creat table 图书
            (图书编号 varchar2(5) constraint pk_1 primary key,
              图书名称 varchar2(30) not null,
              出版编号 varchar2(2) check (length(出版社编号)=2) not null ,
              作者 varchar2(10) default '未知',
              出版日期 date,
              数量 number(3),
              单价 number(7,2),
              constraint sy_1 unique(图书名称,作者),
              constraint fk_1 foreign key (出版社编号)
                references 出版社(编号) on delete cascade
              );
    训练3:插入数据,验证约束条件。
      步骤1:插入出版社信息
      insert into 出版社 values('01','清华大学出版社','北京','010-83456272');
      insert into 出版社 values('01','电子科技大学出版社','西安','029-88201467');
      insert into 出版社 values('02','电子科技大学出版社','西安','029-88201467');
      步骤2:出入图书信息
      insert into 图书(图书编号,图书名称,出版社编号,作者,单价)
        values('A0001','计算机原理','01','刘勇',25.30);

      insert into 图书(图书编号,图书名称,出版社编号,作者,单价)
        values('A0002','C语言程序设计','03','马丽',18.75);

      insert into 图书(图书编号,图书名称,出版社编号,作者,单价)
        values('A0002','C语言程序设计','02','马丽',18.75);
      -- 继续插入:
        insert into 图书(图书编号,图书名称,出版社编号,作者,数量,单价)
        values('A0003','汇编语言程序设计','02','黄明海',0,20.18);

      insert into 图书(图书编号,图书名称,出版社编号,作者,数量,单价)
        values('A0003','汇编语言程序设计','02','黄明海',15,20.18);
      --步骤3:显示插入结果:
        select * from 出版社;
      --继续查询:
        select * from 图书;
      --步骤4:提交插入的数据:
        commit;
       
      训练4:通过删除数据验证ON DELETE CASCADE的作用。
      --步骤1:删除出版社01(清华大学)
        delete from 出版社 where 编号='01';
      --步骤2:显示删除结果,显示出版社表结果:
        select * from 出版社;
      --显示图书表结果:
        select * from 图书;
      --步骤3:恢