??xml version="1.0" encoding="utf-8" standalone="yes"?>久久午夜视频,亚洲欧美一区二区在线观看,在线视频精品http://www.aygfsteel.com/hsith/archive/2006/04/30/44139.html学二的猫学二的猫Sun, 30 Apr 2006 02:24:00 GMThttp://www.aygfsteel.com/hsith/archive/2006/04/30/44139.htmlhttp://www.aygfsteel.com/hsith/comments/44139.htmlhttp://www.aygfsteel.com/hsith/archive/2006/04/30/44139.html#Feedback3http://www.aygfsteel.com/hsith/comments/commentRss/44139.htmlhttp://www.aygfsteel.com/hsith/services/trackbacks/44139.html阅读全文

学二的猫 2006-04-30 10:24 发表评论
]]>
L数据库中临时表的使用http://www.aygfsteel.com/hsith/archive/2006/04/25/43000.html学二的猫学二的猫Tue, 25 Apr 2006 05:46:00 GMThttp://www.aygfsteel.com/hsith/archive/2006/04/25/43000.htmlhttp://www.aygfsteel.com/hsith/comments/43000.htmlhttp://www.aygfsteel.com/hsith/archive/2006/04/25/43000.html#Feedback0http://www.aygfsteel.com/hsith/comments/commentRss/43000.htmlhttp://www.aygfsteel.com/hsith/services/trackbacks/43000.html L数据库中临时表的使用
 
MS SQLSERVER
SQL Server 支持临时表。时表是那些名称以井?(#) 开头的表。如果当用户断开q接时没有除M时表QSQL Server 自动除M时表。时表不存储在当前数据库内Q而是存储在系l数据库 tempdb 内?
临时表有两种cdQ?
本地临时?/b>Q本C时表的名UC单个数字W号 (#) 打头Q它们仅对当前的用户q接是可见的Q当用户?Microsoft SQL Server 2000 实例断开q接时被删除?
全局临时?/b>Q全局临时表的名称以数学符?(##) 打头Q创建后对Q何用户都是可见的。如果在创徏全局临时表的q接断开前没有显式地除去q些表,那么只要所有其它Q务停止引用它们,q些表即被除厅R当创徏全局临时表的q接断开后,新的d不能再引用它们。当前的语句一执行完,d与表之间的关联即被除去;因此通常情况下,只要创徏全局临时表的q接断开Q全局临时表即被除厅R?
例如Q如果创建名?employees 的表Q则M人只要在数据库中有用该表的安全权限可以用该表,除非它已删除。如果创建名?#employees 的本C时表Q只有您能对该表执行操作且在断开q接时该表删除。如果创建名?##employees 的全局临时表,数据表中的Q何用户均可对该表执行操作。如果该表在您创建后没有其他用户使用Q则当您断开q接时该表删除。如果该表在您创建后有其他用户用,?SQL Server在所有用h开q接后删除该表?
现在Q时表的许多传l用途可由具?table 数据cd的变量替换?
 
ORACLE
Oracle支持临时表。时表用来保存事务或会话期间的中间l果。在临时表中保存的数据只有对当前会话是可见的QQ何会话都不能看到其他会话的数据,即在当前会话COMMIT数据以后也是不可见的。多用户q行不是问题Q一个会话从来不d另一个会话用时表。即佉K定时表Q一个会话也不会d其他会话使用临时表。时表比正常表产生的REDO得多,然而,׃临时表必M生包含数据的UNDO信息Q所以会产生一定数量的REDO日志?
临时表将从用户时表I间的的目前日志中分配空_或者如果从有定义权的程序中讉KQ将使用E序所有者的临时表空间。全局临时表实际上只是表本w的模板。创Z时表的行Z包括存储I间的分配,也不包括INITIAL的分配。因此,在运行时当一个会话首先将数据攑ֈ临时表中Ӟq时创个会话的临时Dc由于每个会话获取自q临时D,每个用户可能在不同的表空间中Z时表分配I间。USER1的default临时表空间ؓTEMP1Q他的时表从TEMP1中分配空_USER2的default临时表空间ؓTEMP2Q他的时表从TEMP2中分配空间?
临时表在每个数据库中只需创徏一ơ,不必在每个存储过E中创徏。时表L存在的,除非手动的删除他。时表作ؓ对象存在数据字典中,q且L保持为空Q直到有会话在其中放入数据。Oracle允许创徏Z临时表的视图和存储过E?
临时表可以是以会话ؓ基础的,也可以是以事务ؓ基础的。ON COMMIT PRESERVE ROWS子句使时表成ؓZ会话的模式。行留在此表中Q直C话断开或通过DELETE或TRUNCATE从物理上删除q些行。ON COMMIT DELETE ROWS子句使时表成ؓZ事务的模式。当会话提交后,行消失。这个时表的自动清除过E不会有额外的开销?
在oracle中,应用E序需要的临时表应该在E序安装时创建,而不是在E序q行时创建。(q是与ms sqlserver或sybase的用的不同Q?
在Q何数据库中,临时表的一个缺ҎQ事实上优化器在临时表中没有真正的统计功能。然而,在oracle中,一pd较好的统计猜可以通过DBMS_STATS包在临时表中讄?
 
DB2
可?DECLARE GLOBAL TEMPORARY TABLE 语句来定义时表。DB2的时表是基于会话的Q且在会话之间是隔离的。当会话l束Ӟ临时表的数据被删除,临时表被隐式怸。对临时表的定义不会在SYSCAT.TABLES中出?
下面是定义时表的一个示例:
   DECLARE GLOBAL TEMPORARY TABLE gbl_temp

      LIKE empltabl

      ON COMMIT DELETE ROWS

      NOT LOGGED

      IN usr_tbsp

此语句创Z个名?gbl_temp 的用户时表。定义此用户临时?所使用的列的名U和说明?empltabl 的列的名U和说明完全相同。隐式定?只包括列名、数据类型、可为空Ҏ和列缺省值属性。未定义所有其他列属性,包括唯一U束、外部关键字U束、触发器和烦引。执?COMMIT 操作Ӟ 若未对该表打开 WITH HOLD 游标Q则该表中的所有数据都被删除。不记录 对用户时表所作的更改。用户时表被放在指定的用户临时表空间中。此表空间必d在,否则此表的声明将p|?
户定义时表不支持:
  • LOB cd的列Q或Z LOB 的单值类型列Q?
  • 用户定义cd?
  • LONG VARCHAR ?
DATALINK ?/font>

学二的猫 2006-04-25 13:46 发表评论
]]>
NC-->SQL开发手?2)http://www.aygfsteel.com/hsith/archive/2006/04/23/42566.html学二的猫学二的猫Sat, 22 Apr 2006 16:41:00 GMThttp://www.aygfsteel.com/hsith/archive/2006/04/23/42566.htmlhttp://www.aygfsteel.com/hsith/comments/42566.htmlhttp://www.aygfsteel.com/hsith/archive/2006/04/23/42566.html#Feedback1http://www.aygfsteel.com/hsith/comments/commentRss/42566.htmlhttp://www.aygfsteel.com/hsith/services/trackbacks/42566.html
三、多数据库的考虑

1.        字符串连接必ȝ?/span>||”符P不用?/span>+”。注意:?/span>Oracle中一?/span>nullg?/span>nullD接,l果为非null|?/span>DB2?/span>SqlServer中相反。?/span>nvl?/span>null转换?/span>’’?br />
2.        通配W不能用?/span>[a-c]%?/font>q种形式Q应写成如:select * from table_name where col1 like ‘[a]%?OR col1 like ‘[b]%?OR col1 like ‘[c]%??br />
3.        在对charcd比较?/span>,要对列加?/span>rtrim()函数,否则?/span>Oracle中不会得到正结果。例如若test表中的字D?/span>f1的长度ؓ10Q内有一个gؓ?/span>aa?/font>Q的U录Q则语句select len(f1) from test;?/span>SqlServer的执行结果ؓ2Q在Oracle的执行结果ؓ10?br />
4.         ?/span>Case when语句中只能出?/span> =?/span>>=?/span><= 以及is nullq算W,不能出现 <?/span>>?/span><>?/span>!=、以?/span>is not nullq算W?/span>否则?/span>Oracle?/span>decode函数无法表达?br />   当必M?/font> <, >, != Q?/span>is not nullӞ采用如下变通方法:
          1Q?/span> !=Ӟ例如
   case  when  A!=B  then  e,
        可改?/span>Q?/span>  case  A=b  then  e1  else  e   (间接实现
A!=B)
          2Q?/span> < Ӟ例如
   case  when  A<B  then  e,
        可改?/span>Q?/span>  case  A<=b  then  case A=B  then  e1  else  e  (间接实现
A<B)
        ?/span>    case  A>=b  then  e1  else  e    (间接实现
A<B)
          3Q?/span> > Ӟ例如
   case  when  A>B  then  e, 
        可改?/span>Q?/span>  case  A>=b  then  case A=B  then  e1  else  e   (间接实现
A>B)
        ?/span>    case  A<=b  then  e1  else  e    (间接实现
A>B)
          4Q?/span>is  not  null  Ӟ例如
  case  when  A  is  not  null  then  e,
        可改为:  case  A   is  null  then  e1   else   e  (间接实现
A  is  not  null)
特别说明Q当执行大数据量的操作时Q?/span>sql  Server  ?/span> case when 的执行效率极低,甚至可能会死机,因此希望大家量不要使用case when
?br />
5.        参与左连接的列不能ؓ帔R。例如,不允许如下语句: select * from t1 left outer join t2 on t1.f1='A'
?br />
6.        左连接的写法必须带?/span>outer”关键字。例如: select f1 from t1 left outer t2 on t1.f1 = t2.f1Q而不是: select f1 from t1 left t2 on t1.f1 = t2.f1
?br />
7.        只能使用以下函数Q如要用新的函数必ȝ报,审批后才能用。函敎ͼcoalesce, cast, len, left, replace, right, substring, lower, upper, ltrim, rtrim, abs, acos, asin, atan, cos, ceiling, exp, floor, log, power, round, sign,sin, square, sqrt, tan, count, max, min, sum, avg
?br />
8.        substring函数中v始位|ؓ1
Q表CZ头开始?br />
9.        Like
的一边必L字符Ԍ只能在一边出现表列?br />
10.    ?/span>SQL语句中不能直接?/span>null,必须?/span>null指明cd,在判断某gؓnull
旉外?br />
11.    对于一?/span>char/varchar的字D늚|即?/span>0,1Q?/span>2?/font>{|也必表达ؓ?chmetcnv tcsc="0" numbertype="1" negative="False" hasspace="False" sourcevalue="0" unitname="? w:st="on">0??chmetcnv tcsc="0" numbertype="1" negative="False" hasspace="False" sourcevalue="1" unitname="? w:st="on">1??chmetcnv tcsc="0" numbertype="1" negative="False" hasspace="False" sourcevalue="2" unitname="? w:st="on">2’…?br />
12.    ?/span>cast?/span>convert语句中只支持到字W型、日期型和数字型的{换,且日期型只支?/span>UFDate的格式,?/span>
’YYYY?‘MM?‘DD’?br />
13.    insert 语句不通过SQL译器,?/span>insert中不允许使用select
?br />
14.    不能通过?/span>percent  n 限制查询l果集的记录敎ͼ也不能?/span> select  top n
的语?br />
15.     outer join 前后的表不能互相q接,
不能重复q接Q即不能出现以下形式的语句:
           a  left outer join c on a.fda=c.fdsf  left outer join b on b.fdsa=c.fsdff  (该语句中?/span>a?/span>b同时q接C?/span>c?/span>
)
             a  left outer join b on a.fda=b.fdsf  left outer join a on b.fdsa=a.fsdff  (该语句中?/span>a?/span>b互联
)

16.    join ?/span>on 必须严格匚wQ不允许出现没有on?/span>join
?br />
17.   
join…on
后面慎用 or,如果用到Q请?/span>or的范围用( )括v?br />
18.   
如果某个表有别名Q则必须引用它的别名Q不许引用它原来的表?br />
19.    
在子查询中前后必d上括?br />
20.   order by 后的列名?/span>select
后有多个相同的列Q例如不能写为:
     select a, b, a, a  from fdsf  order by a  (a ?span lang="EN-US">select后出C多次)
可以l?span lang="EN-US">a 加别?br />
21.    不能使用select into 的格?br />
22.    l某个字W型的列赋值时Q如果其值含有单引号Q例如:set  col=’fsdf’fdsfdsf’sdf’?
有两U解x?
      1
Q将单引号写?span lang="EN-US">’??/font>  set  col=’fsdf’’fdsfdsf’’sdf?br />
        2Q通过set的方式赋|卻Iset  col= Q??br />           然后Q?/font>setString(8,?’fsdf’fdsfdsf’sdf’?


学二的猫 2006-04-23 00:41 发表评论
]]>
NC-->SQL开发手?1)http://www.aygfsteel.com/hsith/archive/2006/04/23/42562.html学二的猫学二的猫Sat, 22 Apr 2006 16:22:00 GMThttp://www.aygfsteel.com/hsith/archive/2006/04/23/42562.htmlhttp://www.aygfsteel.com/hsith/comments/42562.htmlhttp://www.aygfsteel.com/hsith/archive/2006/04/23/42562.html#Feedback3http://www.aygfsteel.com/hsith/comments/commentRss/42562.htmlhttp://www.aygfsteel.com/hsith/services/trackbacks/42562.html 本手册是用友NC开发过E中SQL使用的经验ȝ和强制规范,希望对大家的SQL语句的书写和数据库的开发能够给与一定的借鉴?br />
一、概q?br />
本手册侧重于
SQL 开发书写过E中的规范问题。尽可能的在ȝ以往开发过E中形成?/span> SQL 开发方法,q对在软gl护?/span> SQL 语句跨多数据库、操作系l适配中出现问题的解决办法的基上,提出的一?/span> SQL 开发规范?br />
二、书写风?br />
1. SQL 语句全部使用写Q除?/span> SQL 中用引号括v来的帔R外,请用单字节?br />
2.  引用字符时用单引受如Q?/span> update testable set idcol=’abcd?/font> ?/span>

3. 
量使用 prepareStatement Q利用预处理功能。少?/span> createStatement ?br />
4. ?/font> D SQL 的时候,使用 StringBuffer, 不要?/span> String+String 的方式?br />
5.  严禁使用 select * …? 形式的语句,要指?/span> select
的具体字Dc?br />
6.  严禁使用 insert into table value(?????) Q要指出具体要赋值的字段?/span>

7. 
SQL
语句包含多表q接Ӟ必须Ҏ个表命名别名Q对每个字段的用都要带上别名?br />
8. ?/span> SQL 语句含有q算W时Q运符需与其他字W串用空格区?/span> ( 或者用括号分开 ) 。否则容易导致以下类似问题。在语句 select a–b from table 中, a Q?/span> b 均ؓ变量。拼写该语句Ӟ如果 a=6 Q?/span> b= -3 Q则语句变ؓ select 6--3 from table ?/span> -- 变ؓ Sql
的注释,语句报错?br />
9. 避免隐含的类型{换。例如在 where 子句?/span> numeric 型和 int 型的列的比较或相加?br />
10.  d是指通过 JDBC d的数据格式,保存是指保存?/span> VO 中的数据格式Q插入或者更新是?/span> insert 或?/span> update 语句中的数据格式?br />     a)   整型字段Q读取时Ҏ字段讄保存?/span> Integer 或?/span> Long ?br />     b)   数字型字D:d?/span> BigDecimal Qƈ保存?/span> UFDouble Q插入或者更新时?/span> BigDecimal ?br />     c)   字符型字D:d?/span> String Qƈ保存?/span> String Q插入或者更Cؓ String ?br />     d)   布尔型字D:d?/span> String(‘Y?OR ‘N? Qƈ保存?/span> UFBoolean Q插入或者更新时?/span> String(‘Y?OR ‘N? ?br />     e)   旉字段Q读取ؓ String Qƈ保存?/span> UFDateTime Q插入或者更新时的时间格式由中间件统一处理Q有单独需求的要申请后才能军_?br />   
11. 
量不用右q接?br />
12.  在?/span> UNION ?/span> UNION  ALL 的前后的两个 SQL 需要加 ( )
?/font>



学二的猫 2006-04-23 00:22 发表评论
]]>
վ֩ģ壺 ۩| | | | Է| ʯ| ͤ| ¬| | | | Ͼ| | | | | | ɽ| ̫| ˫| ̨| | | | ĵ| ǡ| | | | Ů| ػʵ| | ɽ| ղ| ƽ| | | | Ϫ| ʲ| ڳ|