??xml version="1.0" encoding="utf-8" standalone="yes"?>国产精品二线,亚洲欧美制服第一页,粉嫩一区二区三区性色avhttp://www.aygfsteel.com/ltc603/archive/2006/08/29/66341.html阿成阿成Tue, 29 Aug 2006 00:52:00 GMThttp://www.aygfsteel.com/ltc603/archive/2006/08/29/66341.htmlhttp://www.aygfsteel.com/ltc603/comments/66341.htmlhttp://www.aygfsteel.com/ltc603/archive/2006/08/29/66341.html#Feedback0http://www.aygfsteel.com/ltc603/comments/commentRss/66341.htmlhttp://www.aygfsteel.com/ltc603/services/trackbacks/66341.html阅读全文

阿成 2006-08-29 08:52 发表评论
]]>
数据库模型大?/title><link>http://www.aygfsteel.com/ltc603/archive/2006/08/22/64958.html</link><dc:creator>阿成</dc:creator><author>阿成</author><pubDate>Tue, 22 Aug 2006 01:30:00 GMT</pubDate><guid>http://www.aygfsteel.com/ltc603/archive/2006/08/22/64958.html</guid><wfw:comment>http://www.aygfsteel.com/ltc603/comments/64958.html</wfw:comment><comments>http://www.aygfsteel.com/ltc603/archive/2006/08/22/64958.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.aygfsteel.com/ltc603/comments/commentRss/64958.html</wfw:commentRss><trackback:ping>http://www.aygfsteel.com/ltc603/services/trackbacks/64958.html</trackback:ping><description><![CDATA[ <a >http://www.databaseanswers.org/data_models/index.htm</a> <img src ="http://www.aygfsteel.com/ltc603/aggbug/64958.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.aygfsteel.com/ltc603/" target="_blank">阿成</a> 2006-08-22 09:30 <a href="http://www.aygfsteel.com/ltc603/archive/2006/08/22/64958.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Hsql试http://www.aygfsteel.com/ltc603/archive/2006/08/16/63897.html阿成阿成Wed, 16 Aug 2006 06:24:00 GMThttp://www.aygfsteel.com/ltc603/archive/2006/08/16/63897.htmlhttp://www.aygfsteel.com/ltc603/comments/63897.htmlhttp://www.aygfsteel.com/ltc603/archive/2006/08/16/63897.html#Feedback0http://www.aygfsteel.com/ltc603/comments/commentRss/63897.htmlhttp://www.aygfsteel.com/ltc603/services/trackbacks/63897.htmlhttp://cutelife.bokee.com/blog/3474380.htmlQ?br />前言Q该文章只是单介l一下hsql的入门内容,如果想仔l了(jin)解的话,参考官方帮助文档最为有用?

一、简介:(x)
hsql数据库是一ƄJava~写的免Ҏ(gu)据库Q许可是BSD-style的协议,如果你是使用Java~程的话Q不凡考虑一 下用它Q相对其他数据库来说Q其体积,?63kb。仅一个hsqldb.jar文g包括了(jin)数据库引擎,数据库驱动,q有其他用户界面操作{内宏V? 在Java开源世界里Qhsql是极为受Ƣ迎的(Java本n来说Q,JBoss应用E序服务器默认也提供?jin)这个数据库引擎。由于其体积的原因Q又? UJava设计Q又支持SQL99QSQL2003大部分的标准Q所以也是作为商业应用程序展C的一U选择。请C下地址下蝲hsqlQ?http://prdownloads.sourceforge.net/hsqldb/hsqldb_1_7_3_3.zip?download

二、用hsql数据库:(x)
1、hsql数据库引擎有几种服务器模式:(x)常用的Server模式、WebServer模式、Servlet模式、Standlone模式、Memory-Only数据库?br />2、最为常用的Server模式Q?br />1)首先却换到l(f)ib文g夹下Q运行java -cp hsqldb.jar org.hsqldb.Server -database.0 db/mydb -dbname.0 xdb
执行命o(h)后,会(x)在db文g夹下创徏一个数据库mydbQ别名(用于讉K数据库)(j)是xdbQ如果存在mydb数据库,会(x)打开它?br />2)q行数据库界面操作工P(x)java -cp hsqldb.jar org.hsqldb.util.DatabaseManager
在Type 选项里选上相应的服务器模式Q这里选择HSQL Database Engine Server模式QDriver不用修改QURL修改为jdbc:hsqldb:hsql://localhost/xdb Q主要这里xdb是上面我们讄的别名)(j);user里设|用户名Q第一ơ登录时Q设|的是管理员的用户名Qpassword讄密码。然后点击Ok?br />3)W一ơ运行数据库引擎Q创建数据库完毕。好?jin),你可以打开db文g夹,?x)发现里面多了(jin)几个文件?br />mydb.properties文gQ是关于数据库的属性文件?br />mydb.scriptQhsql主要保存的表Q这里按hsql的说法是Memory表,是最为常用的Q,里面的格式都是文本格式,可以用文本查看,里面的语句都是sql语句Q熟(zhn)sql语句的话Q你也可以手动修改它。每ơ运行数据库引擎的话都是从这里加载进内存的?br />mydb.lck表示数据库处于打开状态?br />其他的请参看hsqldb包里的手册?/p>

3、WebServer模式和Serverq行模式基本一P只是支持?jin)Http{协议,主要用于防火墙,默认端口?001。启动ServerQjava -cp hsqldb.jar org.hsqldb.WebServer ...剩余的和上面的一致?/p>

4、Servlet模式可以允许你通过Servlet容器来访问数据库Q请查看hsqlServlet.java的源代码Q和W(xu)ebServercM?/p>

5? 另一个值得思考的模式是Standalone模式Q不能通过|络来访问数据库Q主要是在一个JVM中用,那样的话Q访问的速度?x)更加快。虽然文档里面提 C要是用于开发时使用Q但是我们可以假设一下,该方法不需要一个引擎类的东西,而类g打开文g的方式,q回一个Connection对象Q?br />Connection c = DriverManager.getConnection("jdbc:hsqldb:file:mydb", "sa", "");
? ?x)在当前目录扑ֈmydb数据库相xӞ打开q返回一个Connection对象。该方式有点好处是可以不用引擎,在需要的时候操作数据。所以那? Ҏ(gu)据库不是特别有要求的Q但又需要一个操作数据库的方式的话,可以使用q种Ҏ(gu)。对于那些不想额外在数据库引擎花贚wq话,可以使用q种Ҏ(gu)。但是不 推荐使用该方法。记得Hibernate里SessionFactory可以使用openSession(Connecttion c)来获得一个Session对象的,因此Q在试或者实际应用的话都可以q样使用?/p>

6、Memory-Only 数据库:(x)֐思义Q主要是内存中用,不用于保存数据。可以用于在内存中交换数据?/p>

三、具体的链接与操作的话,和一般的JDBC操作一栗而相应的Server模式的话Q连接地址主要你运行数据库界面操作工具Ӟ在URL一栏时默认已经讑֥?jin),自己实?fn)一下,Ҏ(gu)其中参数?/p>

q篇文章介绍大致内容很详l,不过也大都是从Hsql的帮助上译的,我有必要加入Ҏ(gu)鲜的血涌Ӏ?br />q篇文章中不的是~少实战性,往往初学者第一步都C出来Q比如我?br />我在实践中遇到的问题是打开数据库管理器怎么也连接不上数据库QL?br />java.sql.sqlException Socket create error
搞了(jin)一个晚上,到第二天早上清醒一下,惌v来这个数据库应该在创建库之后Q保持那个cmdH口Q在此过E中q接?br />果然好用Q也q出?jin)开拓Hsql的第一步?/p>

另外不用在互联网上搜索别的介l,Hsql自带的guide已l很详细?jin)?/p>

阿成 2006-08-16 14:24 发表评论
]]>
JDBCq接数据库经验技巧集?http://www.aygfsteel.com/ltc603/archive/2006/01/26/29233.html阿成阿成Thu, 26 Jan 2006 03:32:00 GMThttp://www.aygfsteel.com/ltc603/archive/2006/01/26/29233.htmlhttp://www.aygfsteel.com/ltc603/comments/29233.htmlhttp://www.aygfsteel.com/ltc603/archive/2006/01/26/29233.html#Feedback0http://www.aygfsteel.com/ltc603/comments/commentRss/29233.htmlhttp://www.aygfsteel.com/ltc603/services/trackbacks/29233.html
  一、连接各U数据库方式速查?/B>

  下面|列?jin)各U数据库使用JDBCq接的方式,可以作ؓ(f)一个手册用?

  1、Oracle8/8i/9i数据库(thin模式Q?

Class.forName("oracle.jdbc.driver.OracleDriver").newInstance();
String url="jdbc:oracle:thin:@localhost:1521:orcl"; //orcl为数据库的SID
String user="test";
String password="test";
Connection conn= DriverManager.getConnection(url,user,password);

  2、DB2数据?

Class.forName("com.ibm.db2.jdbc.app.DB2Driver ").newInstance();
String url="jdbc:db2://localhost:5000/sample"; //sampleZ的数据库?
String user="admin";
String password="";
Connection conn= DriverManager.getConnection(url,user,password);

  3、Sql Server7.0/2000数据?

Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver").newInstance();
String url="jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=mydb";
//mydb为数据库
String user="sa";
String password="";
Connection conn= DriverManager.getConnection(url,user,password);

  4、Sybase数据?

Class.forName("com.sybase.jdbc.SybDriver").newInstance();
String url =" jdbc:sybase:Tds:localhost:5007/myDB";//myDBZ的数据库?
Properties sysProps = System.getProperties();
SysProps.put("user","userid");
SysProps.put("password","user_password");
Connection conn= DriverManager.getConnection(url, SysProps);

  5、Informix数据?

Class.forName("com.informix.jdbc.IfxDriver").newInstance();
String url = "jdbc:informix-sqli://123.45.67.89:1533/myDB:INFORMIXSERVER=myserver;
user=testuser;password=testpassword"; //myDB为数据库?
Connection conn= DriverManager.getConnection(url);

  6、MySQL数据?

Class.forName("org.gjt.mm.mysql.Driver").newInstance();
String url ="jdbc:mysql://localhost/myDB?user=soft&password=soft1234&useUnicode=true&characterEncoding=8859_1"
//myDB为数据库?
Connection conn= DriverManager.getConnection(url);

  7、PostgreSQL数据?

Class.forName("org.postgresql.Driver").newInstance();
String url ="jdbc:postgresql://localhost/myDB" //myDB为数据库?
String user="myuser";
String password="mypassword";
Connection conn= DriverManager.getConnection(url,user,password);

  8、access数据库直q用ODBC?BR>
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver") ;
String url="jdbc:odbc:Driver={MicroSoft Access Driver (*.mdb)};DBQ="+application.getRealPath("/Data/ReportDemo.mdb");
Connection conn = DriverManager.getConnection(url,"","");
Statement stmtNew=conn.createStatement() ;

  二、JDBCq接MySql方式

  下面是用JDBCq接MySql的一个小的教E?

  1、查N动程?BR>
  MySQL目前提供的java驱动E序为Connection/JQ可以从MySQL官方|站下蝲Qƈ扑ֈmysql-connector-java-3.0.15-ga-bin.jar文gQ此驱动E序为纯java驱动E序Q不需做其他配|?BR>
  2、动态指定classpath

  如果需要执行时动态指定classpathQ就在执行时采用Qcp方式。否则将上面?jar文g加入到classpath环境变量中?BR>
  3、加载驱动程?BR>
try{
 Class.forName(com.mysql.jdbc.Driver);
 System.out.println(Success loading Mysql Driver!);
}catch(Exception e)
{
 System.out.println(Error loading Mysql Driver!);
 e.printStackTrace();
}

  4、设|连接的url

jdbcQmysqlQ?/localhost/databasename[?pa=va][Qpa=va]

  三、以下列Z(jin)在用JDBC来连接Oracle数据库时可以使用的一些技?/B>

  1、在客户端Y件开发中使用Thin驱动E序

  在开发Java软g斚wQOracle的数据库提供?jin)四U类型的驱动E序Q二U用于应用Y件、applets、servlets{客L(fng)软gQ另外二U用于数据库中的Java存储q程{服务器端Y件。在客户机端软g的开发中Q我们可以选择OCI驱动E序或Thin驱动E序。OCI驱动E序利用Java本地化接口(JNIQ,通过Oracle客户端Y件与数据库进行通讯。Thin驱动E序是纯Java驱动E序Q它直接与数据库q行通讯。ؓ(f)?jin)获得最高的性能QOracle在客L(fng)软g的开发中使用OCI驱动E序Q这g是正的。但我徏议用Thin驱动E序Q因为通过多次试发现Q在通常情况下,Thin驱动E序的性能都超q了(jin)OCI驱动E序?BR>
  2、关闭自动提交功能,提高pȝ性能

  在第一ơ徏立与数据库的q接Ӟ在缺省情况下Q连接是在自动提交模式下的。ؓ(f)?jin)获得更好的性能Q可以通过调用带布?yu)(dng)值false参数的ConnectioncȝsetAutoCommit()Ҏ(gu)关闭自动提交功能Q如下所C:(x)

  conn.setAutoCommit(false);

  值得注意的是Q一旦关闭了(jin)自动提交功能Q我们就需要通过调用Connectioncȝcommit()和rollback()Ҏ(gu)来h工的方式对事务进行管理?BR>
  3、在动态SQL或有旉限制的命令中使用Statement对象

  在执行SQL命o(h)Ӟ我们有二U选择Q可以用PreparedStatement对象Q也可以使用Statement对象。无论多次C用同一个SQL命o(h)QPreparedStatement都只对它解析和编译一ơ。当使用Statement对象Ӟ每次执行一个SQL命o(h)Ӟ都会(x)对它q行解析和编译。这可能?x)你认为,使用PreparedStatement对象比用Statement对象的速度更快。然而,我进行的试表明Q在客户端Y件中Q情况ƈ非如此。因此,在有旉限制的SQL操作中,除非成批地处理SQL命o(h)Q我们应当考虑使用Statement对象?BR>
  此外Q用Statement对象也得编写动态SQL命o(h)更加单,因ؓ(f)我们可以字W串q接在一P建立一个有效的SQL命o(h)。因此,我认为,Statement对象可以使动态SQL命o(h)的创建和执行变得更加单?BR>
  4、利用helper函数对动态SQL命o(h)q行格式?BR>
  在创Z用Statement对象执行的动态SQL命o(h)Ӟ我们需要处理一些格式化斚w的问题。例如,如果我们惛_Z个将名字O'Reilly插入表中的SQL命o(h)Q则必须使用二个相连的?'”号替换O'Reilly中的?”号。完成这些工作的最好的Ҏ(gu)是创Z个完成替换操作的helperҎ(gu)Q然后在q接字符串心(j)服用公式表达一个SQL命o(h)Ӟ使用创徏的helperҎ(gu)。与此类似的是,我们可以让helperҎ(gu)接受一个Date型的|然后让它输出ZOracle的to_date()函数的字W串表达式?BR>
  5、利用PreparedStatement对象提高数据库的M效率

  在用PreparedStatement对象执行SQL命o(h)Ӟ命o(h)被数据库q行解析和编译,然后被放到命令缓冲区。然后,每当执行同一个PreparedStatement对象Ӟ它就?x)被再解析一ơ,但不?x)被再次~译。在~冲Z可以发现预编译的命o(h)Qƈ且可以重C用。在有大量用L(fng)企业U应用Y件中Q经怼(x)重复执行相同的SQL命o(h)Q用PreparedStatement对象带来的编译次数的减少能够提高数据库的M性能。如果不是在客户端创建、预备、执行PreparedStatementd需要的旉长于StatementdQ我?x)徏议在除动态SQL命o(h)之外的所有情况下使用PreparedStatement对象?BR>
  6、在成批处理重复的插入或更新操作中用PreparedStatement对象

  如果成批地处理插入和更新操作Q就能够显著地减它们所需要的旉。Oracle提供的Statement?CallableStatementq不真正地支持批处理Q只有PreparedStatement对象才真正地支持批处理。我们可以用addBatch()和executeBatch()Ҏ(gu)选择标准的JDBC批处理,或者通过利用PreparedStatement对象的setExecuteBatch()Ҏ(gu)和标准的executeUpdate()Ҏ(gu)选择速度更快的Oracle专有的方法。要使用Oracle专有的批处理机制Q可以以如下所C的方式调用setExecuteBatch()Q?BR>
PreparedStatement pstmt3D null;
try {
 ((OraclePreparedStatement)pstmt).setExecuteBatch(30);
 ...
 pstmt.executeUpdate();
}

  调用setExecuteBatch()时指定的值是一个上限,当达到该值时Q就?x)自动地引发SQL命o(h)执行Q标准的executeUpdate()Ҏ(gu)׃(x)被作为批处理送到数据库中。我们可以通过调用PreparedStatementcȝsendBatch()Ҏ(gu)随时传输批处理Q务?BR>
  7、用Oracle locatorҎ(gu)插入、更新大对象QLOBQ?BR>
  Oracle的PreparedStatementcM完全支持BLOB和CLOB{大对象的处理,其是Thin驱动E序不支持利用PreparedStatement对象的setObject()和setBinaryStream()Ҏ(gu)讄BLOB的|也不支持利用setCharacterStream()Ҏ(gu)讄CLOB的倹{只有locator本n中的Ҏ(gu)才能够从数据库中获取LOBcd的倹{可以用PreparedStatement对象插入或更新LOBQ但需要用locator才能获取LOB的倹{由于存在这二个问题Q因此,我徏议用locator的方法来插入、更新或获取LOB的倹{?BR>
  8、用SQL92语法调用存储q程

  在调用存储过E时Q我们可以用SQL92或Oracle PL/SQLQ由于用Oracle PL/SQLq没有什么实际的好处Q而且?x)给以后l护你的应用E序的开发h员带来麻?ch),因此Q我在调用存储过E时使用SQL92?BR>
  9、用Object SQL对象模式{Ud数据库中

  既然可以Oracle的数据库作ؓ(f)一U面向对象的数据库来使用Q就可以考虑应用程序中的面向对象模式{到数据库中。目前的Ҏ(gu)是创建Java bean作ؓ(f)伪装的数据库对象Q将它们的属性映到关系表中Q然后在q些bean中添加方法。尽这样作在Java中没有什么问题,但由于操作都是在数据库之外进行的Q因此其他访问数据库的应用Y件无法利用对象模式。如果利用Oracle的面向对象的技术,可以通过创徏一个新的数据库对象cd在数据库中模仿其数据和操作,然后使用JPublisher{工L(fng)成自qJava beancR如果用这U方式,不但Java应用E序可以使用应用软g的对象模式,其他需要共享你的应用中的数据和操作的应用Y件也可以使用应用软g中的对象模式?BR>
  10、利用SQL完成数据库内的操?BR>
  我要向大家介l的最重要的经验是充分利用SQL的面向集合的Ҏ(gu)来解x据库处理需求,而不是用Java{过E化的编E语a?BR>
  如果~程人员要在一个表中查找许多行Q结果中的每个行都会(x)查找其他表中的数据,最后,~程人员创徏?jin)独立的UPDATE命o(h)来成批地更新W一个表中的数据。与此类似的d可以通过在set子句中用多列子查询而在一个UPDATE命o(h)中完成。当能够在单一的SQL命o(h)中完成Q务,何必要让数据在网上流来流ȝQ我用户认真学习(fn)如何最大限度地发挥SQL的功能?/SPAN>

阿成 2006-01-26 11:32 发表评论
]]>
oracle中的函数http://www.aygfsteel.com/ltc603/archive/2006/01/18/28537.html阿成阿成Wed, 18 Jan 2006 09:41:00 GMThttp://www.aygfsteel.com/ltc603/archive/2006/01/18/28537.htmlhttp://www.aygfsteel.com/ltc603/comments/28537.htmlhttp://www.aygfsteel.com/ltc603/archive/2006/01/18/28537.html#Feedback0http://www.aygfsteel.com/ltc603/comments/commentRss/28537.htmlhttp://www.aygfsteel.com/ltc603/services/trackbacks/28537.htmlOracle已经内徏?jin)许多函敎ͼ不同的函数有不同的作用和用法Q有的函数只能作用在一个记录行上,有的能够作用在多个记录行上,不同的函数可能处理不同的数据cd。常见的有两c,单行函数和分l函??/FONT>

单行函数Q?/FONT>

单行函数

分类 函数 功能 CZ
字符函数 LPAD(<c1>,<i>[,<c2>]) 在字W串c1的左Ҏ(gu)加字W串c2直到c1字符串的长度{于i?/SPAN>

SELECT  LPAD(‘Hello!?8,?? leftpad,RPAD(‘Hello!?8,?? rightpad

FROM DUAL;

 

RPAD(<c1>,<i>[,<c2>]) 在字W串c1的右Ҏ(gu)加字W串c2直到c1字符串的长度{于i?/SPAN>
LOWER(<c1>) 把字W串c1转换为小?/SPAN> SELECT LOWER(ename)  one,UPPER(ename) two, INITCAP(ename) FROM EMP;
UPPER(<c1>) 把字W串c1转换为大?/SPAN>
INITCAP(<c1>) ?/SPAN>c1字符串的每一个单词的W一个字母{换成大写字母
LENGTH(<c1>) q回字符?/SPAN>c1的长?/SPAN> SELECT LENGTH(‘How are you? FROM DUAL;
SUBSTR(<c1>,<i>[,<j>]) q回字符?/SPAN>c1中从W?/SPAN>i个位|开始的j个字W(向右Q。如果省?/SPAN>jQ则q回c1中从W?/SPAN>i个位|开始的所有字W。如?/SPAN>jQ则q回字符?/SPAN>c1中从W?/SPAN>i个位|开始的j个字W(向左Q?/SPAN> SELECT SUBSTR(‘Hello,World?1,5) FROM DUAL;
INSTR(<c1>,<c2>[,<i>[,<j>]]) ?/SPAN>c1中从位置i开始查?/SPAN>c2?/SPAN>c1中出W?/SPAN>jơ的位置Q?/SPAN>i可以(此时Q从c1的尾部开?/SPAN>)?/SPAN>

SELECT INSTR(‘Mississippi?’i?3,3) FROM DUAL; q回l果11?/SPAN>

SELECT INSTR(‘Mississippi?’i?-2,3) FROM DUAL; q回l果2?/SPAN>

 

LTRIM(<c1>,<c2>) ?/SPAN>c1前面开始去掉出现在c2的中M前导字符集?/SPAN> SELECT LTRIM(‘Mississippi?’Mis? FROM DUAL; q回l果’ppi’?BR>
SELECT RTRIM(‘Mississippi?’ip? FROM DUAL; q回l果’Mississ’?BR> 
RTRIM(<c1>,<c2>) ?/SPAN>c1后面开始去掉出现在c2的中M前导字符集?/SPAN>
数学函数 ABS(<n>) q回n的绝对?/SPAN> SELECT ABC(-2),ABS(2) FROM DUAL;
ROUND(<n1>,<n2>) ?/SPAN>n1的小数点后保?/SPAN>n2位(四舍五入Qƈq回。如?/SPAN>n2于Ӟn1舍入到小数点左边?/SPAN>

SELECT ROUND(12345.678,-2),

ROUND(12345.678,2)

 FROM  DUAL;

分别q回l果Q?/SPAN>12300Q?/SPAN>12345.68?/SPAN>

 

CEIL(<n>) ?/SPAN>n 向上取整Qƈq回?/SPAN>

SELECT CEIL(5.1),CEIL(-21.4) FROM  DUAL;

分别q回Q?/SPAN>6, -21?/SPAN>

 

FLOOR(<n>) ?/SPAN>n 向下取整Qƈq回?/SPAN>

SELECT FLOOR(5.1),FLOOR(-21.4) FROM  DUAL;

分别q回Q?/SPAN>5, -22?/SPAN>

 

MOD(<n1>,<n2>) q回n1?/SPAN>n2后的余数?/SPAN>

SELECT MOD(14,5),MOD(8,25),MOD(-64,7) FROM DUAL;

分别q回l果Q?/SPAN>4Q?/SPAN>0.5Q?/SPAN>-1?/SPAN>

 

SIGN(<n>)

W号函数Q?/SPAN>n>0Q返?/SPAN>1?/SPAN>

n<0Q返?/SPAN>-1?/SPAN>

n=0Q返?/SPAN>0?/SPAN>

 

SELECT SIGN(-2.3),SIGN(2.3),SIGN(0) FROM DUAL;
SQRT(<n>) q回n的^Ҏ(gu) SELECT SQRT(9) FROM DUAL;
TRUNC(<n1>,<n2>) 功能cMROUND函数。但不做四舍五入?/SPAN>

SELECT TRUNC(123.456,2),TRUNC(123.456,-1) FROM DUAL;

分别q回l果Q?/SPAN>123.45?/SPAN>120?/SPAN>

 

VSIZE(n) q回数字n的存储字?/SPAN> SELECT VSIZE(123) FROM DUAL;
日期函数(日期可以q行术q算) SYSDATE q回相同日期 SELECT SYSDATE FROM DUAL;
ADD_MONTHS(<d>,<i>) q回日期d 加上i个月后的新日?/SPAN>(i正可?/SPAN>)?/SPAN>

SELECT SYSDATE, ADD_MONTHS(SYSDATE,2),

ADD_MONTHS(SYSDATE,-2)

FROM DUAL;

 

LAST_DAY(<d>) q回日期d所在的月的最后一天?/SPAN> SELECT SYSDATE,LAST_DAY(SYSDATE) FROM DUAL
MONTHS_BETWEEN(<d1>,<d2>) q回日期d1?/SPAN>d2大多月数?/SPAN> SELECT MONTHS_BETWEEN(?9-Dec-1999??9-Mar-2000?FROM DUAL;
NEW_TIME(<d>,<tz1>,<tz2>) 时?/SPAN>tz1的时?/SPAN>dQ{换ؓ(f)时区tz2里的旉?/SPAN> SELECT SYSDATE,NEW_TIME(SYSDATE,’C(j)DT?’PDT? FROM DUAL;
NEXT_DAY(<d>,<dow>) q回日期d后的W一?/SPAN>dow?/SPAN>(dowQ?/SPAN>day of week) SELECT NEXT_DAY(SYSDATE,’Monday? FROM DUAL;
常用转换函数 TO_CHAR(<x>[,<fmt>[,<nlsparm>]]) ?/SPAN>x转换成字W串。(参数含义L(fng)ORACLE的联机帮助)(j) SELECT TO_CHAR(SYSDATE,’YYYY-MM-DD? FROM DUAL;
TO_NUMBER(<c>[,<fmt>[,<nlsparm>]]) 字W串c转换成数字。(参数含义L(fng)ORACLE的联机帮助)(j) SELECT TO_NUMBER(?23? FROM DUAL;

TO_DATE(<c>[,<fmt>[,<nlsparm>]])

(常见的日期格式请查联机帮助?/SPAN>)

字W串c转换成日期?/SPAN> SELECT TO_DATE(?9-Mar-99?’DD-Mon-YYYY? FROM DUAL;
两个重要函数

DECODE(<x>,<m1>,<r1>[,<m2>,

<r2?gt;][,<d>])

(DECODE函数功能非常强大Q请仔细玩味?/SPAN>)

 

一个功能非常强大的函数Q它使得SQL非常高效。它的功能类g一pd?/SPAN>if…then…else语句?/SPAN>

SELECT sid,serial#,username,

DECODE(command

,0,’None?/FONT>

,2,’Insert?/FONT>

,3,’Select?/FONT>

,6,’Update?/FONT>

,7,’Delete?/FONT>

,8,’Drop

,’Other? cmd

FROM V$SESSION WHERE type<>’BACKGROUND?

 

NVL(x1,x2)

注意ORACLE中的NULL|注意该函C?/SPAN>

 

如果x1为空q回x2Q否则返?/SPAN>x1?/SPAN> SELECT NVL(ename,?/SPAN>无姓?/SPAN>?  FROM  EMP;

分组函数

  AVG([{DISTINCT|ALL}]<n>) 求返回行的指定列的^均?/FONT>

SELECT AVG(sal),AVG(ALL sal),AVG(DISTINCT sal)

FROM SCOTT.EMP;

 

COUNT({*|[DISTINCT|ALL]}<x>) l计q回的行?/FONT>

SELECT COUNT (*), COUNT(DISTINCT mgr),COUNT(mgr)

FROM SCOTT.EMP

 

MAX([{DISTINCT|ALL}]<x>) 求返回行的指定列的最大?/FONT> SELECT MAX(sal),MAX(DISTINCT sal) FROM EMP;
MIN([{DISTINCT|ALL}]<x>) 求返回行的指定列的最?/FONT> SELECT MIN(sal),MIN(DISTINCT sal) FROM EMP;
STDDEV([{DISTINCT|ALL}]<x>) 求返回行的指定列的标准方?/FONT> SELECT STDDEV(sal),STDDEV(DISTINCT sal) FROM EMP;
SUM() 求返回行的指定列的和 SELECT SUM(sal) FROM EMP;
VARIANCE() 求返回行的指定列的差异?/FONT>  

 

 

     注意Q?/FONT>

A?SPAN style="FONT-WEIGHT: normal; FONT-SIZE: 9pt; FONT-STYLE: normal; FONT-FAMILY: Times New Roman; FONT-VARIANT: normal"> 分组函数不会(x)处理I|也不?x)返回空?/SPAN>Q?/FONT>

B?FONT size=2>  所有的分组函数既可以作用于指定列的所有gQ也可以只作用于指定列的差异列gQ?/FONT>

C?SPAN style="FONT-WEIGHT: normal; FONT-SIZE: 9pt; FONT-STYLE: normal; FONT-FAMILY: Times New Roman; FONT-VARIANT: normal"> 当指?/SPAN>ALL选项Ӟ分组函数作用于所有非I列D上。当指定DISTINCT选项Ӟ分组函数只作用于非空的且h不同列值的行上Q即Q重复列值的行只计算一行)(j)Q?/SPAN>



阿成 2006-01-18 17:41 发表评论
]]>
一些常用的SQL语句http://www.aygfsteel.com/ltc603/archive/2006/01/14/28030.html阿成阿成Sat, 14 Jan 2006 07:27:00 GMThttp://www.aygfsteel.com/ltc603/archive/2006/01/14/28030.htmlhttp://www.aygfsteel.com/ltc603/comments/28030.htmlhttp://www.aygfsteel.com/ltc603/archive/2006/01/14/28030.html#Feedback0http://www.aygfsteel.com/ltc603/comments/commentRss/28030.htmlhttp://www.aygfsteel.com/ltc603/services/trackbacks/28030.html一.select * from table where talbe.time between to_date('2006-1-15','yyyy-mm-dd') and to_date('2008-1-15','yyyy-mm-dd') order by talbe.time;

?select * from table where talbe.time between trunc(date(formDate) )and trunc(date(toDate) )order by talbe.time;

查询匚w
select * from table where lower(table.username) like % + username.toLower()%;

?如何获得前N条记?br />

1. ORACLE
SELECT * FROM TABLE1 WHERE ROWNUM<=N

2. INFORMIX
SELECT FIRST N * FROM TABLE1 where 1=1

3. DB2
SELECT * ROW_NUMBER() OVER(ORDER BY COL1 DESC) AS ROWNUM WHERE ROWNUM<=N
或?br />SELECT COLUMN FROM TABLE where 1=1 FETCH FIRST N ROWS ONLY

4. SQL SERVER
SELECT TOP N * FROM TABLE1 where 1=1
or
SET ROWCOUNT N SELECT * FROM TABLE1 where 1=1 SET ROWCOUNT N1

5. SYBASE
SET ROWCOUNT N SELECT * FROM TABLE1 where 1=1 SET ROWCOUNT N1

6. MYSQL
SELECT * FROM TABLE1 where 1=1 LIMIT N

7. FOXPRO
SELECT * TOP N FROM TABLE ORDER BY COLUMN

8. ACCESS
SELECT TOP N * FROM TABLE1 where 1=1



阿成 2006-01-14 15:27 发表评论
]]>
վ֩ģ壺 | | | | ̩| | ɽ| | Ͻ| | ˳| Ͽ| | | ˮ| Դ| ɽ| | »| | ʹ| °| | | | | ϳ| | «| | ױ| | | | | | | | ĵ| | |