刚接触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;

解决方案 »

  1.   


    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,....)  
      

  2.   

    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,重新登录记录也不存在。
      

  3.   

    这些都是基本sql语句算不上sqlplus的。
    接分
      

  4.   

    帮你写两个:
    SQL> set serveroutput onSQL> edit
     
      

  5.   

    查看数据库的SQL1、查看表空间的名称及大小    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;
      

  6.   

    set wrap off
    set linesize 1000
    设置每行显示1000个字符
      

  7.   

    我原来用的是 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里可以吗??
      

  8.   

    >sqlplus /nolog
    SQL>conn/sys 用户名/密码 as dba 
    SQL>.....
      

  9.   

    我来补上spool
    sql>spool test.txt
    sql>select * from v$datafile;
    sql>spool off
      

  10.   


    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)
      

  11.   

    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 
      
      

  12.   

    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  
      

  13.   

    用 GOOGLE  or  baidu   搜下呗,网上一大摞`````````````
      

  14.   

    clear screen, select * from cat etc.
      

  15.   


    常用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 
      

  16.   

    还有设置 主键 外键的问题;
    11 楼的 说的很好;给出了例子; 若同时要求 设定多个主键 该怎么办呢?alter table CUST 
      add constraint PK_CUST primary key (CUSTID) 我如果把primary key  , 改为 foreign 是不是 就设外键了;若一张表同时要求 设定多个外键 该怎么办呢?
      

  17.   

    4.4.2 分区的实例
       训练1:创建和使用分区表。
        --步骤1:创建按成绩分区的考生表,共分为3个区:
         create table 考生
            (考号 varchar2(5), 
             姓名 varchar2(30),
             成绩 number(3)
            )
         partition by range(成绩)
         (partition a values less than (300)
          tablespace users,
          partition b values less than (500)
          tablespace users,
          partition c values less than (maxvalue)
          tablespace users
          );
       --步骤2:插入不同成绩的若干学生:
          insert into 考生 values('10001','王明',280);
          insert into 考生 values('10002','赵亮',730);
          insert into 考生 values('10003','赵成',550);
          insert into 考生 values('10004','黄凯',490);
          insert into 考生 values('10005','马新',360);
          insert into 考生 values('10006','杨丽',670);
      --步骤3:检查A区中的考生:
          select * from 考生 partition(a);
      --步骤4:检查全部的考生:
          select * from 考生;
    4.5.1视图的概念
       训练1:创建简单视图。创建图书作者视图:
      --步骤1:创建图书作者视图:
    create view 图书作者(书名,作者)
      as select 图书名称,作者 from 图书;
      --步骤2:查询视图全部内容
     select * from 图书作者;
      --步骤3:查询部分视图:
     select 作者 from 图书作者;
       训练2:创建清华大学出版社的图书视图:
    --步骤1:创建清华大学出版社的图书视图:
    create view 清华图书
      as select 图书名称,作者,单价 from 图书 where 出版社编号='01';
    --步骤2:查询图书视图:
     select * from 清华图书;
    --步骤3:删除视图:
     drop view 清华图书;
     新联3:修改作者视图,加入出版社名称。
    --步骤1:重建图书作者视图:
    create or replace view 图书作者(书名,作者,出版社)
     as select 图书名称,作者,出版社名称 from 图书,出版社
     where 图书.出版社编号=出版社.编号;
     --步骤2:查询视图内容:
    select * from 图书作者;
    训练4:创建emp表的一个统计视图:
    create view 统计表(部门名,最大工资,最小工资,平均工资)
       as select dname,max(sal),min(sal),avg(sal)
          from emp e,dept d
          where e.deptno=d.deptno
          group by dname;
    --步骤2:查询统计表:
       select * from 统计表;
    训练5:创建只读视图
    --步骤1:创建emp表的经理视图:
    create or replace view manager
       as select * from emp where job='MANAGER'
       with read only;
    --步骤2:进行删除:
     delete from manager;
    训练6:使用FORCE选项创建带有错误的视图:
    create force view 班干部 as slelect * from 班级 where 职务 is not null;
    【训练7】视图插入练习。        
     --步骤1:创建清华大学出版社的图书视图:         
     create or replace view清华图书            
       as select * from 图书where 出版社编号='01';         
    --步骤2:插入新图书:        
     insert into清华图书 values('A0005','软件工程','01','冯娟',5,27.3);         
    --步骤3:显示视图:        
     select * from清华图书;         
    --步骤4:显示基表        
     select * from 图书;
    【训练8】使用WITH CHECK OPTION选项限制视图的插入。      
       --步骤1:重建清华大学出版社的图书视图,带WITH CHECK OPTION选项:      
      create or replace view清华图书          
        as select * from 图书where 出版社编号='01'       
         with check option;        
     --步骤2,插入新图书:   
      insert into清华图书          
        values('A0006','Oracle数据库','02','黄河',3,39.8); 
    【训练9】基表本身限制视图的插入。        
     --步骤1:重建图书价格视图:       
      create or replace view 图书价格            
        as select 图书名称,单价 from 图书;         
    --步骤2:插入新图书:        
     insert into 图书价格values('Oracle数据库',39.8); 
    【训练10】查看清华图书视图的定义:  
      select text from user_views whereview_name='清华图书';  
    【训练11】查看用户拥有的视图:    
     Select object_name       
       From user_objects        
       Where object_type ’VIEW’; 
    第5 章 数据操纵 
    5.1数据库操作语句
    【训练1】插入数据:                  
     INSERT INTO表名[(字段列表)] VALUES(表达式列表)           
     --表的部分字段插入练习。           
     Insert into emp(empno,ename,job)               
       Values (1000,’小李’,’CLERK’);           
     Select * from emp where empno=1000;           
     --时间字段的插入练习      Insert into emp(empno,ename,job,hiredate)               
        Values(1001,’小马’,’CLERK’,’10-1月-03’);           
     --表的全部字段的插入练习           
     Insert into dept               
        Values(50,’培训部’,’深圳’);           
     --插入空值练习           
     Insert into emp(empno,ename,job,sal)      Values(1005,’杨华’,’CLERK’,null);       
    【训练2】复制数据:
     INSERTINTO表名(字段列表)SELECT(字段名1,字段名2,…)FROM 另外的表名;    
     --通过其他表插入数据的练习 
     --创建一个新表manager    
     Create table manager      
        as select empno,ename,sal from emp where job ’MANAGER’;    
     --从emp表拷贝数据到manager    
     Insert into manager    
     Select empno,ename,sal       From emp      
        Where job ’CLERK’;    
     Select * from manager; 
    【训练3】修改数据:    
     UPDATE 表名 SET字段名1表达式1,字段名2表达式2,…WHERE 条件;   
      --修改小李 (编号为1000)的工资为3000。    
     Update emp       
        Set sal=3000       
        Where empno=1000;    
     --将小李 (编号为1000)的雇佣日期改成当前系统日期,部门编号改为50。    
     Update emp      
        Set hiredate=sysdate,deptno=50       
       Where empno=1000;    
     --为所有雇员增加100元工资。    
      Update emp        Set sal=sal+100;  
    【训练4】根据其他表修改数据:    
    UPDATE 表名      
      SET (字段名1,字段名2,…)=select (字段名1,字段1,字段名2,…) 
      from 另外的表名 WHERE 条件; 
    Update manager    
      Set (ename,sal)=(select ename,sal from emp where empno=7788)    
      Where empno=1000; 
    【训练5】删除数据:     
      DELETE FROM 表名WHERE 条件;    
     --删除雇员编号为1000的雇员   
      Delete from emp Where empno=1000;  
      Select * from emp Where empno=1000; 
    【训练6】删除表中的全部记录:    
     TRUNCATE TABLE 表名;   
     --彻底删除manager表的内容    
     Truncate table manager; 
    5.2数据库事务
    【训练1】学习使用COMMIT和ROLLBACK。        
     --提交尚未提交的操作         
    Commit; 
     --显示SCOTT的现有工资         
    Select ename,sal           
      From emp            
      Where empno=7788;   --修改雇员SCOTT的工资         
    Update emp            
       Set sal sal+100            
       Where empno=7788;        
    --显示修改后的SCOTT的工资        
     Select ename,sal            
        From emp            Where empno=7788;         
    --假定修改操作后发现增加的工资应该为1000而不是100,为了取消刚做的操作,可以执行以下命令:         rollback;         
    --显示回退后SCOTT的工资恢复为3000:    select ename,sal            
        from emp            
        where empno=7788;         
    --重新修改雇员SCOTT的工资,工资在原有基础上增加1000:         
    update emp         
    set sal=sal+1000               where empno=7788;         
    --显示修改后SCOTT的工资:         
    select ename,sal           
       from emp     where empno=7788;       
    --经查看修改结果正确,提交所做的修改:        
     commit; 
    【训练2】学习使用SAVEPOINT命令。  --插入一个雇员:    insert into emp(empno,ename,job)       values(3000,'小马','STUDENT');  --插入保存点,检查点的名称为PA:    savepointpa;  --插入另一个雇员:
    insert into emp(empno,ename,job)    values(3001,'小黄','STUDENT'); 
     --回退到保存点PA,则后插入的小黄被取消,而小马仍然保留。  Rollback to pa;  --提交所做的修改:  commit; 
      

  18.   

    楼主给的都不是 sqlplus 命令,而是 sql 语句啊。呵呵
      

  19.   


    delete 参照书表 inner join 借书表 on 参照书表.id = 借书表.id where 参照书表= 语文书