??xml version="1.0" encoding="utf-8" standalone="yes"?>亚洲av无码乱码在线观看野外,亚洲影视自拍揄拍愉拍,亚洲韩国精品无码一区二区三区http://m.tkk7.com/WshmAndLily/articles/187103.htmlsemovysemovyTue, 18 Mar 2008 14:09:00 GMThttp://m.tkk7.com/WshmAndLily/articles/187103.htmlhttp://m.tkk7.com/WshmAndLily/comments/187103.htmlhttp://m.tkk7.com/WshmAndLily/articles/187103.html#Feedback0http://m.tkk7.com/WshmAndLily/comments/commentRss/187103.htmlhttp://m.tkk7.com/WshmAndLily/services/trackbacks/187103.htmlpackage com.semovy.test;

import java.io.BufferedInputStream;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.io.PrintWriter;
import java.io.Reader;
import java.sql.Blob;
import java.sql.Clob;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.ResultSetMetaData;
import java.sql.SQLException;
import java.sql.Statement;

/**
 *
 * @author semovy 试向oracle ?写文件Blob ?写大文本Clob
 */
public class OracleBlobTest {

 private String driver = "oracle.jdbc.driver.OracleDriver";

 private String url = "jdbc:oracle:thin:@localhost:1521:teckotooling";

 private String user = "scott";

 private String pwd = "tiger";

 public OracleBlobTest() {
 }

 public static void main(String[] args) {
  OracleBlobTest obt = new OracleBlobTest();
  obt.writeBlob();
  obt.readBlob();
  obt.writeClob();
  obt.readClob();
 }

 /**
  * Mq制文g
  *
  */
 private void readBlob() {
  Connection conn = null;
  try {
   conn = getConnection();
   Statement stmt = conn.createStatement();
   ResultSet rs = stmt.executeQuery("select * from test where id=1");
   byte[] buffer = new byte[1024];
   OutputStream out = new FileOutputStream("d:/360安全卫士?.exe");
   int tempLen = 0;
   int amount = 0;
   if (rs.next()) {
    Blob blob = rs.getBlob("BINARYCONTENT");
    InputStream in = blob.getBinaryStream();
    while ((tempLen = in.read(buffer)) != -1) {
     out.write(buffer, 0, tempLen);
     amount += tempLen;
     System.out.println("已经dq写:" + amount + " 字节");
    }
    System.out.println("已经dq写:完成");
    out.flush();
    out.close();
    in.close();
    rs.close();
    stmt.close();
   }
  } catch (ClassNotFoundException e) {
   System.out.println(e.getLocalizedMessage());
  } catch (SQLException e) {
   System.out.println(e.getLocalizedMessage());
  } catch (IOException e) {
   System.out.println(e.getLocalizedMessage());
  } finally {
   try {
    if (conn != null)
     conn.close();
   } catch (SQLException e) {
    System.out.println(e.getLocalizedMessage());
   }
  }
 }

 /**
  * 写二q制文g
  *
  */
 private void writeBlob() {
  Connection conn = null;
  try {
   conn = getConnection();
   conn.setAutoCommit(false);
   String sql = null;
   Statement stmt = conn.createStatement();
   sql = "delete from test where id=1";
   stmt.executeUpdate(sql);
   sql = "insert into test(1,BINARYCONTENT,CLOBCONTENT) values(1,empty_blob(),empty_clob())";
   stmt.executeUpdate(sql);
   ResultSet rs = stmt.executeQuery("select * from test where id=1");
   if (rs.next()) {
    Blob blob = rs.getBlob("BINARYCONTENT");
    OutputStream out = ((oracle.sql.BLOB) blob).setBinaryStream(0);// ?开?否则写出的文件有差错
    int bufferSize = ((oracle.sql.BLOB) blob).getBufferSize();
    System.out.println("bufferSize :" + bufferSize);
    BufferedInputStream in = new BufferedInputStream(
      new FileInputStream("d:/360安全卫士?exe"), bufferSize);
    byte[] b = new byte[bufferSize];
    int count = in.read(b, 0, bufferSize);
    int amount = 0;
    while (count != -1) {
     out.write(b, 0, count);
     amount += count;
     System.out.println("处理?" + amount + " 字节");
     count = in.read(b, 0, bufferSize);
     System.out.println("处理?" + amount + " 字节,成功");
    }
    out.close();
    out = null;
    in.close();
    conn.commit();
   }

  } catch (ClassNotFoundException e) {
   System.out.println(e.getLocalizedMessage());
  } catch (SQLException e) {
   try {
    conn.rollback();
   } catch (SQLException e1) {
    System.out.println(e1.getLocalizedMessage());
   }
   System.out.println(e.getLocalizedMessage());
  } catch (IOException e) {
   System.out.println(e.getLocalizedMessage());
  } finally {
   try {
    if (conn != null)
     conn.close();
   } catch (SQLException e) {
    System.out.println(e.getLocalizedMessage());
   }
  }
 }

 /**
  * d文本
  *
  */
 private void readClob() {
  Connection conn = null;
  try {
   conn = getConnection();
   Statement stmt = conn.createStatement();
   ResultSet rs = stmt.executeQuery("select * from test where id=2");
   String tempStr = null;
   if (rs.next()) {
    Clob clob = rs.getClob("CLOBCONTENT");
    if (clob != null) {
     Reader in = clob.getCharacterStream();
     BufferedReader br = new BufferedReader(in);
     System.out.println("开始读....");
     while ((tempStr = br.readLine()) != null) {
      System.out.println(tempStr);
     }
     System.out.println("d?...");
     in.close();
    }
    rs.close();
    stmt.close();
   }
  } catch (ClassNotFoundException e) {
   System.out.println(e.getLocalizedMessage());
  } catch (SQLException e) {
   System.out.println(e.getLocalizedMessage());
  } catch (IOException e) {
   System.out.println(e.getLocalizedMessage());
  } finally {
   try {
    if (conn != null)
     conn.close();
   } catch (SQLException e) {
    System.out.println(e.getLocalizedMessage());
   }
  }
 }

 /**
  * 写大文本
  *
  */
 private void writeClob() {
  Connection conn = null;
  try {
   conn = getConnection();
   conn.setAutoCommit(false);
   String sql = null;
   Statement stmt = conn.createStatement();
   sql = "delete from test where id=2";
   stmt.executeUpdate(sql);
   sql = "insert into test values(2,empty_blob(),empty_clob())";
   stmt.executeUpdate(sql);
   ResultSet rs = stmt.executeQuery("select * from test where id=2");
   if (rs.next()) {
    Clob clob = rs.getClob("CLOBCONTENT");
    PrintWriter out = new PrintWriter(new BufferedWriter(
      ((oracle.sql.CLOB) clob).setCharacterStream(0)));
    BufferedReader in = new BufferedReader(new InputStreamReader(
      new FileInputStream(
        "d:/在北大校园BBS引v轰动的一文章请热爱国的h转发Q!Q!.mht")));
    String str = null;
    System.out.println("开始写...");
    while ((str = in.readLine()) != null) {
     out.println(str);
     System.out.println(str);
    }
    in.close();
    out.close();
    rs.close();
    conn.commit();
   }

  } catch (ClassNotFoundException e) {
   System.out.println(e.getLocalizedMessage());
  } catch (SQLException e) {
   try {
    conn.rollback();
   } catch (SQLException e1) {
    System.out.println(e1.getLocalizedMessage());
   }
   System.out.println(e.getLocalizedMessage());
  } catch (IOException e) {
   System.out.println(e.getLocalizedMessage());
  } finally {
   try {
    if (conn != null)
     conn.close();
   } catch (SQLException e) {
    System.out.println(e.getLocalizedMessage());
   }
  }
 }

 private Connection getConnection() throws ClassNotFoundException,
   SQLException {
  Class.forName(driver);
  return DriverManager.getConnection(url, user, pwd);
 }

 /**
  *
  * @param rs
  * @throws SQLException
  */
 private void displayResultSet(ResultSet rs) throws SQLException {
  ResultSetMetaData rsmd = rs.getMetaData();
  int colnum = rsmd.getColumnCount();
  while (rs.next()) {
   for (int i = 0; i < colnum; i++) {
    if (i == colnum - 1)
     System.out.print(rsmd.getColumnLabel(i + 1) + ": "
       + rs.getObject(i + 1));
    else
     System.out.print(rsmd.getColumnLabel(i + 1) + ": "
       + rs.getObject(i + 1) + " , ");
   }
   System.out.println();
  }
 }
}



semovy 2008-03-18 22:09 发表评论
]]>
oracle alter语句http://m.tkk7.com/WshmAndLily/articles/187083.htmlsemovysemovyTue, 18 Mar 2008 12:30:00 GMThttp://m.tkk7.com/WshmAndLily/articles/187083.htmlhttp://m.tkk7.com/WshmAndLily/comments/187083.htmlhttp://m.tkk7.com/WshmAndLily/articles/187083.html#Feedback0http://m.tkk7.com/WshmAndLily/comments/commentRss/187083.htmlhttp://m.tkk7.com/WshmAndLily/services/trackbacks/187083.htmlcreate table test(a varchar2(20),b number(2))
重名?br />
alter table test rename to test1
Qrename test1 
to test2Q?br />

增删字段


    alter table test2 drop column  f

修改字段cd和大?img alt="" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif" align="top" />
alter table test2 modify d varchar(40)
alter table test2 modify f varchar(40)

 

alter table test2 add  c varchar2(30)
alter table test2 add  (d varchar2(30),e number(4))
alter table test2 rename column e  to f

处理U束

   alter   table   test2     add   constraint   pk_mypri   primary   key   (d,f)
    利用下面的语句在删除DEPT表中的PRIMARY KEYU束Ӟ同时删除其它表中引用这个约束的FOREIGN KEYU束: 
    alter table dept drop primary key cascade
     加foreign keyU束(多字D/表Q?
    alter table employees   add constraint emp_jobs_fk foreign key (job,deptno) references jobs (jobid,deptno) on delete cascade 


semovy 2008-03-18 20:30 发表评论
]]>
oracle 10g表空间操?/title><link>http://m.tkk7.com/WshmAndLily/articles/181795.html</link><dc:creator>semovy</dc:creator><author>semovy</author><pubDate>Sun, 24 Feb 2008 09:28:00 GMT</pubDate><guid>http://m.tkk7.com/WshmAndLily/articles/181795.html</guid><wfw:comment>http://m.tkk7.com/WshmAndLily/comments/181795.html</wfw:comment><comments>http://m.tkk7.com/WshmAndLily/articles/181795.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://m.tkk7.com/WshmAndLily/comments/commentRss/181795.html</wfw:commentRss><trackback:ping>http://m.tkk7.com/WshmAndLily/services/trackbacks/181795.html</trackback:ping><description><![CDATA[<p style="margin: 0cm 0cm 0pt"><span><font face="Times New Roman">---------------------------------------------- -</font></span><span>表空间的操作</span><span><font face="Times New Roman">----------------------------------------------------</font></span></p> <p style="margin: 0cm 0cm 0pt"><span><font face="Times New Roman">1.</font></span><span>创徏表空_</span></p> <p style="margin: 0cm 0cm 0pt"><span><font face="Times New Roman">create tablespace tablespace_name datafile 'filepath' size filesize autoextend on next autosize maxsize filemaxsize [unlimited]</font></span></p> <p style="margin: 0cm 0cm 0pt"><span><font face="Times New Roman">eg:</font></span></p> <p style="margin: 0cm 0cm 0pt"><span><font face="Times New Roman">create tablespace sales datafile 'c:\1.txt' size 10m autoextend on next 1m maxsize 100m</font></span></p> <p style="margin: 0cm 0cm 0pt"><span><font face="Times New Roman">2.</font></span><span>I间增加数据文gQ?/span></p> <p style="margin: 0cm 0cm 0pt"><span><font face="Times New Roman">alter tablespace tablespace_name add datafile 'filepath' size filesize autoextend on next autosize maxsize filemaxsize[unlimited]</font></span></p> <p style="margin: 0cm 0cm 0pt"><span><font face="Times New Roman">eg:</font></span></p> <p style="margin: 0cm 0cm 0pt"><span><font face="Times New Roman">alter tablespace sales datafile 'c:\2.txt' size 10m autoextend on next 1m maxsize unlimited</font></span></p> <p style="margin: 0cm 0cm 0pt"><span><font face="Times New Roman">3.</font></span><span>调整表空_</span></p> <p style="margin: 0cm 0cm 0pt"><span><font face="Times New Roman">alter database datafile 'filepath' resize filesize--</font></span><span>重置表空间的大小</span></p> <p style="margin: 0cm 0cm 0pt"><span><font face="Times New Roman">eg:</font></span></p> <p style="margin: 0cm 0cm 0pt"><span><font face="Times New Roman">alter database datafile 'c:\2.txt' resize 10m</font></span></p> <p style="margin: 0cm 0cm 0pt"><span><font face="Times New Roman">4.</font></span><span>关闭表空间的自动扩展属性:</span></p> <p style="margin: 0cm 0cm 0pt"><span><font face="Times New Roman">alter database datafile 'filepath' autoextend off</font></span></p> <p style="margin: 0cm 0cm 0pt"><span><font face="Times New Roman">eg:</font></span></p> <p style="margin: 0cm 0cm 0pt"><span><font face="Times New Roman">alter database datafile 'c:\2.txt' autoextend off</font></span></p> <p style="margin: 0cm 0cm 0pt"><span><font face="Times New Roman">5.</font></span><span>打开表空间的自动扩展属性:</span></p> <p style="margin: 0cm 0cm 0pt"><span><font face="Times New Roman">alter database datafile 'filepath' autoextend on</font></span></p> <p style="margin: 0cm 0cm 0pt"><span><font face="Times New Roman">eg:</font></span></p> <p style="margin: 0cm 0cm 0pt"><span><font face="Times New Roman">alter database datafile 'c:\2.txt' autoextend on</font></span></p> <p style="margin: 0cm 0cm 0pt"><span><font face="Times New Roman">6.</font></span><span>使表I间脱机Q?/span></p> <p style="margin: 0cm 0cm 0pt"><span><font face="Times New Roman">alter tablespace tablespace_name offline</font></span></p> <p style="margin: 0cm 0cm 0pt"><span><font face="Times New Roman">7.</font></span><span>使表I间联机Q?/span></p> <p style="margin: 0cm 0cm 0pt"><span><font face="Times New Roman">alter tablespace tablespace_name online</font></span></p> <p style="margin: 0cm 0cm 0pt"><span><font face="Times New Roman">8.</font></span><span>讄表空间ؓ只读Q?/span></p> <p style="margin: 0cm 0cm 0pt"><span><font face="Times New Roman">alter tablespace tablespace_name read only</font></span></p> <p style="margin: 0cm 0cm 0pt"><span><font face="Times New Roman">9.</font></span><span>讄表空间ؓdQ?/span></p> <p style="margin: 0cm 0cm 0pt"><span><font face="Times New Roman">alter tablespace tablespace_name read write</font></span></p> <p style="margin: 0cm 0cm 0pt"><span><font face="Times New Roman">11.</font></span><span>删除表空_</span></p> <p style="margin: 0cm 0cm 0pt"><span><font face="Times New Roman">drop tablespace tablespace_name</font></span></p> <p style="margin: 0cm 0cm 0pt"><span><font face="Times New Roman">12.</font></span><span>删除表空间的同时Q删除数据文?/span></p> <p style="margin: 0cm 0cm 0pt"><span><font face="Times New Roman">drop tablespace tablespace_name including contents and datefiles</font></span></p> <p style="margin: 0cm 0cm 0pt"><span><font face="Times New Roman">13.</font></span><span>查看每个表空间占用空间的大小Q?/span></p> <p style="margin: 0cm 0cm 0pt"><span><font face="Times New Roman">select tablespace_name,sum(bytes)/1024/1024 from dba_segments group by tablespace_name</font></span></p> <p style="margin: 0cm 0cm 0pt"><span><font face="Times New Roman">10.</font></span><span>Ud表空间数据文件步骤:</span></p> <p style="margin: 0cm 0cm 0pt"><span><font face="Times New Roman">a.</font></span><span>使表I间脱机Q?/span><span><font face="Times New Roman">alter tablespace tablespace_name offline</font></span></p> <p style="margin: 0cm 0cm 0pt"><span><font face="Times New Roman">b.</font></span><span>物理Ud数据文g到目的地Q可以是表空间的部分数据文g或者是修改数据文g的名Uͼ</span></p> <p style="margin: 0cm 0cm 0pt"><span><font face="Times New Roman">c.</font></span><span>逻辑UdQ?/span><span><font face="Times New Roman">alter tablespace tablespace_name rename datafile '</font></span><span>源文件地址</span><span><font face="Times New Roman">'to '</font></span><span>目的文g地址</span><span><font face="Times New Roman">'--</font></span><span>注意可以多个源文g转移到同一个目的文件地址Q多个源文g地址用逗号分隔Q?/span></p> <p style="margin: 0cm 0cm 0pt"><span><font face="Times New Roman">d.</font></span><span>表I间联机Q?/span><span><font face="Times New Roman">alter tablespace tablespace_name online</font></span></p> <p style="margin: 0cm 0cm 0pt"><span><font face="Times New Roman">11.</font></span><span>查询表空间的信息Q?/span></p> <p style="margin: 0cm 0cm 0pt"><span><font face="Times New Roman">select tablespace_name,bytes/1024/1024<span>  </span>file_size_mb,file_name from DBA_DATE_FILES--</font></span><span>注意书籍库中的实体都是以大写表示</span></p> <p style="margin: 0cm 0cm 0pt"><span><font face="Times New Roman">12.</font></span><span>当数据文件被删除的时候,如果对该数据文g操作的时候,</span><span><font face="Times New Roman">oracle</font></span><span>会报不能扑ֈ该数据文件的错误。如何处理?/span></p> <p style="margin: 0cm 0cm 0pt"><span>Q?/span><span><font face="Times New Roman">1</font></span><span>Q?/span><span><font face="Times New Roman">shutdown?/font></span><span>关闭</span><span><font face="Times New Roman">oracle</font></span><span>实例</span></p> <p style="margin: 0cm 0cm 0pt"><span>Q?/span><span><font face="Times New Roman">2</font></span><span>Q?/span><span><font face="Times New Roman">startup<span>  </span>--</font></span><span>开?/span><span><font face="Times New Roman">oracle</font></span><span>实例q打开数据?/span></p> <p style="margin: 0cm 0cm 0pt"><span>Q?/span><span><font face="Times New Roman">3</font></span><span>Q?/span><span><font face="Times New Roman">alter database datafile ‘datafile_name’ offline drop;</font></span></p> <p style="margin: 0cm 0cm 0pt"><span>Q?/span><span><font face="Times New Roman">4</font></span><span>Q?/span><span><font face="Times New Roman">alter database open</font></span></p> <p style="margin: 0cm 0cm 0pt"><span><font face="Times New Roman">------------------------------------------------------------------------------------------------------------------</font></span></p> <img src ="http://m.tkk7.com/WshmAndLily/aggbug/181795.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://m.tkk7.com/WshmAndLily/" target="_blank">semovy</a> 2008-02-24 17:28 <a href="http://m.tkk7.com/WshmAndLily/articles/181795.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>oracle10g正规表达?/title><link>http://m.tkk7.com/WshmAndLily/articles/181793.html</link><dc:creator>semovy</dc:creator><author>semovy</author><pubDate>Sun, 24 Feb 2008 09:24:00 GMT</pubDate><guid>http://m.tkk7.com/WshmAndLily/articles/181793.html</guid><wfw:comment>http://m.tkk7.com/WshmAndLily/comments/181793.html</wfw:comment><comments>http://m.tkk7.com/WshmAndLily/articles/181793.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://m.tkk7.com/WshmAndLily/comments/commentRss/181793.html</wfw:commentRss><trackback:ping>http://m.tkk7.com/WshmAndLily/services/trackbacks/181793.html</trackback:ping><description><![CDATA[<p style="margin: 0cm 0cm 0pt"><span><font face="Times New Roman">-------------------------------------------</font></span><span>正规表达式:</span><span><font face="Times New Roman">-----------------------------------------------</font></span></p> <p style="margin: 0cm 0cm 0pt"><span>正规表达式是W号和元素的集合Q这些集合可以用户匚w特定的文本模式。正规表辑ּ采用元符Ll合来定义各U匹配和搜烦标准。在正规表达式中Q匹配是大小写敏感的?/span></p> <p style="margin: 0cm 0cm 0pt"><span>元符?/span><span><span><font face="Times New Roman">                  </font></span></span><span>描述</span><span><span><font face="Times New Roman">                           </font></span></span><span>CZ</span></p> <p style="margin: 0cm 0cm 0pt"><span><font face="Times New Roman">*<span>                 </span></font></span><span>匚w</span><span><font face="Times New Roman">0</font></span><span>个或多个L的字W?/span><span><font face="Times New Roman"><span>         </span>bd* </font></span><span>匚w</span><span><font face="Times New Roman">bdq</font></span><span>Q?/span><span><font face="Times New Roman">bdabc</font></span></p> <p style="margin: 0cm 0cm 0pt"><span>Q?/span><span><font face="Times New Roman"><span>       </span><span>         </span></font></span><span>匚w一个Q意的字符</span><span><font face="Times New Roman"><span>               </span>B?d</font></span><span>匚w</span><span><font face="Times New Roman"> BDd,Bld</font></span></p> <p style="margin: 0cm 0cm 0pt"><span><font face="Times New Roman">^<span>                 </span></font></span><span>表示字符串的开?/span><span><font face="Times New Roman"><span>                 </span>^abc</font></span><span>?/span><span><font face="Times New Roman">abced</font></span><span>Q?/span><span><font face="Times New Roman">abcfr</font></span><span>?/span><span><font face="Times New Roman">acdv</font></span></p> <p style="margin: 0cm 0cm 0pt"><span><font face="Times New Roman">$<span>                 </span></font></span><span>表示字符串的末尾</span><span><font face="Times New Roman"><span>                 </span>bas$ </font></span><span>?/span><span><font face="Times New Roman">bas</font></span><span>为结所有字W串</span></p> <p style="margin: 0cm 0cm 0pt"><span><font face="Times New Roman">x|y<span>                </span></font></span><span>匚w</span><span><font face="Times New Roman">x</font></span><span>?/span><span><font face="Times New Roman">y<span>                       </span>windo|door</font></span><span>表示</span><span><font face="Times New Roman">windo</font></span><span>或?/span><span><font face="Times New Roman">dr</font></span></p> <p style="margin: 0cm 0cm 0pt"><span><font face="Times New Roman">[]<span>           </span><span>      </span></font></span><span>匚w</span><span><font face="Times New Roman">[]</font></span><span>中的L一个字W?/span><span><font face="Times New Roman"><span>           </span>ba[a-b]</font></span><span>匚w</span><span><font face="Times New Roman">baa </font></span><span>?/span><span><font face="Times New Roman">bab</font></span></p> <p style="margin: 0cm 0cm 0pt"><font color="#000000"><span style="color: blue"><font face="Times New Roman">{m}<span>               </span></font></span><span style="color: blue">可以匚w</span><span style="color: blue"><font face="Times New Roman">m</font></span><span style="color: blue">?/span><span style="color: blue"><font face="Times New Roman"><span>                    </span>m[0-9]{3}</font></span><span style="color: blue">匚w</span><span style="color: blue"><font face="Times New Roman">m7</font></span><span style="color: blue">Q?/span><span style="color: blue"><font face="Times New Roman">m12</font></span><span style="color: blue">Q?/span><span style="color: blue"><font face="Times New Roman">m123<span>                    </span></font></span></font></p> <p style="margin: 0cm 0cm 0pt"><font color="#000000"><span style="color: blue"><font face="Times New Roman">{m,n}<span>             </span></font></span><span style="color: blue">臛_</span><span style="color: blue"><font face="Times New Roman">m</font></span><span style="color: blue">ơ最?/span></font><span style="color: blue"><font face="Times New Roman">n</font></span><span style="color: blue">?/span><span style="color: blue"><font face="Times New Roman"><span>                 </span></font></span></p> <p style="margin: 0cm 0cm 0pt"><span><font face="Times New Roman">\n<span>                </span></font></span><span>表示前一个表辑ּ可以重复</span><span><font face="Times New Roman">N </font></span><span>?/span><span><font face="Times New Roman"><span>    </span>[aeiou]\2 </font></span><span>匚w</span><span><font face="Times New Roman">aatldf </font></span><span>?/span><span><font face="Times New Roman">abldf</font></span></p> <p style="margin: 0cm 0cm 0pt"><span><font face="Times New Roman">[</font></span><span>Q:</span><span><font face="Times New Roman">]<span>           </span><span>  </span></font></span><span>指定一个字W类Q匹配该cM的Q意一个字W?/span></p> <p style="margin: 0cm 0cm 0pt"><span><font face="Times New Roman"></font></span></p> <p style="margin: 0cm 0cm 0pt"><span>使用正规表达式:</span></p> <p style="margin: 0cm 0cm 0pt"><span>函数</span><span><span><font face="Times New Roman">                                         </font></span></span><span>描述</span></p> <p style="margin: 0cm 0cm 0pt"><span><font face="Times New Roman">Regexp_like()<span>      </span></font></span><span>cM?/span><span><font face="Times New Roman">like</font></span><span>q算W,可以使用正规表达式执行模式匹配操?/span></p> <p style="margin: 0cm 0cm 0pt"><span><font face="Times New Roman">Regexp_instr()<span>     </span>instr</font></span><span>q算的扩张,可以用来搜烦匚w正规表达式模式的输入字符?/span></p> <p style="margin: 0cm 0cm 0pt 89.25pt; text-indent: -89.25pt; mso-char-indent-count: -8.5"><span><font face="Times New Roman">Regexp_replace()<span>   </span>replace</font></span><span>的扩展,用户搜烦W合正规表达式模式的输入字符Ԍq用指定的字W代替这些字W串</span></p> <p style="margin: 0cm 0cm 0pt 94.5pt; text-indent: -94.5pt; mso-char-indent-count: -9.0"><span><font face="Times New Roman">Regexp_substr()<span>    </span>substr</font></span><span>函数的扩展,用户搜烦W合正规表达式模式的输入字符Ԍ输出是这些搜索到的字W串</span></p> <p style="margin: 0cm 0cm 0pt"><span><font face="Times New Roman"></font></span></p> <p style="margin: 0cm 0cm 0pt"><span><font face="Times New Roman"></font></span></p> <p style="margin: 0cm 0cm 0pt"><span>说明Q?/span></p> <p style="margin: 0cm 0cm 0pt"><span>一Q?/span><span><font face="Times New Roman">Regexp_like(search_string,pattern [,match_option]);</font></span></p> <p style="margin: 0cm 0cm 0pt"><span><font face="Times New Roman">(1):search_string</font></span><span>是搜索?/span></p> <p style="margin: 0cm 0cm 0pt"><span><font face="Times New Roman">(2):parrern </font></span><span>是用得正规表达式且光度限制在</span><span><font face="Times New Roman">512</font></span><span>字节?/span></p> <p style="margin: 0cm 0cm 0pt"><span><font face="Times New Roman">(3)match_option:</font></span><span>是一个文本串Q可以用户讄该函数的匚w行ؓ</span></p> <p style="margin: 0cm 0cm 0pt"><span><font face="Times New Roman">Match_option</font></span><span>参数表:</span></p> <p style="margin: 0cm 0cm 0pt"><span>?/span><span><span><font face="Times New Roman">                   </font></span></span><span>描述</span></p> <p style="margin: 0cm 0cm 0pt"><span><font face="Times New Roman">C<span>       </span><span>          </span></font></span><span>匚wӞ大小写敏感,是默认设|?/span></p> <p style="margin: 0cm 0cm 0pt"><span><font face="Times New Roman">I<span>                  </span></font></span><span>匚wӞ大小写不敏感</span></p> <p style="margin: 0cm 0cm 0pt"><span><font face="Times New Roman">N<span>                 </span></font></span><span>允许使用圆点Q。)匚wM新增的字W?/span><span><font face="Times New Roman"> </font></span></p> <p style="margin: 0cm 0cm 0pt"><span style="color: blue"><font face="Times New Roman"><font color="#333300">M</font><span><font color="#333300">  </font>               </span></font></span></p> <p style="margin: 0cm 0cm 0pt"><span><font face="Times New Roman">Eg</font></span><span>Q?/span></p> <p style="margin: 0cm 0cm 0pt"><span><font face="Times New Roman">Select author_id,last_name from author where regexp_liek(last_name,’e$’);--</font></span><span>搜烦?/span><span><font face="Times New Roman">e</font></span><span>l尾的作者姓?/span></p> <p style="margin: 0cm 0cm 0pt"><span>二:</span><span><font face="Times New Roman">regexp_instr(search_string,pattern,[,position [,occurrence [,return_option [,match_option ]]]]);</font></span></p> <p style="margin: 0cm 0cm 0pt"><span><font face="Times New Roman">(1) :search_string</font></span><span>是搜索?/span></p> <p style="margin: 0cm 0cm 0pt"><span><font face="Times New Roman">(2):parrern </font></span><span>是用得正规表达式且光度限制在</span><span><font face="Times New Roman">512</font></span><span>字节?/span></p> <p style="margin: 0cm 0cm 0pt"><span><font face="Times New Roman">(3)position </font></span><span>是一个表C搜索开始位|的正整敎ͼ默认Z?/span></p> <p style="margin: 0cm 0cm 0pt"><span><font face="Times New Roman">(4)occurrence</font></span><span>定义了搜索模式的发生ơ数Q默认ؓ一Q?/span></p> <p style="margin: 0cm 0cm 0pt 10.5pt; text-indent: -10.5pt; mso-char-indent-count: -1.0"><span><font face="Times New Roman">(5)return_optionshi </font></span><span>是一个数字,表示该函数应该返回的倹{该数字可以?/span><span><font face="Times New Roman">0</font></span><span>Q表C开始匹配的位置Q也可以是非</span><span><font face="Times New Roman">0</font></span><span>Q表C匹配的l束位置Q?/span></p> <p style="margin: 0cm 0cm 0pt"><span><font face="Times New Roman">(6)match_option </font></span><span>是设|该函数匚w行ؓ的参?/span></p> <p style="margin: 0cm 0cm 0pt"><span><font face="Times New Roman">Eg</font></span><span>Q?/span></p> <p style="margin: 0cm 0cm 0pt"><span><font face="Times New Roman">Select regexp_instr(‘orcale database 10g’,’a’,1,2) from dual;</font></span></p> <p style="margin: 0cm 0cm 0pt"><span><font face="Times New Roman"></font></span></p> <p style="margin: 0cm 0cm 0pt"><span>三:</span></p> <p style="margin: 0cm 0cm 0pt"><span><font face="Times New Roman">regexp_replace((search_string,pattern,[,position[,occurrence[,return_option [,match_option ]]]]);</font></span></p> <p style="margin: 0cm 0cm 0pt"><span><font face="Times New Roman">(1) :search_string</font></span><span>是搜索?/span></p> <p style="margin: 0cm 0cm 0pt"><span><font face="Times New Roman">(2):parrern </font></span><span>是用得正规表达式且光度限制在</span><span><font face="Times New Roman">512</font></span><span>字节?/span></p> <p style="margin: 0cm 0cm 0pt"><span><font face="Times New Roman">(3)position </font></span><span>是一个表C搜索开始位|的正整敎ͼ默认Z?/span></p> <p style="margin: 0cm 0cm 0pt"><span><font face="Times New Roman">(4)occurrence</font></span><span>定义了搜索模式的发生ơ数Q默认ؓ一Q?/span></p> <p style="margin: 0cm 0cm 0pt 10.5pt; text-indent: -10.5pt; mso-char-indent-count: -1.0"><span><font face="Times New Roman">(5)return_optionshi </font></span><span>是一个数字,表示该函数应该返回的倹{该数字可以?/span><span><font face="Times New Roman">0</font></span><span>Q表C开始匹配的位置Q也可以是非</span><span><font face="Times New Roman">0</font></span><span>Q表C匹配的l束位置Q?/span></p> <p style="margin: 0cm 0cm 0pt"><span><font face="Times New Roman">(6)match_option </font></span><span>是设|该函数匚w行ؓ的参?/span></p> <p style="margin: 0cm 0cm 0pt"><span><font face="Times New Roman">)</font></span></p> <p style="margin: 0cm 0cm 0pt"><span><font face="Times New Roman"></font></span></p> <p style="margin: 0cm 0cm 0pt"><span><font face="Times New Roman">Select last_name,regexp_replace(last_name,’e’,’E’) from duthors where author_id<3</font></span></p> <p style="margin: 0cm 0cm 0pt"><span><font face="Times New Roman"></font></span></p> <p style="margin: 0cm 0cm 0pt"><span>四:</span></p> <p style="margin: 0cm 0cm 0pt"><span><font face="Times New Roman">Regexp_substr(seach_string,pattern [,position ,[,occurrence [,match_option]]])</font></span></p> <p style="margin: 0cm 0cm 0pt"><span><font face="Times New Roman">(1) :search_string</font></span><span>是搜索?/span></p> <p style="margin: 0cm 0cm 0pt"><span><font face="Times New Roman">(2):parrern </font></span><span>是用得正规表达式且光度限制在</span><span><font face="Times New Roman">512</font></span><span>字节?/span></p> <p style="margin: 0cm 0cm 0pt"><span><font face="Times New Roman">(3)position </font></span><span>是一个表C搜索开始位|的正整敎ͼ默认Z?/span></p> <p style="margin: 0cm 0cm 0pt"><span><font face="Times New Roman">(4)occurrence</font></span><span>定义了搜索模式的发生ơ数Q默认ؓ一Q?/span></p> <p style="margin: 0cm 0cm 0pt"><span><font face="Times New Roman">(5)match_option </font></span><span>是设|该函数匚w行ؓ的参?/span></p> <p style="margin: 0cm 0cm 0pt"><span><font face="Times New Roman">Eg:</font></span></p> <p style="margin: 0cm 0cm 0pt"><span><font face="Times New Roman">Select last_name,regexp_substr(last_name,’[rst][a-z]{4}’) from authors where length(regexp_sustr(last_name,[rst][a_z]{4}));</font></span></p> <img src ="http://m.tkk7.com/WshmAndLily/aggbug/181793.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://m.tkk7.com/WshmAndLily/" target="_blank">semovy</a> 2008-02-24 17:24 <a href="http://m.tkk7.com/WshmAndLily/articles/181793.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>oracle10g中的事务http://m.tkk7.com/WshmAndLily/articles/181792.htmlsemovysemovySun, 24 Feb 2008 09:20:00 GMThttp://m.tkk7.com/WshmAndLily/articles/181792.htmlhttp://m.tkk7.com/WshmAndLily/comments/181792.htmlhttp://m.tkk7.com/WshmAndLily/articles/181792.html#Feedback0http://m.tkk7.com/WshmAndLily/comments/commentRss/181792.htmlhttp://m.tkk7.com/WshmAndLily/services/trackbacks/181792.html----------------------------------------------事务Ҏ?/span>------------------------------------------------------------

1Q原子?/span>(atomicity)  --事务处理要么全部q行Q要么不q行?/span>

2Q一致?/span>(consistency) –事务处理要将数据库从一U状态{变ؓ?/span>        一U状态?/span>

3Q隔L?/span>(isolation) –在事务处理提交之前,事务处理的效果不能由pȝ中的其他事务看到?/span>

4Q持久?/span>(durability) –一旦提交了事务Q他永q生效?/span>

5Q?/span>set autocommit on--讄数据库系l环境ؓ自动提交事务Q?/span>

SQL> set autocommit on;

SQL> insert into t values(1,'2','2');

已创?/span> 1 行?/span>

提交完成?/span>

SQL> set autocommit off;

SQL> insert into t values(1,'2','2');

已创?/span> 1 行?/span>

SQL> commit;

提交完成?/span>

6Q锁Q(防止q程之间因ؓ抢占资源Q生死锁而设定一U预防死锁生的机制Q?/span>

允许或者拒l资源访问的一U机?/span>

Z防止用户在同一旉内ƈ发的讉K和修Ҏ据库资源Q?/span>orcale中用不同类型的锁控制对数据的ƈ发访问,以防止用户之间出现破坏性的操作?/span>

锁定的类型:

Q?/span>1Q行U锁Q行被排他锁?/span>

Q?/span>2Q表U锁Q共享锁Q共享更新锁Q排他锁

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

行锁:

行被排他锁定Q在某行的锁被释放之前,其他用户不能修改此行Q?/span> commit ?/span> rollback 命o释放?/span>

Oracle 通过使用 INSERT?/span>UPDATE ?/span> SELECTFOR UPDATE 语句自动获取行?/span>

SELECTFOR UPDATE 子句

在表的一行或多行上放|排他锁Q用于防止其他用h新该行,可以执行除更C外的其他操作Q只有该用户提交事务Q其他用h能够更新gname

select * from goods where gid=1001

for update of gname;

server1Q?/span>                                            server2

create table goods (gid int );               

insert into goods values(1)  

insert into goods values(2)  

别的q程讉K该表?/span>,可以执行除更C外的其他操作    

select * from goods where gid=1 for update of gid    讉Kserver1Ӟ可以?/span>goods表进行添加,删除Q查询,但不能修?/span>

FOR UPDATE WAIT 子句?/span>Oracle9i 中的新增功能Q?/span>

Z防止无限期地{待锁定的行Q等待间隔必L定ؓ数值文字,{待间隔不能是表辑ּ、赋值变量或 PL/SQL?/span>
变量

select * from goods where gid=1001 for update of gname wait  3

{待用户释放更新锁的旉?/span>3U,否则时?/span>

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

表锁:

保护表的数据

在多个用户同时访问数据时保数据的完整?/span>

可以讄ZU模式:׃n、共享更新和排他

语法Q?/span>

        Lock table < table_name> in  <mode>;

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

׃n锁:仅允许其他用h行查询操作,不能插入、更新和删除Q多个用户可以同时在同一表中攄此锁

Lock  table  table_name

in share  mode   [nowait];

rollback   ?/span>commit命o释放?/span>

Nowait  关键字告诉其他用户不用等?/span>

lock table<tabale_name>[,<table_name>,....]

in share mode[nowait]

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

׃n更新锁:

锁定要被更新的行

允许其他用户同时查询、插入、更新未被锁定的?/span>

?/span> SELECT 语句中?#8220;FOR UPDATE”子句Q可以强制用共享更新锁

允许多个用户同时锁定表的不同?/span>

加锁的两U方?/span>

(1)lock table tab_name in share update mode;

(2)Select column1, column2 From  goods Where gid=1001  For update of column1, column2

lock table<tabale_name>[,<table_name>,....] in share update mode [nowait]

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

排他锁:

与其他两U锁相比Q排他锁是限制性最强的表锁Q仅允许其他用户查询数据Q不允许执行插入、删除和更新操作Q在同一旉仅允怸位用户在表上攄排他?/span>

׃n锁与此相?/span>

lock table<tabale_name>[,<table_name>,....]

in exclusive mode [nowait]



semovy 2008-02-24 17:20 发表评论
]]>
oracle 10g表的基本操作http://m.tkk7.com/WshmAndLily/articles/181786.htmlsemovysemovySun, 24 Feb 2008 08:55:00 GMThttp://m.tkk7.com/WshmAndLily/articles/181786.htmlhttp://m.tkk7.com/WshmAndLily/comments/181786.htmlhttp://m.tkk7.com/WshmAndLily/articles/181786.html#Feedback0http://m.tkk7.com/WshmAndLily/comments/commentRss/181786.htmlhttp://m.tkk7.com/WshmAndLily/services/trackbacks/181786.html---------------------------------------------------表操?/span>-------------------------------------------------------

1Q表的创建:

create table table_name(column_name datatype[,column_name datatype])

2Q表数据的插入:

insert into table_name values(column_instance)

3Q更新数据:

update table_name set column_instance=? where column_name=?

4Q查询数据:

select * from table_name where condition1 group by column_name1... having.... order by column_name[desc,[asc]]

5Q删除数据:

delete from table_name where column_name1=?

6Q在表空间上建立表:

create table tablename(column_name,datatype)tablespace tablespace_name

7Q?/span>oracle中提?/span>5U约束:

CheckQ?/span>not nullQ?/span>uniqueQ?/span>primary keyQ?/span>foreign key

(a)checkU束

Create table policies(policy_id number ,holder_name varchar2(40),gender varchar2 (1) constraint chk_gender check (gender in ('M','F'),marital_status varchar2 (1),
date_of_birth date ,constraint chk_marital check (marital_status in('S','M','D','W')));

(b)not nullU束

Create table policies(policy_id number ,holder_name varchar2 (40) not null,gender varchar2(1),marital_status varchar2(1),date_of_birth date not null);  

对于not null?/span>alter table语句与其他约束稍微有点不同?/span>Alter table policies modify holder_name not null

(c)uniqueU束

create table  emp(eid  int ,ename  varchar2(10),constraint uq unique(eid,ename))

create  table  emp (eid  int ,ename  varchar(10))

alter table emp  add  constraint pk  primary key(eid,ename);

8?/span>

(a)d新列

alter table table_name add column_name datatype [constraint][constraint_name]

(b) d新列q指定默认?/span>

alter table table_name add column_name datatype default expression

alter table table_name drop column column_name--删除?/span>

alter table table_name modify column_name datatype--修改cd?/span>

alter table table_name disable constraint constraint_name--用U束

alter table table_name enable constraint constraint_name--启用U束

alter table table_name add constraint constraint_name constraint_type(column_name)--dU束

alter table table_name drop constraint constraint_name [cascade]--删除U束

--l合dQ可以用多个列组合成一个主健)

alter table table_name add constraint constraint_name primary key (column_name, column_name...)

semovy 2008-02-24 16:55 发表评论
]]>
oracle10g pl/sql?/title><link>http://m.tkk7.com/WshmAndLily/articles/181739.html</link><dc:creator>semovy</dc:creator><author>semovy</author><pubDate>Sun, 24 Feb 2008 03:41:00 GMT</pubDate><guid>http://m.tkk7.com/WshmAndLily/articles/181739.html</guid><wfw:comment>http://m.tkk7.com/WshmAndLily/comments/181739.html</wfw:comment><comments>http://m.tkk7.com/WshmAndLily/articles/181739.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://m.tkk7.com/WshmAndLily/comments/commentRss/181739.html</wfw:commentRss><trackback:ping>http://m.tkk7.com/WshmAndLily/services/trackbacks/181739.html</trackback:ping><description><![CDATA[<p>Pl/sql基础知识Q?br /> Q?Qpl/sql的块l构<br /> Q?Q变量的声明<br /> Q?Q字W|字符和保留字<br /> Q?Qpl/sql语言使用的数据类?br /> Q?Q隐藏代码的Wrpper实用E序<br /> 了解Q?br /> DDLQdata definition language的羃?包括QalterQcreateQdropQtruncateQgrantQrevoke<br /> DMLQdata manipulation language的羃?包括Qinsert update delete<br /> 目前Qoracle10g存储的数据量可以辑ֈEBU,1EB=1024PBQ?PB=1024TBQ?TB=1024GQ?G=1024MQ?M=1024KBQ?KB=1024B 1B=8b<br /> pl/sql的数据类型:<br /> 标量cdQ字W?字符串类型,数字cdQ布类型,日期/旉cd<br /> 引用cdQref cursorQ游标变量)QrefQ可以理解ؓ一个指针,只是该指针指向的内容是对象表Q或对象视图里的一个对象实例)<br /> 复合cdQ记录,嵌套表,index-by表,varrays<br /> LOB大对象类型:oracle 10前可以存储小?G的二q制或字W数据,oracle 10可以存储最大长度是Q?T-128T<br /> 代码块的基本l构Q?br /> begin <br /> nullQ?-如果没有null会出现异?br /> end<br /> Q-Q-Q-Q-Q-Q-Q-Q-Q-Q-Q-</p> <p>--匿名块的实例Q?br /> CREATE TABLE authors (<br />    id          NUMBER PRIMARY KEY,<br />    first_name VARCHAR2(50),<br />    last_name   VARCHAR2(50)<br /> );</p> <p>CREATE TABLE books (<br />    isbn       CHAR(10) PRIMARY KEY,<br />    category   VARCHAR2(20),<br />    title      VARCHAR2(100),<br />    num_pages NUMBER,<br />    price      NUMBER,<br />    copyright NUMBER(4),<br />    author1    NUMBER CONSTRAINT books_author1<br />              REFERENCES authors(id),<br />    author2    NUMBER CONSTRAINT books_author2<br />              REFERENCES authors(id),<br />    author3    NUMBER CONSTRAINT books_author3<br />              REFERENCES authors(id)<br /> );</p> <p>CREATE TABLE inventory (<br />    isbn          CHAR(10) CONSTRAINT fk_isbn REFERENCES books (isbn),<br />    status        VARCHAR2(25) CHECK (status IN ('IN STOCK', 'BACKORDERED', 'FUTURE')),<br />    status_date   DATE,<br />    amount        NUMBER<br /> );<br /> INSERT INTO authors (id, first_name, last_name)<br />    VALUES (1, 'Marlene', 'Theriault');</p> <p>INSERT INTO authors (id, first_name, last_name)<br />    VALUES (2, 'Rachel', 'Carmichael');</p> <p>INSERT INTO authors (id, first_name, last_name)<br />    VALUES (3, 'James', 'Viscusi');</p> <p>INSERT INTO books (isbn, category, title, num_pages, price, copyright, author1, author2, author3)<br />    VALUES ('72121203', 'Oracle Basics', 'Oracle DBA 101', 563, 39.99, 1999, 1, 2, 3);</p> <p>INSERT INTO inventory (isbn, status, status_date, amount)<br />    VALUES ('72121203', 'BACKORDERED', TO_DATE('06-JUN-2004', 'DD-MON-YYYY'), 1000);</p> <p>SET SERVEROUTPUT ON ESCAPE OFF--当退匿名块时关闭SERVEROUTPUT<br /> DECLARE<br />     v_first_name authors.first_name%TYPE;   --声明和定义变?br />     v_last_name authors.last_name%TYPE;<br />     v_row_count PLS_INTEGER := 0;<br />     CURSOR auth_cur IS    --声明游标<br />        SELECT a.first_name, a.last_name, count(b.title)<br />        FROM authors a, books b<br />        WHERE a.id = b.author1<br />        OR a.id = b.author2<br />        OR a.id = b.author3<br />        GROUP BY a.first_name, a.last_name<br />        HAVING count(b.title) > 0<br />        ORDER BY a.last_name;<br /> BEGIN<br />     DBMS_OUTPUT.ENABLE(1000000);<br />     OPEN auth_cur;   --打开游标<br />     LOOP<br />        FETCH auth_cur INTO v_first_name, v_last_name, v_row_count;--推进游标<br />        EXIT WHEN auth_cur%NOTFOUND;   --当没有发现数据时Q推?br />        DBMS_OUTPUT.PUT_LINE(v_last_name<br />                             ||', '<br />                             ||v_first_name<br />                             ||' wrote '<br />                             ||v_row_count<br />                             ||' book(s).');<br />     END LOOP;   <br />     CLOSE auth_cur;   --关闭游标<br /> EXCEPTION            --异常处理部分<br />     WHEN OTHERS       --others表示其它别的异常<br />        THEN<br />        DBMS_OUTPUT.PUT_LINE(SQLERRM);<br /> END;</p> <img src ="http://m.tkk7.com/WshmAndLily/aggbug/181739.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://m.tkk7.com/WshmAndLily/" target="_blank">semovy</a> 2008-02-24 11:41 <a href="http://m.tkk7.com/WshmAndLily/articles/181739.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>oracle基础知识结http://m.tkk7.com/WshmAndLily/articles/181593.htmlsemovysemovySat, 23 Feb 2008 06:42:00 GMThttp://m.tkk7.com/WshmAndLily/articles/181593.htmlhttp://m.tkk7.com/WshmAndLily/comments/181593.htmlhttp://m.tkk7.com/WshmAndLily/articles/181593.html#Feedback0http://m.tkk7.com/WshmAndLily/comments/commentRss/181593.htmlhttp://m.tkk7.com/WshmAndLily/services/trackbacks/181593.html(1)SEQNAME.NEXTVAL里面的值如何读出来

可以直接在insert into test values(SEQNAME.NEXTVAL) 是可以用q样Q?nbsp;    

SELECT tmpdata_seq.NEXTVAL
        INTO id_temp
        FROM DUAL;  然后可以用id_temp

(2)PLS-00103: 出现W号 ">"在需要下列之一Ӟ
代码如下Q?nbsp;    

 IF (sum>0)
      THEN
   begin
         INSERT INTO emesp.tp_sn_production_log
              VALUES (r_serial_number, , id_temp);

         EXIT;
    end; 

一直报sum>0 q是个很郁闷的问?因ؓ变量用了sum  所以不行,后改为i_sum>0

(3)oracle 语法

1. Oracle应用~辑Ҏ概览
{:1) Pro*C/C++/... : C语言和数据库打交道的ҎQ比OCI更常?
    2) ODBC
    3) OCI: C语言和数据库打交道的ҎQ和ProC很相|更底层,很少?
    4) SQLJ: 很新的一U用Java讉KOracle数据库的ҎQ会的h不多;
    5) JDBC
    6) PL/SQL: 存储在数据内q行, 其他Ҏ为在数据库外Ҏ据库讉K;

2. PL/SQL
{:1) PL/SQL(Procedual language/SQL)是在标准SQL的基上增加了q程化处理的语言;
    2) Oracle客户端工兯问Oracle服务器的操作语言;
    3) Oracle对SQL的扩?

4. PL/SQL的优~点
{:优点Q?br />     1) l构化模块化~程Q不是面向对?
    2) 良好的可UL?不管Oracleq行在何U操作系l?;
    3) 良好的可l护?~译通过后存储在数据库里);
    4) 提升pȝ性能;


    W二?/font>

PL/SQLE序l构

1. PL/SQL?br /> {:1) x部分, DECLARE(不可?;
    2) 执行部分, BEGIN...END;
    3) 异常处理QEXCEPTION(可以没有);

2. PL/SQL开发环?br /> {:可以q用MU文本的~辑器编辑,例如QVI    Qtoad很好?/font>

3. PL/SQL字符?br /> {:PL/SQL对大写不敏?/font>

4. 标识W命名规?br /> {:1) 字母开?
    2) 后跟L的非I格字符、数字、货币符受下划线、或# ;
    3) 最大长度ؓ30个字W?八个字符左右最合?;

5. 变量声明
{:语法
    Var_name type [CONSTANT][NOT NULL][:=value];
    注:1) x时可以有默认g可以没有;
        2) 如有[CONSTANT][NOT NULL], 变量一定要有一个初始?
        3) 赋D句ؓ“:=”;
        4) 变量可以认ؓ是数据库里一个字D?
        5) 规定没有初始化的变量为NULL;

W三?/font>

1. 数据cd
{:1) 标量型:数字型、字W型、布型、日期型;
    2) l合型:RECORD(常用)、TABLE(常用)、VARRAY(较少?
    3) 参考型QREF CURSOR(游标)、REF object_type
    4) LOB(Large Object)

2. %TYPE
{:变量h与数据库的表中某一字段相同的类?br />     例:v_FirstName studengts.first_name%TYPE;

3. RECORDcd
{:TYPE record_name IS RECORD(            /*其中TYPEQISQRECORD为关键字Qrecord_name为变量名U?/
 field1 type [NOT NULL][:=expr1],   /*每个{h的成员间用逗号分隔*/
 field2 type [NOT NULL][:=expr2],   /*如果一个字D限定NOT NULLQ那么它必须拥有一个初始?/
        ...                                /*所有没有初始化的字D都会初始ؓNULL
 fieldn type [NOT NULL][:=exprn]);

4. %ROWTYPE
{:q回一个基于数据库定义的类?br />     DECLARE
      v_StuRec Student%ROWTYPE;            /*Student的名?/

    注:?中定一个record相比Q一步就完成Q?中定义分二步Qa. 所有的成员变量都要x; b. 实例化变?

5. TABLEcd
{:TYPE tabletype IS TABLE OF type INDEX BY BINARY_INTEGER;
    例:DECLARE
          TYPE t_StuTable IS TABLE OF Student%ROWTYPE INDEX BY BINARY_INTERGER;
          v_Student t_StuTable;
 BEGIN
          SELECT * INTO v_Student(100) FROM Student WHERE id = 1001;
        END;
    注:1) 行的数目的限制由BINARY_INTEGER的范围决?

6. 变量的作用域和可见?br /> {:1) 执行块里可以嵌入执行?
    2) 里层执行块的变量对外层不可见;
    3) 里层执行块对外层执行块变量的修改会媄响外层块变量的?

W四?/font>

1. 条g语句
{:IF boolean_expression1 THEN
    ...
    ELSIF boolean_expression2 THEN   /*注意是ELSIFQ而不是ELSEIF*/
    ...                              /*ELSE语句不是必须的,但END IF;是必ȝ*/
    ELSE
    ...
    END IF;

2. 循环语句
{:1) Loop
       ...
         IF boolean_expr THEN        /* */
            EXIT;                    /* EXIT WHEN boolean_expr */
         END IF;                     /* */
       END LOOP;
    2) WHILE boolean_expr LOOP
       ...
       END LOOP;
    3) FOR loop_counter IN [REVERSE] low_blound..high_bound LOOP
       ...
       END LOOP;
       注:a. 加上REVERSE 表示递减Q从l束边界到v始边界,递减步长Z;
           b. low_blound  起始边界; high_bound  l束边界;

3. GOTO语句
{:GOTO label_name;
    1) 只能由内部块跛_外部?
    2) 讄标签Q?lt;<label_name>>
    3) CZQ?br />        LOOP
       ...
         IF D%ROWCOUNT = 50 THEN
            GOTO l_close;
         END IF;
       ...
       END LOOP;
       <<l_close>>;
       ...

4. NULL语句
{:在语句块中加I句,用于补充语句的完整性。示例:
    IF boolean_expr THEN
    ...
    ELSE
      NULL;
    END IF;

5. SQL in PL/SQL
{:1) 只有DML SQL可以直接在PL/SQL中?

W五?/font>

1. 游标(CURSOR)
{:1) 作用Q用于提取多行数据集;
    2) 声明Qa. 普通申明:DELCARE CURSOR CURSOR_NAME IS select_statement  /* CURSOR的内容必L一条查询语?/
             b. 带参数申明:DELCARE CURSOR c_stu(p_id student.ID%TYPE) SELECT * FROM student WHERE ID = p_id;
    3) 打开游标QOPEN Cursor_name;   /*相当于执行select语句Q且把执行结果存入CURSOR;
    4) 从游标中取数Qa. FETCH cursor_name INTO var1, var2, ...; /*变量的数量、类型、顺序要和Table中字D一?*/
                     b. FETCH cursor_name INTO record_var;
       注:gCURSOR取出攑օ变量中,每FETCH一ơ取一条记?
    5) 关闭游标: CLOSE Cursor_name;
       注:a. 游标使用后应该关?
           b. 关闭后的游标不能FETCH和再ơCLOSE;
           c. 关闭游标相当于将内存中CURSOR的内ҎI?

2. 游标的属?br /> {:1) %FOUND:    是否有?
    2) %NOTFOUND: 是否没有?
    3) %ISOPEN:   是否是打开状?
    4) %ROWCOUNT: CURSOR当前的记录号;

3. 游标的FETCH循环
{:1) LOOP
         FETCH cursor INTO ...
         EXIT WHEN cursor%NOTFOUND;   /*当cursor中没记录后退?/
       END LOOP;
    2) WHILE cursor%FOUND LOOP
         FETCH cursor INTO ...
       END LOOP;
    3) FOR var IN cursor LOOP
         FETCH cursor INTO...
       END LOOP;
      
W六?/font>

1. 异常
{:DECLARE
      ...
      e_TooManyStudents EXCEPTION;  /* x异常 */
      ...
    BEGIN
      ...
      RAISE e_TooManyStudents;      /* 触发异常 */
      ...
    EXCEPTION
      WHEN e_TooManyStudents THEN   /* 触发异常 */
      ...
      WHEN OTHERS THEN              /* 处理所有其他异?*/
      ...
    END;

2004-9-8     星期?nbsp;   ?/font>

PL/SQL数据库编E??

1. 存储q程(PROCEDURE)
{:创徏q程Q?br />     CREATE [OR REPLACE] PROCEDURE proc_name
         [(arg_name[{IN|OUT|IN OUT}]TYPE,
           arg_name[{IN|OUT|IN OUT}]TYPE)]
          {IS|AS}
    procedure_body
    1) IN: 表示该参C能被赋?只能位于{号双);
    2) OUT:表示该参数只能被赋?只能位于{号左边);
    3) IN OUT: 表示该类型既能被赋g能传?

2. 存储q程例子
{:CREATE OR REPLACE PROCEDURE ModeTest(
        p_InParm IN NUMBER,
        p_OutParm OUT NUMBER,
        p_InOutParm IN OUT NUMBER)
    IS
        v_LocalVar NUMBER;                      /* 声明部分 */
    BEGIN
        v_LocalVar:=p_InParm;                   /* 执行部分 */
        p_OutParm:=7;
        p_InOutParm:=7;
        ...
    EXCEPTION
        ...                                     /* 异常处理部分 */
    END ModeTest;
   
3. 调用PROCEDURE的例?br /> {:1) 匿名块可以调;
    2) 其他PROCDEURE可以调用;
    例:
    DECLARE
        v_var1 NUMBER;
    BEGIN
        ModeTest(12, v_var1, 10);
    END;
    注:此时v_var1{于7

4. 指定实参的模?br /> {:1) 位置标示法:调用时添入所有参敎ͼ实参与Ş参按序一一对应;
    2) 名字标示法:调用时给出Ş参名字,q给出实?br />        ModeTest(p_InParm=>12, p_OutParm=>v_var1, p_Inout=>10);
    注:a. 两种Ҏ可以L;
        b. L时第一个参数必通过位置来指定?/font>

5. 函数(Function)与过E?Procedure)的区?br /> {:1) q程调用本n是一个PL/SQL语句(可以在命令行中通过exec语句直接调用);
    2) 函数调用是表辑ּ的一部分;

6. 函数的声?br /> {:CREATE [OR REPLACE] PROCEDURE proc_name
        [(arg_name[{IN|OUT|IN OUT}]TYPE,
          arg_name[{IN|OUT|IN OUT}]TYPE)]
    RETURN TYPE
    {IS|AS}
    procedure_body
    注:1) 没有q回语句的函数将是一个错?

7. 删除q程与函?br /> {:DROP PROCEDURE proc_name;
    DROP FUNCTION func_name;

W八?/font>

1. ?br /> {:1) 包是可以相兛_象存储在一LPL/SQL的结?
    2) 包只能存储在数据库中Q不能是本地?
    3) 包是一个带有名字的声明;
    4) 相当于一个PL/SQL块的声明部分;
    5) 在块的声明部分出现的M东西都能出现在包?
    6) 包中可以包含q程、函数、游标与变量;
    7) 可以从其他PL/SQL块中引用包,包提供了可用于PL/SQL的全局变量?br />     8) 包有包头和包MQ如包头中没有Q何函Cq程Q则包主体可以不需要?/font>

2. 包头
{:1) 包头包含了有兛_的内容的信息Q包头不含Q何过E的代码?br />     2) 语法Q?br />        CREATE [OR REPLACE] PACKAGE pack_name {IS|AS}
            procedure_specification|function_specification|

variable_declaration|type_definition|exception_declaration|

cursor_declaration
       END pack_name;
    3) CZQ?br />        CREATE OR REPLACE PACKAGE pak_test AS
           PROCEDURE RemoveStudent(p_StuID IN students.id%TYPE);
           TYPE t_StuIDTable IS TABLE OF students.id%TYPE INDEX BY BINARY_INTEGER;
       END pak_test;

3. 包主?br /> {:1) 包主体是可选的Q如包头中没有Q何函Cq程Q则包主体可以不需要?br />     2) 包主体与包头存放在不同的数据字典中?br />     3) 如包头编译不成功Q包M无法正确~译?br />     4) 包主体包含了所有在包头中声明的所有过E与函数的代码?br />     5) CZQ?br />        CREATE OR REPLACE PACKAGE BODY pak_test AS
           PROCEDURE RemoveStudent(p_StuID IN students.id%TYPE) IS
           BEGIN
              ...
           END RemoveStudent;
           TYPE t_StuIDTable IS TABLE OF students.id%TYPE INDEX BY BINARY_INTEGER;
       END pak_test;

4. 包的作用?br /> {:1) 在包外调用包中过E?需加包?Qpak_test.AddStudent(100010, 'CS', 101);
    2) 在包M中可以直接用包头中声明的对象和q程(不需加包?;

5. 包中子程序的重蝲
{:1) 同一个包中的q程与函数都可以重蝲;
    2) 相同的过E或函数名字Q但参数不同;

6. 包的初始?br /> {:1) 包存攑֜数据库中;
    2) 在第一ơ被调用的时候,包从数据库中调入内存q被初始?
    3) 包中定义的所有变量都被分配内?
    4) 每个会话都将拥有自己的包内变量的副本?/font>

W九?/font>

1. 触发?br /> {:1) 触发器与q程/函数的相同点
       a. 都是带有名字的执行块;
       b. 都有声明、执行体和异帔R?
    2) 触发器与q程/函数的不同点
       a. 触发器必d储在数据库中;
       b. 触发器自动执?

2. 创徏触发?br /> {:1) 语法Q?br />        CREATE [OR REPLACE] TRIGGER trigger_name
       {BEFORE|AFTER} triggering_event ON table_reference
       [FOR EACH ROW [WHEN trigger_condition]]
       trigger_body;
    2) 范例Q?br />        CREATE OR REPLACE TRIGGER UpdateMajorStats AFTER INSERT OR DELETE OR UPDATE ON students
       DECLARE
           CURSOR c_Statistics IS
               SELECT * FROM students GROUP BY major;
       BEGIN
           ...
       END Up;

3. 触发?br /> {:1) 三个语句(INSERT/UPDATE/DELETE);
    2) 二种cd(之前/之后);
    3) 二种U别(row-level/statement-level);
    所以一共有 3 X 2 X 2 = 12

4. 触发器的限制
{:1) 不应该用事务控制语?
    2) 不能声明MLONG或LONG RAW变量;
    3) 可以讉K的表有限?/font>

5. 触发器的M可以讉K的表
{:1) 不可以读取或修改M变化?被DML语句正在修改的表);
    2) 不可以读取或修改限制?带有U束的表)的主键、唯一倹{外键列?/font>

(4)Java开发中使用Oracle的ORA-01000

很多朋友在Java开发中Q用Oracle数据库的时候,l常会碰到有ORA-01000: maximum open cursors exceeded.的错误?br /> 实际上,q个错误的原因,主要q是代码问题引v的?
ora-01000: maximum open cursors exceeded.
表示已经辑ֈ一个进E打开的最大游标数?
q样的错误很Ҏ出现在Java代码中的主要原因是:Java代码在执行conn.createStatement()和conn.prepareStatement()的时候,实际上都是相当与在数据库中打开了一个cursor。尤其是Q如果你的createStatement和prepareStatement是在一个@环里面的话,׃非常Ҏ出现q个问题。因为游标一直在不停的打开Q而且没有关闭?br /> 一般来_我们在写Java代码的时候,createStatement和prepareStatement都应该要攑֜循环外面Q而且使用了这些Statment后,及时关闭。最好是在执行了一ơexecuteQuery、executeUpdate{之后,如果不需要用结果集QResultSetQ的数据Q就马上Statment关闭?br /> 对于出现ORA-01000错误q种情况Q单U的加大open_cursorsq不是好办法Q那只是L不治本。实际上Q代码中的隐患ƈ没有解除?
而且Q绝大部分情况下Qopen_cursors只需要设|一个比较小的|p够用了Q除非有非常特别的要求?/font>

 

(5)在store procedure中执?DDL语句
一是:execute immediate 'update '||table_chan||' set '||column_changed||' = '''||v_trans_name||''' where empid = '''||v_empid||'''' ;

二是Q?/font>The DBMS_SQL package can be used to execute DDL statements directly from PL/SQL.  

q是一个创Z个表的过E的例子。该q程有两个参敎ͼ表名和字D及其类型的列表?br />
CREATE OR REPLACE PROCEDURE ddlproc (tablename varchar2, cols varchar2) AS
  cursor1 INTEGER;
BEGIN
  cursor1 := dbms_sql.open_cursor;
  dbms_sql.parse(cursor1, 'CREATE TABLE ' || tablename ||     ' ( ' || cols || ' )', dbms_sql.v7);
  dbms_sql.close_cursor(cursor1);
end;
/

2 如何找数据库表的主键字段的名U?
SQL>SELECT * FROM user_constraints
WHERE CONSTRAINT_TYPE='P' and table_name='TABLE_NAME';
3 如何查询数据库有多少?
SQL>select * from all_tables;

4 使用sqll配W?/font>

通配W?描述 CZ % 包含零个或更多字W的L字符丌Ӏ?WHERE title LIKE '%computer%' 查扑֤于书名Q意位|的包含单词 computer 的所有书名?_Q下划线Q?M单个字符?WHERE au_fname LIKE '_ean' 查找以 ean l尾的所?4 个字母的名字QDean、Sean {)?[ ] 指定范围 ([a-f]) 或集?([abcdef]) 中的M单个字符?WHERE au_lname LIKE '[C-P]arsen' 查找以arsen l尾且以介于 C ?P 之间的Q何单个字W开始的作者姓氏,例如QCarsen、Larsen、Karsen {?[^] 不属于指定范?([a-f]) 或集?([abcdef]) 的Q何单个字W?WHERE au_lname LIKE 'de[^l]%' 查找以 de 开始且其后的字母不?l 的所有作者的姓氏?/font>

5使普通用h查看v$Session的权?/font>

GRANT SELECT
    ON  "SYS"."V_$OPEN_CURSOR" TO "SFISM4"; 
GRANT SELECT
    ON  "SYS"."V_$SESSION" TO "SFISM4";

常用函数

 distinct
L重复?br /> minus 相减
在第一个表但不在第二个?br /> SELECT * FROM FOOTBALL MINUS SELECT * FROM SOFTBALL;
intersect 怺
INTERSECT q回两个表中共有的行?br /> SELECT * FROM FOOTBALQ?br /> UNION ALL 与UNION 一样对表进行了合ƈ但是它不L重复的记录?br /> 汇d?br /> count
select count(*) from test;
SUM
SUM 如同它的本意一样它q回某一列的所有数值的和?br /> SELECT SUM(SINGLES) TOTAL_SINGLES FROM TEST;
SUM 只能处理数字如果它的处理目标不是数字你将会收到如下信?br /> 输入/输出
SQL>SELECT SUM(NAME) FROM TEAMSTATS;
ERROR
ORA-01722 invalid number
no rows selected
该错误信息当然的合理的因为NAME 字段是无法进行汇ȝ?br /> AVG
AVG 可以q回某一列的q_倹{?br /> SELECT AVG(SO) AVE_STRIKE_OUTS FROM TEAMSTATSQ?br /> MAX
如果你想知道某一列中的最大D使用MAX?br /> SELECT MAX(HITS) FROM TEAMSTATS;
MIN
MIN 与MAX cM它返回一列中的最数倹{?br /> VARIANCE
VARIANCE 方差不是标准中所定义的但它却是统计领域中的一个至关重要的数倹{?br /> SELECT VARIANCE(HITS)  FROM TEAMSTATS;
STDDEV
q是最后一个统计函数STDDEV q回某一列数值的标准差?br /> SELECT STDDEV HITS FROM TEAMSTATSQ?br /> 日期旉函数
ADD_MONTHS 
 ADD_MONTHS也可以工作在select 之外
该函数的功能是将l定的日期增加一个月举例来说׃一些特D的原因上述的计划需要推q两个月那么qC?br /> LAST_DAY
LAST_DAY 可以q回指定月䆾的最后一?
MONTHS_BETWEEN
如果你想知道在给定的两个日期中有多少个月可以使用MONTHS_BETWEEN?br /> select task, startdate, enddate ,months between(Startdate,enddate) duration from project;
q回l果有可能是负?
可以利用负值来判断某一日期是否在另一个日期之前下例将会显C所有在1995 q? ?9 日以前开始的比赛.
SELECT * FROM PROJECT
WHERE MONTHS_BETWEEN ('19-MAY-95', STARTDATE)>0;
NEW_TIME
如果你想把时间调整到你所在的时区你可以用NEW_TIME.
SQL>SELECT ENDDATE EDT, NEW_TIME('ENDDATE',' EDT',' PDT') FROM PROJECT;
NEXT_DAY
NEXT_DAY 返回与指定日期在同一个星期或之后一个星期内的你所要求的星期天
数的切日期如果你想知道你所指定的日期的星期五是几号可以q样?
SQL>SELECT STARTDATE, NEXT_DAY(STARTDATE,' FRIDAY') FROM PROJECT;
SYSDATE
SYSDATE 返回系l的日期和时间?br /> SELECT DISTINCT SYSDATE FROM PROJECTQ?br /> 数学函数
ABS
ABS 函数q回l定数字的绝对?br /> CEIL 和FLOOR
CEIL q回与给定参数相{或比给定参数在的最整?FLOOR 则正好相反它q回
与给定参数相{或比给定参数小的最大整?
COS COSH SIN SINH TAN TANH
COS SIN TAN 函数可以q回l定参数的三角函数值默认的参数认定为弧度制.
EXP
EXP 会q回以给定的参数为指Ce 为底数的q?
LN and LOG
q是两个Ҏ函数其中LN q回l定参数的自然对?
MOD
知道在ANSI 标准中规定取模运的W号?在一些解释器中被函数MOD 所取代.
POWER
该函数可以返回某一个数对另一个数的幂在用幂函数时第一个参Cؓ底数W二个ؓ指数?br /> SIGN
如果参数的gؓ负数那么SIGN q回-1 如果参数的gؓ正数那么SIGN q回1,如果参数为零那么SIGN 也返回零.
SQRT
该函数返回参数的qx?׃负数是不能开qx的所以我们不能将该函数应用于负数.
字符函数
CHR
该函数返回与所l数值参数等当的字符q回的字W取决于数据库所依赖的字W集.
CONCAT
和||一个作用,把两个字W串q接h.
INITCAP
该函数将参数的第一个字母变为大写此外其它的字母则{换成写.
LOWER 和UPPER
如你所料LOWER 参数{换ؓ全部写字母而UPPER 则把参数全部转换成大写字?
LPAD 与RPAD
q两个函数最需要两个参数最多需要三个参数每一个参数是需要处理的字符?br /> W二个参数是需要将字符串扩充的宽度W三个参数表C加宽部分用什么字W来做填?br /> W三个参数的默认gؓI格但也可以是单个的字符或字W串.
LTRIM 与RTRIM
LTRIM 和RTRIM臛_需要一个参数最多允怸个参数第一个参CLPAD 和RPAD
cM是一个字W串W二个参C是一个字W或字符串默认则是空格如果第二个
C是空格的话那么该函数会像剪除空格那样剪除所指定的字W?
REPLACE
它的工作如果它的名字所说的那样该函数需要三个参数第一个参数是需要搜?br /> 的字W串(列名Q,W二个参数是搜烦的内容第三个参数则是需要替换成的字W串如果W三?br /> 参数省略或者是NULL 那么只执行搜烦操作而不会替换Q何内?
SUBSTR
q个函数有三个参数允怽目标字W串的一部䆾输出Q第一个参Cؓ目标字符Ԍ
W二个字W串是将要输出的子串的v点,W三个参数是要输出的子串的长度?br /> 如果W二个参Cؓ负数那么会从源串的N开始向前定位至负数的绝对值的位置?br /> TRANSLATE
q一函数有三个参敎ͼ目标字符丌Ӏ源字符串和目的字符Ԍ在目标字W串与源字符
串中均出现的字符会被替换成对应的目的字W串的字W?br /> INSTR
如果需要知道在一个字W串中满特定的内容的位|可以用INSTR Q它的第一个参
数是目标字符ԌW二个参数是匚w的内容,W三和第四个参数是数字用以指定开始搜
索的L以及指出W几个满x件的会被返回?br /> LENGTH
LENGTH返回指定字W串的长度?br /> 转换函数
转换函数有三个可以你方便地数据从一U类型变换ؓ另一U类型?br /> TO_CHAR
该函数的最初功能是一个数字{换ؓ字符型,不同的解释器可能会用它来{换其它的
数据cd例如日期型{换ؓ字符型或者是拥有更多的参数?br /> TO_NUMBER
该函CTO_CHAR 函数相对应显而易见它是将一个字W串型数字{换ؓ数值型?br /> 其他函数
GREATEST 与LEAST
q两个函数将q回几个表达式中最大的和最的?br /> SELECT GREATESTQ?#8216;ALPHA’Q?#8216; BRAVO’Q?#8216; FOXTROT’Q?#8216; DELTA’Q?FROM CONVERTQ?br /> 看来有必要用FROM 子句可是如果FROM 子句没有的话你将会收C个错误信息每
一个SELECT 语句都需要FROM 子句?br /> USER
该函数返回当前用数据库的用L名字



semovy 2008-02-23 14:42 发表评论
]]>
ORACLE DATE和TIMESTAMP数据cd的比?/title><link>http://m.tkk7.com/WshmAndLily/articles/180563.html</link><dc:creator>semovy</dc:creator><author>semovy</author><pubDate>Mon, 18 Feb 2008 14:47:00 GMT</pubDate><guid>http://m.tkk7.com/WshmAndLily/articles/180563.html</guid><wfw:comment>http://m.tkk7.com/WshmAndLily/comments/180563.html</wfw:comment><comments>http://m.tkk7.com/WshmAndLily/articles/180563.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://m.tkk7.com/WshmAndLily/comments/commentRss/180563.html</wfw:commentRss><trackback:ping>http://m.tkk7.com/WshmAndLily/services/trackbacks/180563.html</trackback:ping><description><![CDATA[ <img src ="http://m.tkk7.com/WshmAndLily/aggbug/180563.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://m.tkk7.com/WshmAndLily/" target="_blank">semovy</a> 2008-02-18 22:47 <a href="http://m.tkk7.com/WshmAndLily/articles/180563.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>ORACLE的数据类?/title><link>http://m.tkk7.com/WshmAndLily/articles/180517.html</link><dc:creator>semovy</dc:creator><author>semovy</author><pubDate>Mon, 18 Feb 2008 11:24:00 GMT</pubDate><guid>http://m.tkk7.com/WshmAndLily/articles/180517.html</guid><wfw:comment>http://m.tkk7.com/WshmAndLily/comments/180517.html</wfw:comment><comments>http://m.tkk7.com/WshmAndLily/articles/180517.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://m.tkk7.com/WshmAndLily/comments/commentRss/180517.html</wfw:commentRss><trackback:ping>http://m.tkk7.com/WshmAndLily/services/trackbacks/180517.html</trackback:ping><description><![CDATA[<div id="ttzvdxr" class="tit">ORACLE的数据类?/div> <div id="jfdjhjj" class="date">2007-11-28 10:04</div> <table style="table-layout: fixed"> <tbody> <tr> <td> <div id="bfjpxvd" class="cnt"> <p>字段cd        中文说明                            限制条g                        其它说明 <br /> ----------      ---------------------------------- ------------------------------ --------------<br /> CHAR            固定长度字符?nbsp;                最大长?000 bytes    <br /> VARCHAR2    可变长度的字W串             最大长?000 bytes         可做索引的最大长?49 <br /> NCHAR           Ҏ字符集而定的固定长度字W串      最大长?000 bytes    <br /> NVARCHAR2 Ҏ字符集而定的可变长度字W串      最大长?000 bytes    <br /> DATE            日期(??q? DD-MM-YY(HH-MI-SS)                       l过严格试Q无千虫问题 <br /> LONG            长字符?nbsp;                       最大长?G(231-1)          _存储大部头著?<br /> RAW             固定长度的二q制数据       最大长?000 bytes         可存攑֤媒体图象声音{?<br /> LONG RAW    可变长度的二q制数据      最大长?G                      同上 <br /> BLOB            二进制数?nbsp;                       最大长?G   <br /> CLOB            字符数据                            最大长?G   <br /> NCLOB          Ҏ字符集而定的字W数?nbsp;      最大长?G   <br /> BFILE           存放在数据库外的二进制数?nbsp;   最大长?G   <br /> ROWID          数据表中记录的唯一行号           10 bytes                     ********.****.****格式Q??? <br /> NROWID        二进制数据表中记录的唯一行号     最大长?000 bytes <br /> NUMBER(P,S)    数字cd                                                             P为整CQS为小C <br /> DECIMAL(P,S)    数字cd                                                             P为整CQS为小C <br /> INTEGER         整数cd                                                             的整数 <br /> FLOAT           点数类?nbsp;                                                          NUMBER(38)Q双_ֺ <br /> REAL            实数cd                                                             NUMBER(63)Q精度更?/p> </div> </td> </tr> </tbody> </table> <img src ="http://m.tkk7.com/WshmAndLily/aggbug/180517.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://m.tkk7.com/WshmAndLily/" target="_blank">semovy</a> 2008-02-18 19:24 <a href="http://m.tkk7.com/WshmAndLily/articles/180517.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>杂记(创徏用户和简单基本权限给?Oraclehttp://m.tkk7.com/WshmAndLily/articles/170040.htmlsemovysemovyMon, 24 Dec 2007 05:57:00 GMThttp://m.tkk7.com/WshmAndLily/articles/170040.htmlhttp://m.tkk7.com/WshmAndLily/comments/170040.htmlhttp://m.tkk7.com/WshmAndLily/articles/170040.html#Feedback0http://m.tkk7.com/WshmAndLily/comments/commentRss/170040.htmlhttp://m.tkk7.com/WshmAndLily/services/trackbacks/170040.html创徏用户:

create user userName identified by password;



单基本权限给?

grant connect,resource to userName;


CONNECT角色Q?nbsp;   --是授予最l用L典型权利Q最基本?nbsp;  
    
   ALTER    SESSION    --修改会话   
   CREATE    CLUSTER    --建立聚簇   
   CREATE    DATABASE    LINK    --建立数据库链?nbsp;  
   CREATE    SEQUENCE    --建立序列   
   CREATE    SESSION    --建立会话   
   CREATE    SYNONYM    --建立同义?nbsp;  
   CREATE    VIEW    --建立视图   
    
    
   RESOURCE角色Q?nbsp;   --是授予开发h员的   
    
   CREATE    CLUSTER    --建立聚簇   
   CREATE    PROCEDURE    --建立q程   
   CREATE    SEQUENCE    --建立序列   
   CREATE    TABLE    --   
   CREATE    TRIGGER    --建立触发?nbsp;  
   CREATE    TYPE    --建立cd


semovy 2007-12-24 13:57 发表评论
]]>
oracle SQLhttp://m.tkk7.com/WshmAndLily/articles/153095.htmlsemovysemovyMon, 15 Oct 2007 13:26:00 GMThttp://m.tkk7.com/WshmAndLily/articles/153095.htmlhttp://m.tkk7.com/WshmAndLily/comments/153095.htmlhttp://m.tkk7.com/WshmAndLily/articles/153095.html#Feedback0http://m.tkk7.com/WshmAndLily/comments/commentRss/153095.htmlhttp://m.tkk7.com/WshmAndLily/services/trackbacks/153095.html    alter table TABLE_NAME add constraint KEY_NAME primary key (TABLE_COLUMN);
   指定表空?br />    alter table TABLE_NAME add constraint KEY_NAME primary key (TABLE_COLUMN) using index tablespace TABLE_SPACE_NAME;
  2.增加外键
   alter table TABLE_NAME add constraint FK_NAME foreign key (TABLE_COLUMN) references KEY_TABLE_NAME;
  3.使主键或外键失效、生?br />    alter table TABLE_NAME disable(enable) constraint KEY_NAME;
  4、查看各U约?br />    select constraint_name,table_name,constraint_type,status from user_constraints;
select constraint_name, constraint_type,search_condition, r_constraint_name from user_constraints where table_name = upper('&table_name')
   select c.constraint_name,c.constraint_type,cc.column_name
   from user_constraints c,user_cons_columns cc
   where c.owner = upper('&table_owner') and c.table_name = upper('&table_name')
   and c.owner = cc.owner and c.constraint_name = cc.constraint_name
   order by cc.position;
  5、删除主键或外键
   alter table TABLE_NAME drop constraint KEY_NAME;
  6、徏外键
   单字D|Qcreate table 表名 (col1 char(8),
   cno char(4) REFERENCE course);
   多个字段?在最后加?Foreign Key (字段? REFERENCE 表名(字段)
   q带删除选项 (on delete cascade
   当指定时Q如果父表中的记录被删除Q则依赖于父表的记录也被删除
   REFERENCE 表名Q) on delete cascade;
  7、删除带U束的表
   Drop table 表名 cascade constraints;
  8Q烦引管?br />   <1>.creating function-based indexes
  sql> create index summit.item_quantity on summit.item(quantity-quantity_shipped);
  <2>.create a B-tree index
  sql> create [unique] index index_name on table_name(column,.. asc/desc) tablespace
  sql> tablespace_name [pctfree integer] [initrans integer] [maxtrans integer]
  sql> [logging | nologging] [nosort] storage(initial 200k next 200k pctincrease 0
  sql> maxextents 50);
  <3>.pctfree(index)=(maximum number of rows-initial number of rows)*100/maximum number of rows
  <4>.creating reverse key indexes
  sql> create unique index xay_id on xay(a) reverse pctfree 30 storage(initial 200k
  sql> next 200k pctincrease 0 maxextents 50) tablespace indx;
  <5>.create bitmap index
  sql> create bitmap index xay_id on xay(a) pctfree 30 storage( initial 200k next 200k
  sql> pctincrease 0 maxextents 50) tablespace indx;
  <6>.change storage parameter of index
  sql> alter index xay_id storage (next 400k maxextents 100);
  7.allocating index space
  sql> alter index xay_id allocate extent(size 200k datafile 'c:/oracle/index.dbf');
  <8>.alter index xay_id deallocate unused;
  <9>、查看烦?br />    SQL>select index_name,index_type,table_name from user_indexes order by table_name;
  <10>、查看烦引被索引的字D?br />    SQL>select * from user_ind_columns where index_name=upper('&index_name');
  11、创建序?br />    select * from user_sequences;
   create sequence SEQ_NAME start with 1000
   maxvalue 1000 increment by 1;
   alter sequence SEQ_NAME minvalue 50 maxvalue 100;
  12、删除重复行
   update a set aa=null where aa is not null;
  
   delete from a where rowid!=
   (select max(rowid) from a b where a.aa=b.aa);
  13、删除同其他表相同的?br />    delete from a where exits
   (select 'X' from b where b.no=a.no);
   ?br />    delete from a where no in (select no from b);
  14、查询从多少行到多少行的记录(可以用在web开发中的分|C?
   select * from ( select rownum row_id,b.* from (select a.* from sys_oper a) b )
   where row_id between 15 and 20
  15、对公共授予讉K?br />    grant select on 表名 to public;
   create public synonym 同义词名 for 表名;
  16、填加注?br />    comment on table 表名 is '注释';
   comment on column 表名.列名 is '注释';
  17、分布式数据?创徏数据库链?br />    create [public] database link LINKNAME
   [connect to USERNAME identified by PASSWORD]
   [using 'CONNECT_STRING']
   可以在服务器端,也可以在客户端徏立,但必L意,两台服务器之?br />    数据库必d以互访,必须各有各自的别名数据库
  18、查看数据库链\
   select * from all_db_links;
   select * from user_db_links;
   查询 select * from TABLENAME@DBLNKNAME;
   创徏q程数据库同义词
   create synonym for TABLENAME@DBLNKNAME;
   操纵q程数据库记?br />    insert into TABLENAME@DBLNKNAME (a,b) values (va,vb);
   update TABLENAME@DBLNKNAME set a='this';
   delete from TABLENAME@DBLNKNAME;
   怎样执行q程的内嵌过E?br />    begin
   otherdbpro@to_html(参数);
   end;
  19、数据库链\用户密码有特D字W的时候,可以用双引号把密码引h
  create public database link dblink1 connect to db1 identified by "123*456" using 'db11'
  20.oracle8中扩充了group by rollup和cube的操作。有时候省了你好多功夫的?br />    <1>下面的语句可以进行总计
   select region_code,count(*) from aicbs.acc_woff_notify
   group by rollup(region_code);
   <2> 对第1个字D小计,最后合?br />    select region_code,write_status,count(*) from aicbs.acc_woff_notify
   group by rollup(region_code,write_status);
   ----------------------
   570 0 3
   570 1 2
   570 5 --此处计?70的记?br />    571 0 10
   571 1 2
   571 12 --此处计?71的记?br />    .....
   100 --此处有总计
   <3> 复合rollup表达?只做总计
   select region_code,write_status,count(*) from aicbs.acc_woff_notify
   group by rollup(region_code,write_status);
  
   <4> 对第1个字D小计,再对W?个字D小计,最后合?br />    select region_code,write_status,count(*) from aicbs.acc_woff_notify
   group by cube(region_code,write_status);
   ----------------------
   100 --此处有总计
   0 60 --对write_statusQ?的小?br />    1 39 --对write_statusQ?的小?br />    3 1 --对write_statusQ?的小?br />    570 5 --此处计?70的记?br />    570 0 3
   570 1 2
   571 12 --此处计?71的记?br />    571 0 10
   571 1 2
   ....
   <3> 复合cube表达?只做总计
   select region_code,write_status,count(*) from aicbs.acc_woff_notify
   group by cube(region_code,write_status);
  
  
   <4>下面的语句可以按照rollup不同的字D进行小?br />    select region_code,write_status,count(*) from aicbs.acc_woff_notify
   group by region_code,rollup(write_status);
  21.查询view的创?br />    sql>set long 1000
   sql>select * from user_views where view_name='MY_VIEW_NAME';
   or
   sql>select * from all_views where view_name='MY_VIEW_NAME';
  22、去除数据库中特D字W?br />    <1>.字符串字D中含有"'",如果用来l合sql语句Q会造成语句不准?br />    比如Qreplace(f1,'''','')
   <2>.字符串字D中含有"\t \n",如果用来在c或者cQ+E序中输出到文gQ格式无法保证?br />    比如Qreplace(f2,'\t','')
   <3>.清除换行和回?br />    比如: replace(f2,chr(13)||chr(10),'')
  23、如何在字符串里加回车或者tab?
   在sqlplus中执?br />    sql>select 'UserId=1233111'||chr(10)||'AccId=13431'||chr(9)||'AccId2=11111' from dual;
  24、树形查?br />   create table zj(
  bm number(8),
  bmmc varchar2(20),
  sjbm number(8)
  )
  insert into zj values(1,'aaa',0)
  insert into zj values(11,'aaa1',1)
  insert into zj values(12,'aaa2',1)
  insert into zj values(111,'aaa11',11)
  insert into zj values(112,'aaa12',11)
  insert into zj values(113,'aaa13',11)
  insert into zj values(121,'aaa21',12)
  insert into zj values(122,'aaa22',12)
  insert into zj values(123,'aaa23',12)
  --
  select bm,bmmc,sjbm,level
  from zj
  start with sjbm=0
  connect by prior bm = sjbm
  或?br />   select bm,bmmc,sjbm,level
  from zj
  start with sjbm=0
  connect by sjbm = prior bm
  25、快?br />    create snapshot SNAPSHOT_NAME
   [storage (storage parameter)]
      [refresh [fast\complete\force]
   [start with START_DATE next NEXT_DATE]
   as QUERY;
  
   create snapshot snapshot_to_study as select * from TABLE_NAME@to_study;
   创徏角色
   create role aa identified by aaa;
   授权 grant create snapshot,alter snapshot to aaa;
   grant aaa to emp;
   create snapshot SNAPSHOT_TO_HTML refresh complete start with sysdate next
   sysdate+5/(24*60*60) as select * from a@to_html;
   删除 drop snapshot snap_to_html
   手工h快照,(调用DBMS_SNAPSHOT包中的refreshq程)DBMS_SNAPSHOT.refresh(snapshot_name,refresh_type);
   begin
   DBMS_SNAPSHOT.REFRESH('snap_to_html','c');
   end;
   Ҏ有快照进行刷?br />    begin
   DBMS_SNAPSHOT.REFRESH_ALL;
   end;
   怎样执行q程的内嵌过E?br />    begin
   otherdbpro@to_html(参数);
   end;
  26、用L?br />    create a user: database authentication
   sql> create user juncky identified by oracle default tablespace users
   sql> temporary tablespace temp quota 10m on data password expire
   sql> [account lock|unlock] [profile profilename|default];
   <1>.查看当前用户的缺省表I间
   SQL>select username,default_tablespace from user_users;
   <2>生成用户时指定缺省表I间
   create user 用户?identified by 口o default tablespace 表空间名;
  
   <3>重新指定用户的缺省表I间
   alter user 用户?default tablespace 表空间名
   <4>查看当前用户的角?br />    SQL>select * from user_role_privs;
   <5>查看当前用户的系l权限和表权限
   SQL>select * from user_sys_privs;
   SQL>select * from user_tab_privs;
   <6>查看用户下所有的?br />    SQL>select * from user_tables;
   <7> alter user语句的quota子句限制用户的磁盘空?br />    ?alter user jf quota 10M on system;
  27、查看放在ORACLE的内存区里的?
   SQL>select table_name,cache from user_tables where instr(cache,'Y')>0;
  28、约束条?br />    create table employee
   (empno number(10) primary key,
   name varchar2(40) not null,
   deptno number(2) default 10,
   salary number(7,2) check salary<10000,
   birth_date date,
   soc_see_num char(9) unique,
   foreign key(deptno) references dept.deptno)
   tablespace users;
  
   关键?primary key)必须是非I?表中记录的唯一?br />    not null 非空U束
   default ~省值约?br />    check 查约?使列的值符合一定的标准范围
   unqiue 唯一性约?br />    foreign key 外部键约?br />   29、查看创囄select语句
   SQL>set view_name,text_length from user_views;
   SQL>set long 2000; 说明Q可以根据视囄text_lengthD定set long 的大?br />    SQL>select text from user_views where view_name=upper('&view_name');
  30、查看同义词的名U?br />    SQL>select * from user_synonyms;
  31、用Sql语句实现查找一列中WN大?
  select * from
  (select t.*,dense_rank() over (order by sal) rank from employee)
  where rank = N;
  32 虚拟自段
   <1>. CURRVAL ?nextval
   创徏序列
   CREATE SEQUENCE EMPSEQ ... ;
   SELECT empseq.currval FROM DUAL ;
   自动插入序列的数?br />    INSERT INTO emp
   VALUES (empseq.nextval, 'LEWIS', 'CLERK',
   7902, SYSDATE, 1200, NULL, 20) ;
   <2>. ROWNUM
   按设定排序的行的序号
   SELECT * FROM emp WHERE ROWNUM < 10 ;
   <3>. ROWID
   q回行的物理地址
   SELECT ROWID, ename FROM emp WHERE deptno = 20 ;
  33、对CLOB字段q行全文?br />   SELECT * FROM A WHERE dbms_lob.instr(a.a,'K',1,1)>0;
  34. Ҏ字符的插入,比如"&"
  insert into a values (translate ('at{&}t','at{}','at'));
  35.表管?br />    <1>.create a table
   sql> create table table_name (column datatype,column datatype]....)
   sql> tablespace tablespace_name [pctfree integer] [pctused integer]
   sql> [initrans integer] [maxtrans integer]
   sql> storage(initial 200k next 200k pctincrease 0 maxextents 50)
   sql> [logging|nologging] [cache|nocache]
   <2>.copy an existing table
   sql> create table table_name [logging|nologging] as subquery
  
   <3> create table ... as 方式的时候,指定表参?br />    create table a
   storage(
   initial 1M /*W一ơ创建时分配I间*/
   next 1M /*W一ơ分配的存储I间用完时在分配*/
   )
   as select * from b;
   <4>.创徏临时?br />    sql> create global temporary table xay_temp as select * from xay;
   on commit preserve rows/on commit delete rows
   在Oracle中,可以创徏以下两种临时?
   a 会话Ҏ的时表:
   create global temporary table () on commit preserve rows;
   会话指定Q当中断会话时ORACLE截断表
   b 事务Ҏ的时表:
   create global temporary table () on commit delete rows;
   事务指定,每次提交后ORACLE截断表Q删除全部行Q?
   c 说明
   临时表只在当前连接内有效
  临时表不建立索引,所以如果数据量比较大或q行多次查询?不推荐?
  数据处理比较复杂的时候时表快,反之视图快点
  在仅仅查询数据的时候徏议用游标: open cursor for 'sql clause';
   <5>
   pctfree = (average row size - initial row size) *100 /average row size
   pctused = 100-pctfree- (average row size*100/available data space)
   <6>.change storage and block utilization parameter
   sql> alter table table_name pctfree=30 pctused=50 storage(next 500k
   sql> minextents 2 maxextents 100);
   <7>.manually allocating extents
   sql> alter table table_name allocate extent(size 500k datafile 'c:/oracle/data.dbf');
   <8>.move tablespace
   sql> alter table employee move tablespace users;
   <9>.deallocate of unused space
   sql> alter table table_name deallocate unused [keep integer]
   <10>.drop a column
   sql> alter table table_name drop column comments cascade constraints checkpoint 1000;
   alter table table_name drop columns continue;
   <11>.mark a column as unused
   sql> alter table table_name set unused column comments cascade constraints;
   alter table table_name drop unused columns checkpoint 1000;
   alter table orders drop columns continue checkpoint 1000
   data_dictionary : dba_unused_col_tabs
  37. 中文是如何排序的Q?
  Oracle9i之前Q中文是按照二进制编码进行排序的?
  在oracle9i中新增了按照拼音、部首、笔L序功能。设|NLS_SORT?
  SCHINESE_RADICAL_M 按照部首Q第一序Q、笔划(W二序Q排?
  SCHINESE_STROKE_M 按照W划Q第一序Q、部首(W二序Q排?
  SCHINESE_PINYIN_M 按照拼音排序
  38. 数据表中的字D|大数:
  表或视图中的最大列Cؓ 1000
  39. oracle中的裸设?
   裸设备就是绕q文件系l直接访问的储存I间
  40. 在Oracle服务器上通过SQLPLUS查看本机IP地址 ?
  select sys_context('userenv','ip_address') from dual;
  如果是登陆本机数据库Q只能返?27.0.0.1
  41. 在ORACLE中取毫秒?
   9i之前不支?9i开始有timestamp.
   9i可以用select systimestamp from dual;
  42. NU{换ؓ时分U格式?
   set serverout on
   declare
   N number := 1000000;
   ret varchar2(100);
   begin
   ret := trunc(n/3600) || '时' || to_char(to_date(mod(n,3600),'sssss'),'fmmi"?"ss"U?') ;
   dbms_output.put_line(ret);
   end;
  43、在某个用户下找所有的索引
   select user_indexes.table_name, user_indexes.index_name,uniqueness, column_name
   from user_ind_columns, user_indexes
   where user_ind_columns.index_name = user_indexes.index_name
   and user_ind_columns.table_name = user_indexes.table_name
   order by user_indexes.table_type, user_indexes.table_name,
   user_indexes.index_name, column_position;
  44. not in的替代?br />    一般not in的效率比较低。特别是数据量大的时候,几乎不能执行?br />    用下面几U方式可以替换写?br />    比如要查询在fee_rev_info表中已经销L用户Q不在cm_user中的Q?不过下面的例子不是很好,因ؓbill_id是cm_user的唯一索引Q?br />    select * from fee_rev_info where bill_id not in (select bill_id from cm_user)
   <1> 用not exists
   select * from fee_rev_info a where not exists (select 'p' from cm_user b where b.bill_id = a.bill_id)
   <2> 用外q接(+)
   select a.* from fee_rev_info a,cm_user b
   where a.bill_id = b.bill_id (+)
   and b.bill_id is null
   <3> 用hash_aj
   select /*+HASH_AJ*/* from fee_rev_info where bill_id not in (select bill_id from cm_user)
  45.怎么h询特D字W,如通配W?与_
  假如数据库中有表 STATIONTYPE,STATION_571 STATION_572 ...
  select * from tab where tname like 'STATION_%'
  会显C?STATIONTYPE,STATION_571 ... 可以用下面的语句
  select * from tab where tname like 'STATION\_%' escape'\'
  46.如果存在更斎ͼ不存在就插入可以用一个语句实现吗
  9i已经支持了,是MergeQ但是只支持select子查询,
  如果是单条数据记录,可以写作select .... from dual的子查询?br />   语法为:
  MERGE INTO table
  USING data_source
  ON (condition)
  WHEN MATCHED THEN update_clause
  WHEN NOT MATCHED THEN insert_clause;
  ?br />   MERGE INTO cm_user_credit
  USING (select * from dual) ON (user_id =1302514690 )
  when MATCHED then update set credit_value = 1000
when NOT MATCHED then insert (user_id,acc_id,bill_id,plan_id,region_code,credit_value) values(1302514690,1305032158,'13857141218',10070247,'571',1000);
  47.怎么实现一条记录根据条件多表插?br />   9i以上可以通过Insert all语句完成Q仅仅是一个语句,如:
  INSERT ALL
  WHEN (id=1) THEN
  INTO table_1 (id, name)
  values(id,name)
  WHEN (id=2) THEN
  INTO table_2 (id, name)
  values(id,name)
  ELSE
  INTO table_other (id, name)
  values(id, name)
  SELECT id,name
  FROM a;
  如果没有条g的话Q则完成每个表的插入Q如
  INSERT ALL
  INTO table_1 (id, name)
  values(id,name)
  INTO table_2 (id, name)
  values(id,name)
  INTO table_other (id, name)
  values(id, name)
  SELECT id,name
  FROM a;
  48.如何实现行列转换
  <1>、固定列数的行列转换
  ?br />   student subject grade
  ---------------------------
  student1 语文 80
  student1 数学 70
  student1 p 60
  student2 语文 90
  student2 数学 80
  student2 p 100
  ...
  转换?
  语文 数学 p
  student1 80 70 60
  student2 90 80 100
  ...
  语句如下Q?br />   select student,sum(decode(subject,'语文', grade,null)) "语文",
  sum(decode(subject,'数学', grade,null)) "数学",
  sum(decode(subject,'p', grade,null)) "p"
  from table
  group by student
  <2>、不定列行列转换
  ?br />   c1 c2
  --------------
  1 ?br />   1 ?br />   1 ?br />   2 ?br />   2 ?br />   3 ?br />   ...
  转换?br />   1 我是?br />   2 知道
  3 ?br />   q一cd的{换必d助于PL/SQL来完成,q里l一个例?br />   CREATE OR REPLACE FUNCTION get_c2(tmp_c1 NUMBER)
  RETURN VARCHAR2
  IS
  Col_c2 VARCHAR2(4000);
  BEGIN
  FOR cur IN (SELECT c2 FROM t WHERE c1=tmp_c1) LOOP
  Col_c2 := Col_c2||cur.c2;
  END LOOP;
  Col_c2 := rtrim(Col_c2,1);
  RETURN Col_c2;
  END;
  /
  SQL> select distinct c1 ,get_c2(c1) cc2 from table;卛_
  --例子Q?br />   create table okcai_1
  (
  user_id varchar2(10),
  user_number varchar2(10),
  user_num number(8)
  )
  user_id user_number user_num
  ---------------------
  1 123 2
  1 456 5
  1 789 6
  2 11 2
  2 22 3
  2 33 4
  2 44 5
  2 55 6
  2 66 7
  2 77 8
  3 1234 1
  3 5678 2
  方式一Q?br />   create or replace function get_col(
   p_userId number,
   p_col number
  ) return varchar
  as
  v_tmp varchar2(255);
  begin
   select user_number||chr(9)||user_num into v_tmp
   from
   (select user_number,user_num,rownum row_id
   from okcai_1
   where user_id = p_userId) a
   where row_id = p_col;
   return ltrim(v_tmp);
   --return v_tmp;
  end;
  然后
  select distinct user_id,get_col(user_id,1),get_col(user_id,2),get_col(user_id,3) .... from okcai_1
  方式二:
  create or replace function get_col(
   p_userId number,
   p_col number
  ) return varchar
  as
  v_tmp varchar2(255);
  begin
   select user_number||chr(9)||user_num into v_tmp
   from
   (select user_number,user_num,rownum row_id
   from okcai_1
   where user_id = p_userId) a
   where row_id = p_col;
   return ltrim(v_tmp);
   --return v_tmp;
  end;
  select distinct user_id,get_col_new(user_id) from okcai_1;
  49.怎么讄存储q程的调用者权?br />   普通存储过E都是所有者权限,如果惌|调用者权限,请参考如下语?br />   create or replace
  procedure ...()
  AUTHID CURRENT_USER
  As
  begin
  ...
  end;
  50.Oracle有哪些常见关键字
  详细信息可以查看v$reserved_words视图
  51.怎么查看数据库参?br />   <1> show parameter 参数?br />   如通过show parameter spfile可以查看9i是否使用spfile文g
  其中参数名是可以匚w的?br />   比如show parameter cursor ,则会昄跟cursor相关的参?br />   <2>
  select * from v$parameter
  <3>
  除了q部分参敎ͼOracleq有大量隐含参数Q可以通过如下语句查看:
  SELECT NAME
  ,VALUE
  ,decode(isdefault, 'TRUE','Y','N') as "Default"
  ,decode(ISEM,'TRUE','Y','N') as SesMod
  ,decode(ISYM,'IMMEDIATE', 'I',
  'DEFERRED', 'D',
  'FALSE', 'N') as SysMod
  ,decode(IMOD,'MODIFIED','U',
  'SYS_MODIFIED','S','N') as Modified
  ,decode(IADJ,'TRUE','Y','N') as Adjusted
  ,description
  FROM ( --GV$SYSTEM_PARAMETER
  SELECT x.inst_id as instance
  ,x.indx+1
  ,ksppinm as NAME
  ,ksppity
  ,ksppstvl as VALUE
  ,ksppstdf as isdefault
  ,decode(bitand(ksppiflg/256,1),1,'TRUE','FALSE') as ISEM
  ,decode(bitand(ksppiflg/65536,3),
  1,'IMMEDIATE',2,'DEFERRED','FALSE') as ISYM
  ,decode(bitand(ksppstvf,7),1,'MODIFIED','FALSE') as IMOD
  ,decode(bitand(ksppstvf,2),2,'TRUE','FALSE') as IADJ
  ,ksppdesc as DESCRIPTION
  FROM x$ksppi x
  ,x$ksppsv y
  WHERE x.indx = y.indx
  AND substr(ksppinm,1,1) = '_'
  AND x.inst_id = USERENV('Instance')
  )
  ORDER BY NAME
  52.怎样建立Z函数索引
  8i以上版本Q确?br />   Query_rewrite_enabled=true
  Query_rewrite_integrity=trusted
  Compatible=8.1.0以上
  Create index indexname on table (function(field));
  53.怎么L动表或表分区
  [A]Ud表的语法
  Alter table tablename move
  [Tablespace new_name
  Storage(initial 50M next 50M
  pctincrease 0 pctfree 10 pctused 50 initrans 2) nologging]
  Ud分区的语?br />   alter table tablename move (partition partname)
  [update global indexes]
  之后之后必须重徏索引
  Alter index indexname rebuild
  如果表有LobD,那么正常的Alter不能UdLobD到别的表空_而仅仅是Ud了表D,可以采用如下的方法移动LobD?br />   alter table tablename move
  lob(lobsegname) store as (tablespace newts);
  54.怎么样修改表的列?br />   [A]9i以上版本可以采用rname命o
  ALTER TABLE UserName.TabName
  RENAME COLUMN SourceColumn TO DestColumn
  9i以下版本可以采用create table …… as select * from SourceTable的方式?br />   另外Q?i以上可以支持删除列了
  ALTER TABLE UserName.TabName
  SET UNUSED (ColumnName) CASCADE CONSTRAINTS
  ALTER TABLE UserName.TabName
  DROP (ColumnName) CASCADE CONSTRAINTS
  55.case的用?br />   在sql语句?br />   CASE test_value
  WHEN expression1 THEN value1
  [[WHEN expression2 THEN value2] [...]]
  [ELSE default_value]
  END
  比如1
  SELECT last_name, job_id, salary
   CASE job_id
   WHEN 'IT_PROG' THEN 1.10*salary
   WHEN 'ST_CLERK' THEN 1.15*salary
   WHEN 'SA_REP' THEN 1.20*salary
   ELSE salary END "REVISED_SALARY"
  FROM employees
  比如2
  select
   case
   when real_charge>=20000 and real_charge<30000 then 5000
   when real_charge>=30000 and real_charge<40000 then 9000
   when real_charge>=40000 and real_charge<50000 then 10000
   when real_charge>=50000 and real_charge<60000 then 14000
   when real_charge>=60000 and real_charge<70000 then 18000
   when real_charge>=70000 and real_charge<80000 then 19000
   when real_charge>=80000 and real_charge<90000 then 24000
   when real_charge>=90000 and real_charge<100000 then 27000
   when real_charge>=100000 and real_charge<110000 then 27000
   when real_charge>=110000 and real_charge<120000 then 29000
   when real_charge>=120000 then 36000
   else
   0
   end ,acc_id,user_id,real_charge from okcai_jh_charge_200505
  在存储过E中
   case v_strGroupClassCode
   when '1' then
   v_nAttrNum := v_nAttrNum + 300;
   v_strAttrFlag := '1'||substr(v_strAttrFlag,2,7);
   when '2' then
   v_nAttrNum := v_nAttrNum + 200;
   v_strAttrFlag := '2'||substr(v_strAttrFlag,2,7);
   else
   NULL;
   end case;
  注意的是存储q程和sql语句有的l微差别是用end caseQ而不是end。语句后面跟";"

semovy 2007-10-15 21:26 发表评论
]]>
ORACLE的基本语法集?/title><link>http://m.tkk7.com/WshmAndLily/articles/144115.html</link><dc:creator>semovy</dc:creator><author>semovy</author><pubDate>Mon, 10 Sep 2007 15:16:00 GMT</pubDate><guid>http://m.tkk7.com/WshmAndLily/articles/144115.html</guid><wfw:comment>http://m.tkk7.com/WshmAndLily/comments/144115.html</wfw:comment><comments>http://m.tkk7.com/WshmAndLily/articles/144115.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://m.tkk7.com/WshmAndLily/comments/commentRss/144115.html</wfw:commentRss><trackback:ping>http://m.tkk7.com/WshmAndLily/services/trackbacks/144115.html</trackback:ping><description><![CDATA[-- ?br /> create table test (names varchar2(12),<br />                    dates date,<br />                    num   int,<br />                    dou   double);<br /> -- 视图<br /> create or replace view vi_test as<br /> select * from test;<br /> <br /> -- 同义?br /> create or replace synonym aa<br /> for dbusrcard001.aa;<br /> <br /> -- 存储q程<br /> create or replace produce dd(v_id in employee.empoy_id%type)<br /> as<br /> begin<br />    <br /> end<br /> dd;<br /> <br /> -- 函数<br /> create or replace function ee(v_id in employee%rowtype) return varchar(15)<br /> is<br /> var_test varchar2(15);<br /> begin<br />   return var_test;<br /> exception when others then<br />    <br /> end<br /> <br /> -- 三种触发器的定义<br /> create or replace trigger ff<br /> alter delete<br /> on test<br /> for each row<br /> declare<br /> begin<br />    delete from test;<br />    if sql%rowcount < 0 or sql%rowcount is null then<br />       rais_replaction_err(-20004,"错误")<br />    end if<br /> end<br /> <br /> <br /> create or replace trigger gg<br /> alter insert<br /> on test<br /> for each row<br /> declare<br /> begin<br />    if :old.names = :new.names then<br />       raise_replaction_err(-2003,"~码重复");<br />    end if<br /> end<br /> <br /> <br /> create or replace trigger hh<br /> for update<br /> on test<br /> for each row<br /> declare<br /> begin<br />   if updating then<br />      if :old.names <> :new.names then<br />  reaise_replaction_err(-2002,"关键字不能修?)<br />      end if<br />   end if<br /> end <br /> <br /> -- 定义游标<br /> declare<br />    cursor aa is<br />       select names,num from test;<br /> begin<br />    for bb in aa<br />    loop<br />         if bb.names = "ORACLE" then<br />         <br />         end if<br />    end loop;<br />    <br /> end<br /> <br /> -- 速度优化Q前一语句不后一语句的速度快几十?br /> select names,dates <br /> from test,b<br /> where test.names = b.names(+) and<br />       b.names is null and<br />       b.dates > date('2003-01-01','yyyy-mm-dd')<br /> <br />  <br /> select names,dates<br /> from test <br /> where names not in ( select names <br />                        from b<br />                       where dates > to_date('2003-01-01','yyyy-mm-dd'))<br />                        <br /> <br /> -- 查找重复记录<br /> select names,num <br /> from test <br /> where rowid != (select max(rowid) <br />                  from test b <br />                 where b.names = test.names and<br />                       b.num = test.num)<br /> <br /> <br /> -- 查找表TEST中时间最新的?0条记?br /> select * from (select * from test order by dates desc) where rownum < 11<br /> <br /> -- 序列L产生<br /> create sequence row_id<br /> minvalue 1<br /> maxvalue 9999999999999999999999<br /> start with 1<br /> increment by 1<br /> <br /> insert into test values(row_id.nextval,....) <br /> <img src ="http://m.tkk7.com/WshmAndLily/aggbug/144115.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://m.tkk7.com/WshmAndLily/" target="_blank">semovy</a> 2007-09-10 23:16 <a href="http://m.tkk7.com/WshmAndLily/articles/144115.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>用java调用oracle存储q程ȝhttp://m.tkk7.com/WshmAndLily/articles/143440.htmlsemovysemovyFri, 07 Sep 2007 07:48:00 GMThttp://m.tkk7.com/WshmAndLily/articles/143440.htmlhttp://m.tkk7.com/WshmAndLily/comments/143440.htmlhttp://m.tkk7.com/WshmAndLily/articles/143440.html#Feedback0http://m.tkk7.com/WshmAndLily/comments/commentRss/143440.htmlhttp://m.tkk7.com/WshmAndLily/services/trackbacks/143440.html一Q无q回值的存储q程

存储q程为:

CREATE OR REPLACE PROCEDURE TESTA(PARA1 IN VARCHAR2,PARA2 IN VARCHAR2)  AS

BEGIN

   INSERT INTO HYQ.B_ID (I_ID,I_NAME) VALUES (PARA1, PARA2);

END TESTA;

然后呢,?/span>java里调用时q下面的代码:

package com.hyq.src;

import java.sql.*;

import java.sql.ResultSet;

public class TestProcedureOne {

  public TestProcedureOne() {

  }

  public static void main(String[] args ){

    String driver = "oracle.jdbc.driver.OracleDriver";

    String strUrl = "jdbc:oracle:thin:@127.0.0.1:1521: hyq ";

    Statement stmt = null;

    ResultSet rs = null;

    Connection conn = null;

    CallableStatement cstmt = null;

    try {

      Class.forName(driver);

      conn =  DriverManager.getConnection(strUrl, " hyq ", " hyq ");

      CallableStatement proc = null;

      proc = conn.prepareCall("{ call HYQ.TESTA(?,?) }");

      proc.setString(1, "100");

      proc.setString(2, "TestOne");

      proc.execute();

    }

    catch (SQLException ex2) {

      ex2.printStackTrace();

    }

    catch (Exception ex2) {

      ex2.printStackTrace();

    }

    finally{

      try {

        if(rs != null){

          rs.close();

          if(stmt!=null){

            stmt.close();

          }

          if(conn!=null){

            conn.close();

          }

        }

      }

      catch (SQLException ex1) {

      }

    }

  }

}

当然了,q就先要求要建张?/span>TESTTB,里面两个字段Q?/span>I_IDQ?/span>I_NAMEQ?/span>

二:有返回值的存储q程Q非列表Q?/span>

存储q程为:

CREATE OR REPLACE PROCEDURE TESTB(PARA1 IN VARCHAR2,PARA2 OUT VARCHAR2)  AS

BEGIN

   SELECT INTO PARA2 FROM TESTTB WHERE I_ID= PARA1;

END TESTB;

?/span>java里调用时q下面的代码:

package com.hyq.src;

public class TestProcedureTWO {

  public TestProcedureTWO() {

  }

  public static void main(String[] args ){

    String driver = "oracle.jdbc.driver.OracleDriver";

    String strUrl = "jdbc:oracle:thin:@127.0.0.1:1521:hyq";

    Statement stmt = null;

    ResultSet rs = null;

    Connection conn = null;

    try {

      Class.forName(driver);

      conn =  DriverManager.getConnection(strUrl, " hyq ", " hyq ");

      CallableStatement proc = null;

      proc = conn.prepareCall("{ call HYQ.TESTB(?,?) }");

      proc.setString(1, "100");

      proc.registerOutParameter(2, Types.VARCHAR);

      proc.execute();

      String testPrint = proc.getString(2);

      System.out.println("=testPrint=is="+testPrint);

    }

    catch (SQLException ex2) {

      ex2.printStackTrace();

    }

    catch (Exception ex2) {

      ex2.printStackTrace();

    }

    finally{

      try {

        if(rs != null){

          rs.close();

          if(stmt!=null){

            stmt.close();

          }

          if(conn!=null){

            conn.close();

          }

        }

      }

      catch (SQLException ex1) {

      }

    }

  }

}

}

注意Q这里的proc.getString(2)中的数?/span>2qL的,而是和存储过E中?/span>out列对应的Q如?/span>out是在W一个位|,那就?/span>proc.getString(1)Q如果是W三个位|,是proc.getString(3)Q当然也可以同时有多个返回|那就是再多加几个out参数了?/span>

三:q回列表

׃oracle存储q程没有q回|它的所有返回值都是通过out参数来替代的Q列表同样也不例外,但由于是集合Q所以不能用一般的参数Q必要?/span>pagkage?/span>.所以要分两部分Q?/span>

1Q?span>  Z个程序包。如下:

CREATE OR REPLACE PACKAGE TESTPACKAGE AS

TYPE Test_CURSOR IS REF CURSOR;

end TESTPACKAGE;

2Q徏?/span>存储q程Q存储过EؓQ?/span>

CREATE OR REPLACE PROCEDURE TESTC(p_CURSOR out TESTPACKAGE.Test_CURSOR) IS

BEGIN

    OPEN p_CURSOR FOR SELECT * FROM HYQ.TESTTB;

END TESTC;

可以看到Q它是把游标Q可以理解ؓ一个指针)Q作Z?/span>out 参数来返回值的?/span>

?/span>java里调用时q下面的代码:

package com.hyq.src;

import java.sql.*;

import java.io.OutputStream;

import java.io.Writer;

import java.sql.PreparedStatement;

import java.sql.ResultSet;

import oracle.jdbc.driver.*;

public class TestProcedureTHREE {

  public TestProcedureTHREE() {

  }

  public static void main(String[] args ){

    String driver = "oracle.jdbc.driver.OracleDriver";

    String strUrl = "jdbc:oracle:thin:@127.0.0.1:1521:hyq";

    Statement stmt = null;

    ResultSet rs = null;

    Connection conn = null;

    try {

      Class.forName(driver);

      conn =  DriverManager.getConnection(strUrl, "hyq", "hyq");

      CallableStatement proc = null;

      proc = conn.prepareCall("{ call hyq.testc(?) }");

      proc.registerOutParameter(1,oracle.jdbc.OracleTypes.CURSOR);

      proc.execute();

      rs = (ResultSet)proc.getObject(1);

      while(rs.next())

      {

          System.out.println("<tr><td>" + rs.getString(1) + "</td><td>"+rs.getString(2)+"</td></tr>");

      }

    }

    catch (SQLException ex2) {

      ex2.printStackTrace();

    }

    catch (Exception ex2) {

      ex2.printStackTrace();

    }

    finally{

      try {

        if(rs != null){

          rs.close();

          if(stmt!=null){

            stmt.close();

          }

          if(conn!=null){

            conn.close();

          }

        }

      }

      catch (SQLException ex1) {

      }

    }

  }

}

在这里要注意Q在执行前一定要先把oracle的驱动包攑ֈclass路径里,否则会报错的?/span>



semovy 2007-09-07 15:48 发表评论
]]>
Oracle9i的简化SQL语法http://m.tkk7.com/WshmAndLily/articles/143429.htmlsemovysemovyFri, 07 Sep 2007 07:31:00 GMThttp://m.tkk7.com/WshmAndLily/articles/143429.htmlhttp://m.tkk7.com/WshmAndLily/comments/143429.htmlhttp://m.tkk7.com/WshmAndLily/articles/143429.html#Feedback0http://m.tkk7.com/WshmAndLily/comments/commentRss/143429.htmlhttp://m.tkk7.com/WshmAndLily/services/trackbacks/143429.htmlOracle9i的简化SQL语法

Oracle对Oracle9i SQL 做了一些很重要的改q,包括一些o人兴奋的新特点,支持1Q?的数量和ISO99中的SQL标准。作为Oracle的补充,它包括以下新的TABLE JOIN的句法结构:

CROSS IN——它在两个表g创徏了一个卡q尔列,p是在Oracle8i中没写WHERE旉栗?/p>

NATURAL JOIN——这是一个很有用的Oracle9i的句法,它通过从WHERE子句中移动连接标准来改善SQL的稳定?

USING子句——它可以通过名字来具体指定连?

ON子句——这个句法允许在两个表格中ؓq接具体指定栏目的名?
LEFT OUTER JOIN——它q回表格中左边的行和双的数|如果没有搭配的行的话Q则q回?

RIGHT OUTER JOIN——它q回表格中右边的行和左边的数|如果没有搭配的行的话Q则q回?

FULL OUTER JOIN——它q回的是两个表格中所有的行,用零填满每一个空根{这在Oracle8i中则没有相应的此U句?

大多数改q都是ؓ了让那些非Oracle的请求以快速的q入Oracle数据库而引q的Qƈ且必记住这些只是句法上的不同,ISO99标准q没有给Oracle9i SQL带来M新的功能?br />
The CROSS JOIN
在Oracle中,CROSS JOIN产生了一?#8220;卡_的产物QCartesian productQ?#8221;Q就象是在连接两个表格时忘记加入一个WHERE子句一?
select last_name,dept_id
from emp,depts;

在Oracle9i中,我们使用CROSS JOIN 来达到相同的l果
select last_name.dept_id
from emp
CROSS JOIN dept;

NATURAL JOIN


我喜ƢNATURAL JOIN的原因在于它能够通过在两个表g配对的栏目的名头来自动的查join。它同时q简化了Oracle9i SQL,׃where子句仅仅只能qo谓语Q当ӞNATURAL JOIN要求在每一个表g的栏目的名字相同。很有意思的是,q种Ҏ甚臛_没有主要的或是外来的关键词作为参考是也能起作?

 

Oracle8i,
Select book_title, sum(quantity)
From book, sales
Where book.book_id = sales.book_id
group by book_title;

Oracle9i
Select book_title, sum(quantity)
from book
natural join sales
group by book_title;

USING子句
假如几个栏目有同L名字Q而你又不想用所有的q些栏目来连接的时候,你就可以用USING子句。在USING子句中所列的栏目的句子中不会有Q何的修饰词,包括where子句也不会有
Oracle8i
select dept_id, city
from departments, locations
where departments.location_id = location.location_id;

Oracle9i
select department_name, city
from departments
JOIN locations
USING (location_id);

ON子句
ON子句被用于当在两个表g的栏目名字不搭配时来q接表格。而连接条件就是where子句中的qo条g
Oracle8i
select department_name, city
from department, location
where department.location_id = location.loc_id;

Oracle9i
select department_name, city
from department d
JOIN location l
ON (d.location_id = l.id);

易变的连?
易变的连接就是两个以上的表格被连接所用的。ISO SQL 1999标准通常假设表格从左臛_q接Q连接的条g是能够ؓ现在的连接或以前的与左边的连接相兌的栏目提供参考?
Oracle8i
select emp_id, city_name, dept_name
from location l, department d, emp e
where d.location_id = l.location_id
and d.department_id = e.department_id;

Oracle9i
select emp_id, city_name, dept_name
from locations l
JOIN departments d ON (d.location_id = l.location_id)
JOIN employees e ON (d.department_id = e.department_id);


新的OUTER JOIN句法

 

ISO99标准把复杂的加号从Oracle outer join中拿出去Qƈ使得outer join SQL更容易理解?/p>

LEFT OUTER JOIN
在LEFT OUTER JOIN中,会返回所有左边表g的行Q甚臛_被连接的表格中没有可配对的栏目的情况下也如此。在下边的例子中Q返回了所有雇员的姓,甚至包括了那些没有分配到部门的雇员?
Oracle8i
select last_name, dept_id
from emp e, dept d
where e.department_id = d.department_id(+);

Oracle9i
select last_name, dept_id
from emp
LEFT OUTER JOIN Dept
ON e.dept_id = d.dept_id;

RIGHT OUTER JOIN
在RIGHT OUTER JOIN中返回的是表g所有右边的行,甚至在被q接的表g没有可配对的栏目的情况下也如此。在q个例子中,q回了所有部门的ID,包括那些没有一个雇员的的部门?
Oracle8i
select last_name, d.dept_id
from employees e, departments d
where e.department_id(+) = d.department_id;

Oracle9i
select last_name, d.dept_id
from employees e
RIGHT OUTER JOIN departments d
ON (e.department_id = d.department_id);


ȝ

ISO99标准是Oracle改进SQL工具的另一个例子。NATURAL JOIN LEFT OUTER JOIN ?RIGHT OUTER JOIN是这些改q中最受欢q的Q它们分别简化了SQL句法以及消除了对于复杂句法(比如+Q的需要?



semovy 2007-09-07 15:31 发表评论
]]>
oracle sql语句_讲http://m.tkk7.com/WshmAndLily/articles/138741.htmlsemovysemovyThu, 23 Aug 2007 01:29:00 GMThttp://m.tkk7.com/WshmAndLily/articles/138741.htmlhttp://m.tkk7.com/WshmAndLily/comments/138741.htmlhttp://m.tkk7.com/WshmAndLily/articles/138741.html#Feedback0http://m.tkk7.com/WshmAndLily/comments/commentRss/138741.htmlhttp://m.tkk7.com/WshmAndLily/services/trackbacks/138741.html     列定?br>     完整性约?br>     表所在表I间
     存储Ҏ?br>     可选择的聚?br>     从一查询获得数据
语法如下Q?br>CREATE TABLE tablename (column1 datatype [DEFAULT expression] [constraint], column1 datatype [DEFAULT expression] [constraint], ……)
     例如Q?br>     SQL> create table serv (serv_id number(10),serv_seq_nbr number(3))
2      tablespace data_bill;
视图
视图是一个逻辑表,它允许操作者从其它表或视图存取数据Q视图本w不包含数据。视图所Z的表UCؓ?br>引入视图有下列作用:
     提供附加的表安全U,限制存取的行?和列集合?br>     隐藏数据复杂性?br>     为数据提供另一U观炏V?br>     促ORACLE的某些操作在包含视图的数据库上执行,而不在另一个数据库上执行?br>2.1分组视图
[?]单的分组视图
SQL> create or replace view dept_tot as
2 select a.dname dept,sum(b.sal) total_sal from scott.dept a,scott.emp b
3 where a.deptno=b.deptno group by a.dname;

查看已徏立?br>SQL> select * from dept_tot;

DEPT                   TOTAL_SAL
--------------               ---------
ACCOUNTING       8750
RESEARCH         10875
SALES                 9400
[?]合计视图
[例]合计函数视图实例
SQL> create or replace view emp_no1 as
2 select deptno,sum(sal) 工资?sum(comm) d
3 from scott.emp group by deptno;
SQL> select * from emp_no1;
DEPTNO   工资?    d
--------- --------- ---------
    10     8750
    20   10875
30     9400     2200
索引
索引是种数据库对象。对于在表或聚集的烦引列上的每一值将包含一,提供直接的快速存取。在下列情况ORACLE可利用烦引改q性能Q?br>     按指定的索引列的值查找行?br>     按烦引列的顺序存取表?br>语法Q?br>create index <index_name> on <table_name(column1,column2…)>
[storage语句] [其它语句];
例如Q?br>SQL> create index idx_serv_01 on serv(srev_id,serv_seq_nbr)
2   tablespace data_bill_idx
3   storage (initial 5m next 5m);
存储函数
语法Q?br>create [or replace] function 函数?参数1Q参?……) RETURN cd IS | AS
     [局部变量说明]
     BEGIN
           执行语句Q?br>     ENDQ?br>[例子]Q?br>建立oracle 的函?br>create or replace FUNCTION SumDeptSalary(dept_no in number)
return number is
    total number(11,2);
begin
select sum(sal) into total from emp where deptno=dept_no;
return(total);
end;
存储q程
语法Q?br>create [or replace] procedure 函数?参数1Q参?……) IS | AS
     [局部变量说明]
     BEGIN
           执行语句Q?br>     ENDQ?br>[例子]
q程的输入、输出参数的用例
create or replace procedure RaiseSalary(RaiseRate in number,empnum in number,
outname out varchar2,outsal out number) is
begin
update emp set sal=sal*(1+RaiseRate);
select ename into outname from emp where empno=empnum;
select sal into outsal from emp where empno=empnum;
end;
函数pl/sql 中的q程参数调用CZ
set serveroutput on; //昄变量值的属?br>declare name varchar2(10);sal number;
begin
RaiseSalary(0.05,7566,name,sal);
dbms_output.put_line(name);
dbms_output.put_line(sal);
end;Q?br>查找pȝ旉

select sysdate from dual;
pȝ日期的格式{?br>select to_char(sysdate,'MM/DD/YYYY HH:MM:SS AM') from dual;
分解日期
q?select to_char(sysdate,'year') from dual;
?select to_char(sysdate,'mon') from dual;
月中W几?select to_char(sysdate,'dd') from dual;
一q中的第几星?select to_char(sysdate,'ww') from dual;
季度 select to_char(sysdate,'q') from dual;
一q中的第几天 select to_char(sysdate,'ddd') from dual;
查询旉
testdate1 date
select * from testdate where to_char(trunc(testdate1),'yyyy/mm/dd')='2001/04/09'
oracle 中用trunc()函数把所有日期的旉D|ؓ12:00AMQ消除sysdata中的旉
trunc()函数可进行时间加?br>在select中日期相减得出天?br>select trunc(sysdate)-trunc(hiredate) from emp where trunc(sysdate)-trunc(hiredate)>5000;
case 语句使用decode()函数替代

例如Qselect decode(deptno,10,'?,20,'二十',30,'三十') as chinesecode from emp;
            列名   ?表示?br>decode列乘U的应用
decode(Yjtx.Lb,0,Yprckmx.Ypsl*Xmxx.Xmpzlbl,1,Yprckmx.Ypsl*Xmxx.Xmpzlbl,2,Yprckmx.Ypsl) as Ypsl
使用decode函数计算
select sum(decode(deptno,20,1))-sum(decode(deptno,30,1)) as d from emp;

伪列
伪列不是表中真正的列,只是特征与列相同
---currval和nextval伪列
currval和nextval伪列与序列联合用。currval伪列q回被引用的序列的当前|
nextval伪列增加序列的|q返回序列的新倹{只能用于select values 子句和set 子句
表中主键列增加流水?br>insert into employee
values(emp_id_seq.nextval,'stanton bernard');
emp_id_seq为序?br>---rownum伪列
rownum伪列指出从表中检索数据的ơ序。例如,gؓ1的rownum表明该记录是从表中检索的W一条记录?br>rownum伪列最常见的用途是用于where子句。例?br>select * from emp where rownum <10;
建立bh水序列?br>create sequence seqczyqx
start with 1
increment by 1
nocycle;
生成表中没有的列的方?br>select 'testchar' as dd,sysdate deptno from emp,dual;
    字符?  列名
select 2342345234 as dd,sysdate deptno from emp,dual;
    数?    列名
________________________________________________________________________
q回字符串的一部分
select substr(ename,1,2) from emp;
-----------------------------------------------------------------------------------集合操作
select * from emp where deptno in(10,20);
-----------------------------------------------------------------------------------
在表中插入常?br>insert into testdate select 1,sysdate,sysdate from dual;
-----------------------------------------------------------------------------------
在select中对多个变量赋?br>SELECT SFBL ,DWBL into XMBL,DWBL FROM HZBL WHERE CFLBBM=CFLBBM AND HZLBBM=HZLBBM and Degree=Hzsf;
-----------------------------------------------------------------------------------
比较操作中的I问?br>is null;is not null
使用nvl()函数
select count(*),nvl(comm_amt,0) from comm;
nvl函数?0'值置换comm_amt表列中gؓI的所有数据行
------------------------------------------------------------------------------
·      从另一张表改进得到
Sql语句Q?br>Create Table <新表> As
  Select <列的列表> From <旧表>
  Where <U束条g>[可选]
·      拯表结?br>  Create Table <表名> As
  Select <列的列表>From <旧表>
  Where 1=2

semovy 2007-08-23 09:29 发表评论
]]>
oracle常用SQL语句.其实一般上SQL语句是通用?/title><link>http://m.tkk7.com/WshmAndLily/articles/138740.html</link><dc:creator>semovy</dc:creator><author>semovy</author><pubDate>Thu, 23 Aug 2007 01:21:00 GMT</pubDate><guid>http://m.tkk7.com/WshmAndLily/articles/138740.html</guid><wfw:comment>http://m.tkk7.com/WshmAndLily/comments/138740.html</wfw:comment><comments>http://m.tkk7.com/WshmAndLily/articles/138740.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://m.tkk7.com/WshmAndLily/comments/commentRss/138740.html</wfw:commentRss><trackback:ping>http://m.tkk7.com/WshmAndLily/services/trackbacks/138740.html</trackback:ping><description><![CDATA[<p>1、连?</p> <p>SQL*Plus system/manager </p> <p> <p>2、显C当前连接用?</p> <p>SQL> show user </p> <p> <p>3、查看系l拥有哪些用?</p> <p>SQL> select * from all_users; </p> <p> <p>4、新建用户ƈ授权 </p> <p>SQL> create user a identified by a;Q默认徏在SYSTEM表空间下Q?</p> <p>SQL> grant connect,resource to a; </p> <p> <p>5、连接到新用?</p> <p>SQL> conn a/a </p> <p> <p>6、查询当前用户下所有对?</p> <p>SQL> select * from tab; </p> <p> <p>7、徏立第一个表 </p> <p>SQL> create table a(a number); </p> <p> <p>8、查询表l构 </p> <p>SQL> desc a </p> <p> <p>9、插入新记录 </p> <p>SQL> insert into a values(1); </p> <p> <p>10、查询记?</p> <p>SQL> select * from a; </p> <p> <p>11、更改记?</p> <p>SQL> update a set a=2; </p> <p> <p>12、删除记?</p> <p>SQL> delete from a; </p> <p> <p>13、回?</p> <p>SQL> roll; </p> <p>SQL> rollback; </p> <p> <p>14、提?</p> <p>SQL> commit; </p> <p> <p>--------------------------------------------------------------- </p> <p> <p>http://www.oradb.net/newuser/cg_sys.htm </p> <p>--------------------------------------------------------------- </p> <p> <p>|上资料很多Q?</p> <p>http://www.oraclefan.net/ocp/sql/dba_monitor.txt </p> <p> <p>---------------------------------------------------------------- </p> <p>用户授权: </p> <p>GRANT ALTER ANY INDEX TO "user_id " </p> <p>GRANT "dba " TO "user_id "; </p> <p>ALTER USER "user_id " DEFAULT ROLE ALL </p> <p>创徏用户: </p> <p>CREATE USER "user_id " PROFILE "DEFAULT " IDENTIFIED BY " DEFAULT TABLESPACE "USERS " TEMPORARY TABLESPACE "TEMP " ACCOUNT UNLOCK; </p> <p>GRANT "CONNECT " TO "user_id "; </p> <p>用户密码讑֮: </p> <p>ALTER USER "CMSDB " IDENTIFIED BY "pass_word " </p> <p>表空间创? </p> <p>CREATE TABLESPACE "table_space " LOGGING DATAFILE 'C:\ORACLE\ORADATA\dbs\table_space.ora' SIZE 5M </p> <p> <p>------------------------------------------------------------------------ </p> <p>1、查看当前所有对?</p> <p> <p>SQL > select * from tab; </p> <p> <p>2、徏一个和a表结构一LI </p> <p> <p>SQL > create table b as select * from a where 1=2; </p> <p> <p>SQL > create table b(b1,b2,b3) as select a1,a2,a3 from a where 1=2; </p> <p> <p>3、察看数据库的大,和空间用情?</p> <p> <p>SQL > col tablespace format a20 </p> <p>SQL > select b.file_id  文gID, </p> <p>  b.tablespace_name  表空? </p> <p>  b.file_name     物理文g? </p> <p>  b.bytes       d节数, </p> <p>  (b.bytes-sum(nvl(a.bytes,0)))   已? </p> <p>  sum(nvl(a.bytes,0))        剩余, </p> <p>  sum(nvl(a.bytes,0))/(b.bytes)*100 剩余癑ֈ?</p> <p>  from dba_free_space a,dba_data_files b </p> <p>  where a.file_id=b.file_id </p> <p>  group by b.tablespace_name,b.file_name,b.file_id,b.bytes </p> <p>  order by b.tablespace_name </p> <p>  / </p> <p>  dba_free_space --表空间剩余空间状?</p> <p>  dba_data_files --数据文gI间占用情况 </p> <p> <p> <p>4、查看现有回滚段及其状?</p> <p> <p>SQL > col segment format a30 </p> <p>SQL > SELECT SEGMENT_NAME,OWNER,TABLESPACE_NAME,SEGMENT_ID,FILE_ID,STATUS FROM DBA_ROLLBACK_SEGS; </p> <p> <p>5、查看数据文件放|的路径 </p> <p> <p>SQL > col file_name format a50 </p> <p>SQL > select tablespace_name,file_id,bytes/1024/1024,file_name from dba_data_files order by file_id; </p> <p> <p>6、显C当前连接用?</p> <p> <p>SQL > show user </p> <p> <p>7、把SQL*Plus当计器 </p> <p> <p>SQL > select 100*20 from dual; </p> <p> <p>8、连接字W串 </p> <p> <p>SQL > select ? | |? from ?; </p> <p>SQL > select concat(?,?) from ?; </p> <p> <p>9、查询当前日?</p> <p> <p>SQL > select to_char(sysdate,'yyyy-mm-dd,hh24:mi:ss') from dual; </p> <p> <p>10、用户间复制数据 </p> <p> <p>SQL > copy from user1 to user2 create table2 using select * from table1; </p> <p> <p>11、视图中不能使用order byQ但可用group by代替来达到排序目?</p> <p> <p>SQL > create view a as select b1,b2 from b group by b1,b2; </p> <p> <p>12、通过授权的方式来创徏用户 </p> <p> <p>SQL > grant connect,resource to test identified by test; </p> <p> <p>SQL > conn test/test </p> <p> <p>13、查出当前用h有表名?</p> <p> <p>select unique tname from col; </p> <p> <p>----------------------------------------------------------------------- </p> <p>/* 向一个表格添加字D?*/ </p> <p>alter table alist_table add address varchar2(100); </p> <p> <p>/* 修改字段 属?字段为空 */ </p> <p>alter table alist_table modify address varchar2(80); </p> <p> <p>/* 修改字段名字 */ </p> <p>create table alist_table_copy as select ID,NAME,PHONE,EMAIL, </p> <p>QQ as QQ2, /*qq 改ؓqq2*/ </p> <p>ADDRESS from alist_table; </p> <p> <p>drop table alist_table; </p> <p>rename alist_table_copy to alist_table </p> <p>/* 修改表名 */ </p> <p> <p>I值处?</p> <p>有时要求列g能ؓI?</p> <p>create table dept (deptno number(2) not null, dname char(14), loc char(13)); </p> <p> <p>在基表中增加一?</p> <p>alter table dept </p> <p>add (headcnt number(3)); </p> <p> <p>修改已有列属?</p> <p>alter table dept </p> <p>modify dname char(20); </p> <p>注:只有当某列所有值都为空Ӟ才能减小其列值宽度?</p> <p>只有当某列所有值都为空Ӟ才能改变其列值类型?</p> <p>只有当某列所有值都ZI时Q才能定义该列ؓnot null?</p> <p>例: </p> <p>alter table dept modify (loc char(12)); </p> <p>alter table dept modify loc char(12); </p> <p>alter table dept modify (dname char(13),loc char(12)); </p> <p> <p>查找未断q接 </p> <p>select process,osuser,username,machine,logon_time ,sql_text </p> <p>from v$session a,v$sqltext b where a.sql_address=b.address; </p> <p> <p>----------------------------------------------------------------- </p> <p>1.以USER_开始的数据字典视图包含当前用户所拥有的信? 查询当前用户所拥有的表信息: </p> <p>select * from user_tables; </p> <p>2.以ALL_开始的数据字典视图包含ORACLE用户所拥有的信? </p> <p>查询用户拥有或有权访问的所有表信息: </p> <p>select * from all_tables; </p> <p> <p>3.以DBA_开始的视图一般只有ORACLE数据库管理员可以讉K: </p> <p>select * from dba_tables; </p> <p> <p>4.查询ORACLE用户Q?</p> <p>conn sys/change_on_install </p> <p>select * from dba_users; </p> <p>conn system/manager; </p> <p>select * from all_users; </p> <p> <p>5.创徏数据库用P </p> <p>CREATE USER user_name IDENTIFIED BY password; </p> <p>GRANT CONNECT TO user_name; </p> <p>GRANT RESOURCE TO user_name; </p> <p>授权的格? grant (权限) on tablename to username; </p> <p>删除用户(或表): </p> <p>drop user(table) username(tablename) (cascade); </p> <p>6.向徏好的用户导入数据?</p> <p>IMP SYSTEM/MANAGER FROMUSER = FUSER_NAME TOUSER = USER_NAME FILE = C:\EXPDAT.DMP COMMIT = Y </p> <p>7.索引 </p> <p>create index [index_name] on [table_name]( "column_name ") </p> <img src ="http://m.tkk7.com/WshmAndLily/aggbug/138740.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://m.tkk7.com/WshmAndLily/" target="_blank">semovy</a> 2007-08-23 09:21 <a href="http://m.tkk7.com/WshmAndLily/articles/138740.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>SQL*PLUS命o的用大?/title><link>http://m.tkk7.com/WshmAndLily/articles/138732.html</link><dc:creator>semovy</dc:creator><author>semovy</author><pubDate>Thu, 23 Aug 2007 01:03:00 GMT</pubDate><guid>http://m.tkk7.com/WshmAndLily/articles/138732.html</guid><wfw:comment>http://m.tkk7.com/WshmAndLily/comments/138732.html</wfw:comment><comments>http://m.tkk7.com/WshmAndLily/articles/138732.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://m.tkk7.com/WshmAndLily/comments/commentRss/138732.html</wfw:commentRss><trackback:ping>http://m.tkk7.com/WshmAndLily/services/trackbacks/138732.html</trackback:ping><description><![CDATA[SQL*PLUS命o的用大?nbsp;<br>     <br>       Oracle的sql*plus是与oracleq行交互的客L工具。在sql*plus中,可以q行sql*plus命o与sql*plus语句?nbsp;<br>   我们通常所说的DML、DDL、DCL语句都是sql*plus语句Q它们执行完后,都可以保存在一个被UCؓsql buffer的内存区域中Qƈ且只能保存一条最q执行的sql语句Q我们可以对保存在sql buffer中的sql 语句q行修改Q然后再ơ执行,sql*plus一般都与数据库打交道?nbsp;<br>   除了sql*plus语句Q在sql*plus中执行的其它语句我们UC为sql*plus命o。它们执行完后,不保存在sql buffer的内存区域中Q它们一般用来对输出的结果进行格式化昄Q以便于制作报表?nbsp;<br>   下面׃l一下一些常用的sql*plus命oQ?nbsp;<br>   <br>1. 执行一个SQL脚本文g <br>SQL>start file_name <br>SQL>@ file_name <br>我们可以多条sql语句保存在一个文本文件中Q这样当要执行这个文件中的所有的sql语句Ӟ用上面的M命o卛_Q这cM于dos中的批处理?nbsp;<br>   <br>2. 对当前的输入q行~辑 <br>SQL>edit <br>   <br>3. 重新q行上一ơ运行的sql语句 <br>SQL>/ <br>   <br>4. 显C的内容输出到指定文?nbsp;<br>SQL> SPOOL file_name <br>   在屏q上的所有内定w包含在该文g中,包括你输入的sql语句?nbsp;<br>   <br>5. 关闭spool输出 <br>SQL> SPOOL OFF <br>   只有关闭spool输出Q才会在输出文g中看到输出的内容?nbsp;<br>   <br>6Q显CZ个表的结?nbsp;<br>SQL> desc table_name <br>   <br>7. COL命oQ?nbsp;<br>主要格式化列的显CŞ式?nbsp;<br>该命令有许多选项Q具体如下: <br>COL[UMN] [{ column|expr} [ option ...]] <br>Option选项可以是如下的子句: <br>ALI[AS] alias <br>CLE[AR] <br>FOLD_A[FTER] <br>FOLD_B[EFORE] <br>FOR[MAT] format <br>HEA[DING] text <br>JUS[TIFY] {L[EFT]|C[ENTER]|C[ENTRE]|R[IGHT]} <br>LIKE { expr|alias} <br>NEWL[INE] <br>NEW_V[ALUE] variable <br>NOPRI[NT]|PRI[NT] <br>NUL[L] text <br>OLD_V[ALUE] variable <br>ON|OFF <br>WRA[PPED]|WOR[D_WRAPPED]|TRU[NCATED] <br>   <br>1). 改变~省的列标题 <br>COLUMN column_name HEADING column_heading <br>For example: <br>Sql>select * from dept; <br>     DEPTNO DNAME                        LOC <br>---------- ---------------------------- --------- <br>         10 ACCOUNTING                   NEW YORK <br>sql>col  LOC heading location <br>sql>select * from dept; <br>    DEPTNO DNAME                        location <br>--------- ---------------------------- ----------- <br>        10 ACCOUNTING                   NEW YORK <br>   <br>2). 列名ENAME改ؓ新列名EMPLOYEE NAMEq将新列名放在两行上Q?nbsp;<br>Sql>select * from emp <br>Department  name           Salary <br>---------- ---------- ---------- <br>         10 aaa                11         <br>SQL> COLUMN ENAME HEADING ’Employee|Name’ <br>Sql>select * from emp <br>            Employee <br>Department  name           Salary <br>---------- ---------- ----------   <br>         10 aaa                11 <br>note: the col heading turn into two lines from one line. <br>   <br>3). 改变列的昄长度Q?nbsp;<br>FOR[MAT] format <br>Sql>select empno,ename,job from emp; <br>      EMPNO ENAME      JOB         <br>---------- ----------     --------- <br>       7369 SMITH      CLERK       <br>       7499 ALLEN      SALESMAN   <br>7521 WARD       SALESMAN   <br>Sql> col ename format a40 <br>      EMPNO ENAME                                    JOB <br>----------   ----------------------------------------         --------- <br>       7369 SMITH                                    CLERK <br>       7499 ALLEN                                    SALESMAN <br>       7521 WARD                                    SALESMAN <br>   <br>4). 讄列标题的寚w方式 <br>JUS[TIFY] {L[EFT]|C[ENTER]|C[ENTRE]|R[IGHT]} <br>SQL> col ename justify center <br>SQL> / <br>      EMPNO           ENAME                   JOB <br>----------   ----------------------------------------       --------- <br>       7369 SMITH                                    CLERK <br>       7499 ALLEN                                    SALESMAN <br>7521 WARD                                     SALESMAN <br>对于NUMBER型的列,列标题缺省在双Q其它类型的列标题缺省在左边 <br>   <br>5). 不让一个列昄在屏q上 <br>NOPRI[NT]|PRI[NT] <br>SQL> col job noprint <br>SQL> / <br>      EMPNO           ENAME <br>----------     ---------------------------------------- <br>       7369 SMITH <br>       7499 ALLEN <br>7521 WARD <br>   <br>6). 格式化NUMBERcd列的昄Q?nbsp;<br>SQL> COLUMN SAL FORMAT $99,990 <br>SQL> / <br>Employee <br>Department Name        Salary    Commission <br>---------- ---------- --------- ---------- <br>30          ALLEN        $1,600    300 <br>   <br>7). 昄列值时Q如果列gؓNULL|用textg替NULL?nbsp;<br>COMM NUL[L] text <br>SQL>COL COMM NUL[L] text <br>   <br>8). 讄一个列的回l方?nbsp;<br>WRA[PPED]|WOR[D_WRAPPED]|TRU[NCATED] <br>        COL1 <br>-------------------- <br>HOW ARE YOU? <br>   <br>SQL>COL COL1 FORMAT A5 <br>SQL>COL COL1 WRAPPED <br>COL1 <br>----- <br>HOW A <br>RE YO <br>U? <br>   <br>SQL> COL COL1 WORD_WRAPPED <br>COL1 <br>----- <br>HOW <br>ARE <br>YOU? <br>   <br>SQL> COL COL1 WORD_WRAPPED <br>COL1 <br>----- <br>HOW A <br>   <br>9). 昄列的当前的显C属性?nbsp;<br>SQL> COLUMN column_name <br>   <br>10). 所有列的显C属性设为缺省?nbsp;<br>SQL> CLEAR COLUMNS <br>   <br>8. 屏蔽掉一个列中显C的相同的?nbsp;<br>BREAK ON break_column <br>SQL> BREAK ON DEPTNO <br>SQL> SELECT DEPTNO, ENAME, SAL <br>FROM EMP <br>  WHERE SAL < 2500 <br>  ORDER BY DEPTNO; <br>DEPTNO      ENAME         SAL <br>---------- ----------- --------- <br>10           CLARK        2450 <br>MILLER      1300 <br>20            SMITH       800 <br>ADAMS       1100 <br>   <br>9. 在上面屏蔽掉一个列中显C的相同的值的昄中,每当列值变化时在值变化之前插入n个空行?nbsp;<br>BREAK ON break_column SKIP n <br>   <br>SQL> BREAK ON DEPTNO SKIP 1 <br>SQL> / <br>DEPTNO ENAME SAL <br>---------- ----------- --------- <br>10 CLARK 2450 <br>MILLER 1300 <br>   <br>20 SMITH 800 <br>ADAMS 1100 <br>   <br>10. 昄对BREAK的设|?nbsp;<br>SQL> BREAK <br>   <br>11. 删除6?的设|?nbsp;<br>SQL> CLEAR BREAKS <br>   <br>12. Set 命oQ?nbsp;<br>该命令包含许多子命oQ?nbsp;<br>SET system_variable value <br>system_variable value 可以是如下的子句之一Q?nbsp;<br>APPI[NFO]{ON|OFF|text} <br>ARRAY[SIZE] {15|n} <br>AUTO[COMMIT]{ON|OFF|IMM[EDIATE]|n} <br>AUTOP[RINT] {ON|OFF} <br>AUTORECOVERY [ON|OFF] <br>AUTOT[RACE] {ON|OFF|TRACE[ONLY]} [EXP[LAIN]] [STAT[ISTICS]] <br>BLO[CKTERMINATOR] {.|c} <br>CMDS[EP] {;|c|ON|OFF} <br>COLSEP {_|text} <br>COM[PATIBILITY]{V7|V8|NATIVE} <br>CON[CAT] {.|c|ON|OFF} <br>COPYC[OMMIT] {0|n} <br>COPYTYPECHECK {ON|OFF} <br>DEF[INE] {&|c|ON|OFF} <br>DESCRIBE [DEPTH {1|n|ALL}][LINENUM {ON|OFF}][INDENT {ON|OFF}] <br>ECHO {ON|OFF} <br>EDITF[ILE] file_name[.ext] <br>EMB[EDDED] {ON|OFF} <br>ESC[APE] {\|c|ON|OFF} <br>FEED[BACK] {6|n|ON|OFF} <br>FLAGGER {OFF|ENTRY |INTERMED[IATE]|FULL} <br>FLU[SH] {ON|OFF} <br>HEA[DING] {ON|OFF} <br>HEADS[EP] {||c|ON|OFF} <br>INSTANCE [instance_path|LOCAL] <br>LIN[ESIZE] {80|n} <br>LOBOF[FSET] {n|1} <br>LOGSOURCE [pathname] <br>LONG {80|n} <br>LONGC[HUNKSIZE] {80|n} <br>MARK[UP] HTML [ON|OFF] [HEAD text] [BODY text] [ENTMAP {ON|OFF}] [SPOOL <br>{ON|OFF}] [PRE[FORMAT] {ON|OFF}] <br>NEWP[AGE] {1|n|NONE} <br>NULL text <br>NUMF[ORMAT] format <br>NUM[WIDTH] {10|n} <br>PAGES[IZE] {24|n} <br>PAU[SE] {ON|OFF|text} <br>RECSEP {WR[APPED]|EA[CH]|OFF} <br>RECSEPCHAR {_|c} <br>SERVEROUT[PUT] {ON|OFF} [SIZE n] [FOR[MAT] {WRA[PPED]|WOR[D_ <br>WRAPPED]|TRU[NCATED]}] <br>SHIFT[INOUT] {VIS[IBLE]|INV[ISIBLE]} <br>SHOW[MODE] {ON|OFF} <br>SQLBL[ANKLINES] {ON|OFF} <br>SQLC[ASE] {MIX[ED]|LO[WER]|UP[PER]} <br>SQLCO[NTINUE] {> |text} <br>SQLN[UMBER] {ON|OFF} <br>SQLPRE[FIX] {#|c} <br>SQLP[ROMPT] {SQL>|text} <br>SQLT[ERMINATOR] {;|c|ON|OFF} <br>SUF[FIX] {SQL|text} <br>TAB {ON|OFF} <br>TERM[OUT] {ON|OFF} <br>TI[ME] {ON|OFF} <br>TIMI[NG] {ON|OFF} <br>TRIM[OUT] {ON|OFF} <br>TRIMS[POOL] {ON|OFF} <br>UND[ERLINE] {-|c|ON|OFF} <br>VER[IFY] {ON|OFF} <br>WRA[P] {ON|OFF} <br>   <br>1). 讄当前session是否对修改的数据q行自动提交 <br>SQL>SET AUTO[COMMIT] {ON|OFF|IMM[EDIATE]| n} <br>   <br>2)Q在用start命o执行一个sql脚本Ӟ是否昄脚本中正在执行的SQL语句 <br>SQL> SET ECHO {ON|OFF} <br>   <br>3).是否昄当前sql语句查询或修改的行数 <br>SQL> SET FEED[BACK] {6|n|ON|OFF} <br>   默认只有l果大于6行时才显C结果的行数。如果set feedback 1 Q则不管查询到多行都返回。当为off Ӟ一律不昄查询的行?nbsp;<br>   <br>4).是否昄列标?nbsp;<br>SQL> SET HEA[DING] {ON|OFF} <br>当set heading off Ӟ在每늚上面不显C列标题Q而是以空白行代替 <br>   <br>5).讄一行可以容U的字符?nbsp;<br>SQL> SET LIN[ESIZE] {80|n} <br>   如果一行的输出内容大于讄的一行可容纳的字W数Q则折行昄?nbsp;<br>   <br>6).讄与之间的分隔 <br>SQL> SET NEWP[AGE] {1|n|NONE} <br>当set newpage 0 Ӟ会在每页的开头有一个小的黑Ҏ?nbsp;<br>当set newpage n Ӟ会在和之间隔着n个空行?nbsp;<br>当set newpage none Ӟ会在和之间没有Q何间隔?nbsp;<br>   <br>7).昄Ӟ用textg替NULL?nbsp;<br>SQL> SET NULL text <br>   <br>8).讄一|多少行数 <br>SQL> SET PAGES[IZE] {24|n} <br>如果设ؓ0Q则所有的输出内容Zƈ且不昄列标?nbsp;<br>   <br>9).是否昄用DBMS_OUTPUT.PUT_LINE包进行输出的信息?nbsp;<br>SQL> SET SERVEROUT[PUT] {ON|OFF}   <br>在编写存储过E时Q我们有时会用dbms_output.put_line必要的信息输出Q以便对存储q程q行调试Q只有将serveroutput变量设ؓon后,信息才能昄在屏q上?nbsp;<br>   <br>10).当SQL语句的长度大于LINESIZEӞ是否在显C时截取SQL语句?nbsp;<br>SQL> SET WRA[P] {ON|OFF} <br>   当输出的行的长度大于讄的行的长度时Q用set linesize n命o讄Q,当set wrap onӞ输出行的多于的字W会另v一行显C,否则Q会输的多于字W切除,不予昄?nbsp;<br>   <br>11).是否在屏q上昄输出的内容,主要用与SPOOLl合使用?nbsp;<br>SQL> SET TERM[OUT] {ON|OFF} <br>   在用spool命o一个大表中的内容输出到一个文件中Ӟ内容输出在屏幕上会耗费大量的时_讄set termspool off后,则输出的内容只会保存在输出文件中Q不会显C在屏幕上,极大的提高了spool的速度?nbsp;<br>   <br>12).SPOOL输出中每行后面多余的I格L <br>SQL> SET TRIMS[OUT] {ON|OFF}   <br>     <br>13)昄每个sql语句p的执行时?nbsp;<br>set TIMING  {ON|OFF} <br>   <br>14Q修改sql buffer中的当前行中Q第一个出现的字符?nbsp;<br>C[HANGE] /old_value/new_value <br>SQL> l <br>   1* select * from dept <br>SQL> c/dept/emp <br>   1* select * from emp <br>   <br>15Q编辑sql buffer中的sql语句 <br>EDI[T] <br>   <br>16Q显Csql buffer中的sql语句Qlist n昄sql buffer中的Wn行,qɽWn行成为当前行 <br>L[IST] [n] <br>   <br>17Q在sql buffer的当前行下面加一行或多行 <br>I[NPUT] <br>   <br>18Q将指定的文本加到sql buffer的当前行后面 <br>A[PPEND] <br>SQL> select deptno, <br>   2  dname <br>   3  from dept; <br>     DEPTNO DNAME <br>---------- -------------- <br>         10 ACCOUNTING <br>         20 RESEARCH <br>         30 SALES <br>         40 OPERATIONS <br>   <br>SQL> L 2 <br>   2* dname <br>SQL> a ,loc <br>   2* dname,loc <br>SQL> L <br>   1  select deptno, <br>   2  dname,loc <br>   3* from dept <br>SQL> / <br>   <br>     DEPTNO DNAME          LOC <br>---------- -------------- ------------- <br>         10 ACCOUNTING     NEW YORK <br>         20 RESEARCH       DALLAS <br>         30 SALES          CHICAGO <br>         40 OPERATIONS     BOSTON <br>   <br>19Q将sql buffer中的sql语句保存C个文件中 <br>SAVE file_name <br>   <br>20Q将一个文件中的sql语句导入到sql buffer?nbsp;<br>GET file_name <br>   <br>21Q再ơ执行刚才已l执行的sql语句 <br>RUN <br>or <br>/ <br>   <br>22Q执行一个存储过E?nbsp;<br>EXECUTE procedure_name <br>   <br>23Q在sql*plus中连接到指定的数据库 <br>CONNECT user_name/passwd@db_alias <br>   <br>24Q设|每个报表的剙标题 <br>TTITLE <br>   <br>25Q设|每个报表的N标题 <br>BTITLE <br>   <br>26Q写一个注?nbsp;<br>REMARK [text] <br>   <br>27Q将指定的信息或一个空行输出到屏幕?nbsp;<br>PROMPT [text] <br>   <br>28Q将执行的过E暂停,{待用户响应后l执?nbsp;<br>PAUSE [text] <br>   <br>Sql>PAUSE Adjust paper and press RETURN to continue. <br>   <br>29Q将一个数据库中的一些数据拷贝到另外一个数据库Q如一个表的数据拷贝到另一个数据库Q?nbsp;<br>COPY {FROM database | TO database | FROM database TO database} <br>{APPEND|CREATE|INSERT|REPLACE} destination_table <br>[(column, column, column, ...)] USING query <br>   <br>sql>COPY FROM SCOTT/TIGER@HQ TO JOHN/CHROME@WEST   <br>create emp_temp <br>USING SELECT * FROM EMP <br>   <br>30Q不退出sql*plusQ在sql*plus中执行一个操作系l命令: <br>HOST <br>   <br>Sql> host hostname <br>该命令在windows下可能被支持?nbsp;<br>   <br>31Q在sql*plus中,切换到操作系l命令提C符下,q行操作pȝ命o后,可以再次切换回sql*plusQ?nbsp;<br>! <br>   <br>sql>! <br>$hostname <br>$exit <br>sql> <br>   <br>该命令在windows下不被支持?nbsp;<br>   <br>32Q显Csql*plus命o的帮?nbsp;<br>HELP <br>如何安装帮助文gQ?nbsp;<br>Sql>@ ?\sqlplus\admin\help\hlpbld.sql ?\sqlplus\admin\help\helpus.sql <br>Sql>help index <br>   <br>33Q显Csql*pluspȝ变量的值或sql*plus环境变量的?nbsp;<br>Syntax <br>SHO[W] option <br>where option represents one of the following terms or clauses: <br>system_variable <br>ALL <br>BTI[TLE] <br>ERR[ORS] [{FUNCTION|PROCEDURE|PACKAGE|PACKAGE BODY| <br>TRIGGER|VIEW|TYPE|TYPE BODY} [schema.]name] <br>LNO <br>PARAMETERS [parameter_name] <br>PNO <br>REL[EASE] <br>REPF[OOTER] <br>REPH[EADER] <br>SGA <br>SPOO[L] <br>SQLCODE <br>TTI[TLE] <br>USER <br>   <br>1) . 昄当前环境变量的| <br>Show all <br>   <br>2) . 昄当前在创建函数、存储过E、触发器、包{对象的错误信息 <br>Show error <br>当创Z个函数、存储过E等出错Ӟ变可以用该命令查看在那个地方出错及相应的出错信息Q进行修改后再次q行~译?nbsp;<br>   <br>3) . 昄初始化参数的| <br>show PARAMETERS [parameter_name] <br>   <br>4) . 昄数据库的版本Q?nbsp;<br>show REL[EASE] <br>   <br>5) . 昄SGA的大?nbsp;<br>show SGA <br>   <br>6). 昄当前的用户名 <br>show user <img src ="http://m.tkk7.com/WshmAndLily/aggbug/138732.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://m.tkk7.com/WshmAndLily/" target="_blank">semovy</a> 2007-08-23 09:03 <a href="http://m.tkk7.com/WshmAndLily/articles/138732.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>java jdbcq接oracle9ihttp://m.tkk7.com/WshmAndLily/articles/138540.htmlsemovysemovyWed, 22 Aug 2007 02:41:00 GMThttp://m.tkk7.com/WshmAndLily/articles/138540.htmlhttp://m.tkk7.com/WshmAndLily/comments/138540.htmlhttp://m.tkk7.com/WshmAndLily/articles/138540.html#Feedback0http://m.tkk7.com/WshmAndLily/comments/commentRss/138540.htmlhttp://m.tkk7.com/WshmAndLily/services/trackbacks/138540.html java jdbcq接oracle9i
 讄环境变量classpath=.;E:\oracle\ora90\jdbc\lib\classes12.zip;
*/
import java.sql.*;
public class Demo
{
 public static void main(String[] args)
 {
  try
  {
   DriverManager.registerDriver(new oracle.jdbc.OracleDriver());//取其中一个即?br>   Class.forName("oracle.jdbc.driver.OracleDriver");
   
  }catch(Exception e)
  {
   System.out.println("No Driver!");
  }
  try
  {
   String url = "jdbc:oracle:thin:@127.0.0.1:1521:demo";
   String userName = "system";
   String password = "manager";
   Connection conn = DriverManager.getConnection(url,userName,password);
   Statement stmt = conn.createStatement();
   ResultSet rset = stmt.executeQuery("select * from test");
   while(rset.next())
   {
    System.out.println("user_id: "+rset.getString("user_id"));
    System.out.println("user_name: "+rset.getString("user_name"));
    System.out.println("note: "+rset.getString("note"));
   }
  }catch(SQLException e)
  {
   System.out.println("can't access the database!");
  }
 }
}

semovy 2007-08-22 10:41 发表评论
]]>
վ֩ģ壺 Ļѹۿ| avһվ²| AVһɫ| Ƶ㶮| AV߹ۿ| ŮƵ| 7m͹Ʒȫ| Ƶ߹ۿƵ| 91Ʒַ| ˳վձƬ| avŷǮ| ޾ƷAAƬ| þþþþѹۿ| ˳վ߹ۿ| պһƵ | պ߹ۿ| ٸaëƬ˳| һëƬڲ| Ʒһѿ| ˬָ߳BBƵѿ| ҹҹˬŮ8888Ƶѹۿ| ƷŮٸaѾþ| ŷ޸| Ҹ24p| ĻmvƵ8| 96|| պһ| 3344߿Ƭ| ѹۺƵ߿| wwwѻɫ| ޼Ůۺ99| ?vŮ˵߹ۿ| Ʒѹۿ| ƵƷ| ִִˬƵ| ѸƵ| ۺŷ㻨| Ļ| ޹Ʒ߹ۿ| þþƷۺɫ| èwww˳|