??xml version="1.0" encoding="utf-8" standalone="yes"?>www.亚洲一区,亚洲欧洲无卡二区视頻,亚洲男人天堂2020http://www.tkk7.com/tbest/articles/361660.htmlliujgliujgThu, 20 Oct 2011 08:28:00 GMThttp://www.tkk7.com/tbest/articles/361660.htmlhttp://www.tkk7.com/tbest/comments/361660.htmlhttp://www.tkk7.com/tbest/articles/361660.html#Feedback0http://www.tkk7.com/tbest/comments/commentRss/361660.htmlhttp://www.tkk7.com/tbest/services/trackbacks/361660.html

在windows中创Z个名?#8220;NLS_LANG”的系l环境变量,讄其gؓ“SIMPLIFIED CHINESE_CHINA.ZHS16GBK”Q然后重新启?pl/sql developerQ这h索出来的中文内容׃会是q了。如果想转换为UTF8字符集,可以赋予“NLS_LANG”?“AMERICAN_AMERICA.UTF8”Q然后重新启?pl/sql developer。其它字W集讄同上?/span>
NLS_LANG格式Q?br />
NLS_LANG = language_territory.charset
有三个组成部分(语言、地域和字符集)Q每个成分控制了NLS子集的特性。其中:language 指定服务器消息的语言。territory 指定服务器的日期和数字格式。charset 指定字符集?br />

如何讄客户端字W集与服务器端字W集一?

q行REGEDIT,W一步选HKEY_LOCAL_MACHINE,W二步选择SOFTWAREQ第三步选择 OracleQ第四步选择 NLS_LANGQ键入与服务器端相同的字W集?/font>

例如:AMERICAN_AMERICA.UTF8或者SIMPLIFIED CHINESE_CHINA.ZHS16GBK

oracle 10g装上?Z个表写入中文数据,发现通过工具PL/SQL Developer中文不能正常昄.

要正常显CZ?必d服务器和客户端编码一致才行。于是检查:

1.查服务器~码:

执行SQL语法:

select * from v$nls_parameters; developer 中文字段昄q( 转蝲)" border=0 alt="PL/SQL Developer q" src="http://hiphotos.baidu.com/%CE%D2%BA%DC%B0%AE%D5%C5%B2%AE%C2%D7/pic/item/35bff655c4e32667d00906ee.jpg" width=580 height=300 real_src="http://xok.la/wp-content/uploads/2008/11/nlslang_0.gif">

也可以参?home/oracle/.bash_profile 相关语言讄.
可以看到我的相关讄?

LANG=zh_CN.GBK
NLS_LANG="SIMPLIFIED CHINESE_CHINA.ZHS16GBK"

2.讄本地客户端编?

q入我的电脑,属?高,环境变量,d2?

LANG=zh_CN.GBK
NLS_LANG="SIMPLIFIED CHINESE_CHINA.ZHS16GBK"

如图:

developer 中文字段昄q( 转蝲)" border=0 alt="PL/SQL Developer q" src="http://hiphotos.baidu.com/%CE%D2%BA%DC%B0%AE%D5%C5%B2%AE%C2%D7/pic/item/6ad2b95945a407e19d8204ee.jpg" real_src="http://xok.la/wp-content/uploads/2008/11/nlslang_1.gif">

3.重新q接sqlplus,查看数据:

developer 中文字段昄q( 转蝲)" border=0 alt="PL/SQL Developer q" src="http://hiphotos.baidu.com/%CE%D2%BA%DC%B0%AE%D5%C5%B2%AE%C2%D7/pic/item/ed9598df0a2f6567cdbf1aee.jpg" real_src="http://xok.la/wp-content/uploads/2008/11/nlslang_2.gif">

昄正常.

4.PL/SQL Developer讄q新连?

在pl/sql developer的菜?>tools->preferences->user interface->fonts 中修改ؓ中文字体

重新q接,如图:

昄正常.OK!

developer 中文字段昄q( 转蝲)" border=0 alt="PL/SQL Developer q" src="http://hiphotos.baidu.com/%CE%D2%BA%DC%B0%AE%D5%C5%B2%AE%C2%D7/pic/item/a01efa595412d8be810a18ee.jpg" real_src="http://xok.la/wp-content/uploads/2008/11/nlslang_3.gif">

FromQ?a >http://apps.hi.baidu.com/share/detail/19972908



liujg 2011-10-20 16:28 发表评论
]]>
(?Oracle Sequence Cache 参数说明http://www.tkk7.com/tbest/articles/343804.htmlliujgliujgMon, 31 Jan 2011 03:49:00 GMThttp://www.tkk7.com/tbest/articles/343804.htmlhttp://www.tkk7.com/tbest/comments/343804.htmlhttp://www.tkk7.com/tbest/articles/343804.html#Feedback0http://www.tkk7.com/tbest/comments/commentRss/343804.htmlhttp://www.tkk7.com/tbest/services/trackbacks/343804.htmlOracle Sequence Cache 参数说明 收藏
 

       公司上线一套RAC pȝ?Aston对Sequence ?Cache 参数表示xQ徏议ƈ发大的系l对Cache讄大一炏V?q样可以提高性能?和Aston 讨论了一下?又从|上查了一下?

 

RACLE SEQUENCE 介绍
http://blog.csdn.net/tianlesoftware/archive/2009/10/30/4745039.aspx

 

之前整理的一文章?刚才看了一下,也是从网上{的?那是q是写blog初期的作品?2009q?0月䆾的?转眼一q_写Blog 也比以前成熟了很多?br />  

一. 理论知识先看一个创建Sequence的语句:
SQL> create sequence seq_tmp

  2  increment by 1

  3  start with 1

  4  nomaxvalue

  5  nocycle

  6  ;

序列已创建?br />  

相关参数说明Q?br />       INCREMENT BY 1 -- 每次加几?

      START WITH 1 -- ?开始计?

      NOMAXvalue -- 不设|最大?

      NOCYCLE -- 一直篏加,不@?

      CACHE 10;  --讄~存cache个序?/p>

      CURRVAL=q回 sequence的当前?

      NEXTVAL=增加sequence的|然后q回 sequence ?/p>

 

更多信息Q参考Oracle 联机文Q?br /> CREATE SEQUENCE

http://download.oracle.com/docs/cd/E11882_01/server.112/e17118/statements_6015.htm#SQLRF01314

 

 

q里对Cache 参数做一个说明:
      如果指定CACHE|ORACLE可以预先在内存里面攄一些sequenceQ这样存取的快些。cache里面的取完后Qoracle自动再取一l到cache?使用cache或许会蟩P 比如我们在创建序列时指定Cache ?00. 在某一个时刻,序列使用C80. 而在q个时刻Q数据库H然不正常down掉(shutdown abort),cache中的sequence׃丢失.  在下ơ启动分配cacheӞ数据库会?01 开始,在分?00个缓存。即101--200. 而之前分?00个中?0-100q?0个因为意外宕丢失?q种情况下就会出现蟩L现象。我们可以在create sequence的时候用nocache防止q种情况?但是nocache 的性能较差?如果指定cache而没有设定cache|默认cache?0个?q个默认值对于大多数情况下都是够用的?除非那种每秒上万ơ的select?所以具体情况要具体对待?对于哪些大ƈ发的pȝQ最好设|在100以上。像Ud的BOSSpȝQ以1000为单位?

 

CACHE Specify how many values of the sequence the database preallocates and keeps in memory for faster access. This integer value can have 28 or fewer digits. The minimum value for this parameter is 2. For sequences that cycle, this value must be less than the number of values in the cycle. You cannot cache more values than will fit in a given cycle of sequence numbers. Therefore, the maximum value allowed for CACHE must be less than the value determined by the following formula:

(CEIL (MAXVALUE - MINVALUE)) / ABS (INCREMENT)

If a system failure occurs, then all cached sequence values that have not been used in committed DML statements are lost. The potential number of lost values is equal to the value of the CACHE parameter.

Note:

Oracle recommends using the CACHE setting to enhance performance if you are using sequences in an Oracle Real Application Clusters environment.

NOCACHE  Specify NOCACHE to indicate that values of the sequence are not preallocated. If you omit both CACHE and NOCACHE, then the database caches 20 sequence numbers by default.

 

 

关于Order 参数的说明:
 

       序参敎ͼoracle默认是NOORDERQ如果设|ؓORDERQ在单实例环境没有媄响,在RAC环境此时Q多实例实际~存相同的序列,此时在多个实例ƈ发取该序列的时候,会有短暂的资源竞争来在多实例之间q行同步。因ơ性能相比noorder要差Q所以RAC环境非必ȝ情况下不要用ORDERQ尤其要避免NOCACHE   ORDERl合?/p>

 

ORDER Specify ORDER to guarantee that sequence numbers are generated in order of request. This clause is useful if you are using the sequence numbers as timestamps. Guaranteeing order is usually not important for sequences used to generate primary keys.

ORDER is necessary only to guarantee ordered generation if you are using Oracle Real Application Clusters. If you are using exclusive mode, then sequence numbers are always generated in order.

NOORDER  Specify NOORDER if you do not want to guarantee sequence numbers are generated in order of request. This is the default.

 

 

查看user_sequences 表的l构Q?br /> SQL> desc user_sequences;

 名称                                      是否为空? cd
 ----------------------------------------- -------- ---------------

 SEQUENCE_NAME                             NOT NULL VARCHAR2(30)

 MIN_VALUE                                          NUMBER

 MAX_VALUE                                          NUMBER

 INCREMENT_BY                              NOT NULL NUMBER

 CYCLE_FLAG                                         VARCHAR2(1)

 ORDER_FLAG                                         VARCHAR2(1)

 CACHE_SIZE                                NOT NULL NUMBER

 LAST_NUMBER                               NOT NULL NUMBER

 

 

查看刚才创徏的序列seq_tmp 的|
SQL> select * from user_sequences where sequence_name='SEQ_TMP';

SEQUENCE_N  MIN_VALUE MAX_VALUE INCREMENT_BY C O CACHE_SIZE LAST_NUMBER

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

SEQ_TMP             1 1.0000E+28            1 N N         20          21

 

q里有个CACHE_SIZE的倹{?我们在创建sequence的时候,启用了cacheQ但是没有给它倹{?所以这里的cache_size 是pȝ的模式倹{??0个?

 

 

取下一个sequence的|
SQL> select seq_tmp.nextval from dual;

   NEXTVAL

----------

         1

SQL> select seq_tmp.nextval from dual;

   NEXTVAL

----------

         2

 

 

查看当前sequence的|
SQL> select seq_tmp.currval from dual;

 

   CURRVAL

----------

 

? 实验一个网友RAC pȝ上的试时结果:
nocacheQ?nbsp;              2100s

cache Q?000Q          55s

差别很明显?/p>

 

 

试一Q?br /> SQL> create sequence seq_1 nocache;

序列已创建?/p>

SQL> set timing on;

SQL> declare

  2  x number;

  3  begin

  4  for i in 1 .. 10000 loop

  5  select seq_1.nextval into x from dual;

  6  end loop;

  7  end;

  8  /

PL/SQL q程已成功完成?/p>

 

已用旉:  00: 00: 02.26

 

试二:
SQL> create sequence seq_2 cache 20;

序列已创建?/p>

已用旉:  00: 00: 00.01

SQL> declare

  2  x number;

  3  begin

  4  for i in 1 .. 10000 loop

  5  select seq_2.nextval into x from dual;

  6  end loop;

  7  end;

  8  /

PL/SQL q程已成功完成?/p>

 

已用旉:  00: 00: 00.46

 

试三:
SQL> create sequence seq_3 cache 100;

 

序列已创建?/p>

 

已用旉:  00: 00: 00.05

SQL> declare

  2  x number;

  3  begin

  4  for i in 1 .. 10000 loop

  5  select seq_3.nextval into x from dual;

  6  end loop;

  7  end;

  8  /

 

PL/SQL q程已成功完成?/p>

 

已用旉:  00: 00: 00.37

 

 

试四:
SQL> create sequence seq_4 cache 1000;

序列已创建?/p>

已用旉:  00: 00: 00.04

SQL> declare

  2  x number;

  3  begin

  4  for i in 1 .. 40000 loop

  5  select seq_4.nextval into x from dual;

  6  end loop;

  7  end;

  8  /

 

PL/SQL q程已成功完成?/p>

 

已用旉:  00: 00: 01.31

SQL> declare

  2  x number;

  3  begin

  4  for i in 1 .. 40000 loop

  5  select seq_1.nextval into x from dual;

  6  end loop;

  7  end;

  8  /

 

PL/SQL q程已成功完成?/p>

 

已用旉:  00: 00: 09.33

SQL>

 

 

 

结Q?

 

在自q本本上测试的QOracle 11gR2.  单Instance数据库单会话循环不间断取1-4万个倹{?/p>

nocacheQ?nbsp;            2.26s          10000   

cache:20              0.46s          10000

cache:100             0.37s          10000

cache:1000            1.31s          40000

nocacheQ?nbsp;            9.33s         40000

 

基本上cache 大于20的时候性能基本可以接受Qnocache的时候性能实很差Q?/p>

 

本文来自CSDN博客Q{载请标明出处Qhttp://blog.csdn.net/tianlesoftware/archive/2010/11/08/5995051.aspx



liujg 2011-01-31 11:49 发表评论
]]>
(?http://www.tkk7.com/tbest/articles/339896.htmlliujgliujgMon, 06 Dec 2010 06:39:00 GMThttp://www.tkk7.com/tbest/articles/339896.htmlhttp://www.tkk7.com/tbest/comments/339896.htmlhttp://www.tkk7.com/tbest/articles/339896.html#Feedback0http://www.tkk7.com/tbest/comments/commentRss/339896.htmlhttp://www.tkk7.com/tbest/services/trackbacks/339896.html 

--如何在oracle中导入dmp数据库文Ӟ
 2006/2/16 zhanghua first create                            

     Oracle数据导入导出imp/expq当于oracle数据q原与备份。exp命o可以把数据从q程数据库服务器导出到本地的dmp文gQimp命o可以把dmp文g从本地导入到q处的数据库服务器中?nbsp;利用q个功能可以构徏两个相同的数据库Q一个用来测试,一个用来正式用?br />  
执行环境Q可以在SQLPLUS.EXE或者DOSQ命令行Q中执行Q?br />  DOS中可以执行时׃ 在oracle 8i ?nbsp; 安装目录\ora81\BIN被设|ؓ全局路径Q?br />  该目录下有EXP.EXE与IMP.EXE文g被用来执行导入导出?br />  oracle用java~写QSQLPLUS.EXE、EXP.EXE、IMP.EXEq两个文件有可能是被包装后的cL件?br />  SQLPLUS.EXE调用EXP.EXE、IMP.EXE所包裹的类Q完成导入导出功能?br />  
下面介绍的是导入导出的实例?br /> 数据导出Q?br />  1 数据库TEST完全导出,用户名system 密码manager 导出到D:\daochu.dmp?br />    exp system/manager@TEST file=d:\daochu.dmp full=y
 2 数据库中system用户与sys用户的表导出
   exp system/manager@TEST file=d:\daochu.dmp owner=(system,sys)
 3 数据库中的表inner_notify、notify_staff_relat导出
    exp aichannel/aichannel@TESTDB2 file= d:\data\newsmgnt.dmp tables=(inner_notify,notify_staff_relat) 

 4 数据库中的表table1中的字段filed1?00"打头的数据导?br />    exp system/manager@TEST file=d:\daochu.dmp tables=(table1) query=\" where filed1 like '00%'\"
 
  上面是常用的导出Q对于压~,既用winzip把dmp文g可以很好的压~?br />   也可以在上面命o后面 加上 compress=y 来实现?/p>

数据的导?br />  1 D:\daochu.dmp 中的数据导入 TEST数据库中?br />    imp system/manager@TEST  file=d:\daochu.dmp
   imp aichannel/aichannel@HUST full=y  file=file= d:\data\newsmgnt.dmp ignore=y
   上面可能有点问题Q因为有的表已经存在Q然后它报错,对该表就不进行导入?br />    在后面加?ignore=y 可以了?br />  2 d:\daochu.dmp中的表table1 导入
 imp system/manager@TEST  file=d:\daochu.dmp  tables=(table1)
 
 基本上上面的导入导出够用了。不情况要先是表d删除Q然后导入?br />  
注意Q?br />  操作者要有够的权限Q权限不够它会提C?br />  数据库时可以q上的。可以用tnsping TEST 来获得数据库TEST能否q上?/p>

附录一Q?br />  l用户增加导入数据权限的操作
 W一,启动sql*puls
 W二Q以system/manager登陆
 W三Qcreate user 用户?IDENTIFIED BY 密码 Q如果已l创用户Q这步可以省略)
 W四QGRANT CREATE USER,DROP USER,ALTER USER ,CREATE ANY VIEW ,
   DROP ANY VIEW,EXP_FULL_DATABASE,IMP_FULL_DATABASE,
      DBA,CONNECT,RESOURCE,CREATE SESSION  TO 用户名字
 W五, q行-cmd-q入dmp文g所在的目录,
      imp userid=system/manager full=y file=*.dmp
      或?imp userid=system/manager full=y file=filename.dmp

 执行CZ:
 F:\Work\Oracle_Data\backup>imp userid=test/test full=y file=inner_notify.dmp

屏幕昄
Import: Release 8.1.7.0.0 - Production on 星期?2?16 16:50:05 2006
(c) Copyright 2000 Oracle Corporation.  All rights reserved.

q接? Oracle8i Enterprise Edition Release 8.1.7.0.0 - Production
With the Partitioning option
JServer Release 8.1.7.0.0 - Production

l由常规路径导出由EXPORT:V08.01.07创徏的文?br /> 已经完成ZHS16GBK字符集和ZHS16GBK NCHAR 字符集中的导?br /> 导出服务器用UTF8 NCHAR 字符?(可能的ncharset转换)
. 正在AICHANNEL的对象导入到 AICHANNEL
. . 正在导入?nbsp;                 "INNER_NOTIFY"          4行被导入
准备启用U束条g...
成功l止导入Q但出现警告?/p>

 
附录二:
 Oracle 不允许直接改变表的拥有? 利用Export/Import可以辑ֈq一目的.
  先徏立import9.par,
  然后Q用时命o如下Qimp parfile=/filepath/import9.par
  ?import9.par 内容如下Q?br />         FROMUSER=TGPMS       
        TOUSER=TGPMS2     Q注Q把表的拥有者由FROMUSER改ؓTOUSERQFROMUSER和TOUSER的用户可以不同)          
        ROWS=Y
        INDEXES=Y
        GRANTS=Y
        CONSTRAINTS=Y
        BUFFER=409600
        file==/backup/ctgpc_20030623.dmp
        log==/backup/import_20030623.log

 

http://dev.csdn.net/htmls/82/82431.html

liujg 2010-12-06 14:39 发表评论
]]>
(?表空间不的问题http://www.tkk7.com/tbest/articles/326516.htmlliujgliujgMon, 19 Jul 2010 05:18:00 GMThttp://www.tkk7.com/tbest/articles/326516.htmlhttp://www.tkk7.com/tbest/comments/326516.htmlhttp://www.tkk7.com/tbest/articles/326516.html#Feedback0http://www.tkk7.com/tbest/comments/commentRss/326516.htmlhttp://www.tkk7.com/tbest/services/trackbacks/326516.htmlORA-01658:unable to create INITIAL extent for segmnet in tablespace DATA01

原因Q?/p>

表空间DATA01I间不Q导致数据无法插入?/p>

SolutionQ?/p>

重新定义表空间大:
ALTER TABLESPACE DATA01 RESIZE 5G ;

表I间删除后重新定义表I间Q?
DROP TABLESPACE DATA01 INCLUDING CONTENTS AND DATAFILES ;


CREATE TABLESPACE “DATA01”

LOGGING DATAFILE ’D:\ORACLE\PRODUCT\10.2.0\SSVC\DATA01.DBF’

SIZE 5000M REUSE

DEFAULT STORAGE (INITIAL 10K NEXT 128K MINEXTENTS 1 MAXEXTENTS UMLIMITED PCTINCREASE 100) ;


本文来自CSDN博客Q{载请标明出处Qhttp://blog.csdn.net/yexianyi/archive/2009/08/23/4476216.aspx



liujg 2010-07-19 13:18 发表评论
]]>
oracle 取子??http://www.tkk7.com/tbest/articles/258840.htmlliujgliujgTue, 10 Mar 2009 08:33:00 GMThttp://www.tkk7.com/tbest/articles/258840.htmlhttp://www.tkk7.com/tbest/comments/258840.htmlhttp://www.tkk7.com/tbest/articles/258840.html#Feedback3http://www.tkk7.com/tbest/comments/commentRss/258840.htmlhttp://www.tkk7.com/tbest/services/trackbacks/258840.htmlSUBSTRING
q回字符、binary、text      ?nbsp;     image      表达式的一部分。有兛_与该函数一起用的有效      Microsoft®      SQL      Server™      数据cd的更多信息,请参见数据类型?nbsp;

语法
SUBSTRING      (      expression      ,      start      ,      length      ) 

参数
expression

是字W串、二q制字符丌Ӏtext、image、列或包含列的表辑ּ。不要用包含聚合函数的表达式?

start

是一个整敎ͼ指定子串的开始位|?

length

是一个整敎ͼ指定子串的长度(要返回的字符数或字节敎ͼ?

substring()
——Q意位|取子串

left()
right()
——左右两端取子串

ltrim()
rtrim()
——截断空|没有trim()?

charindex()
patindex()
——查子串在母串中的位|,没有q回0。区别:patindex支持通配W,charindex不支持?


函数功效Q?
字符串截取函敎ͼ只限单字节字W用(对于中文的截取时遇上奇数长度是会出现qQ需另行处理Q,本函数可截取字符串指定范围内的字W?

应用范围Q?
标题、内Ҏ?

函数格式Q?
string substr ( string string, int start [, int length])
参数1Q处理字W串
参数2Q截取的起始位置Q第一个字W是?开始)
参数3Q截取的字符数量
substr()更多介绍可在PHP官方手册中查询(字符串处理函数库Q?

举例Q?
substr("ABCDEFG", 0);    //q回QABCDEFGQ截取所有字W?
substr("ABCDEFG", 2);    //q回QCDEFGQ截取从C开始之后所有字W?
substr("ABCDEFG", 0, 3); //q回QABCQ截取从A开?个字W?
substr("ABCDEFG", 0, 100); //q回QABCDEFGQ?00虽然出预处理的字符串最长度Q但不会影响q回l果Q系l按预处理字W串最大数量返回?
substr("ABCDEFG", 0, -3); //q回QEFGQ注意参?3Qؓ负值时表示从尾部开始算P字符串排列位|不?


例子:


1.截取已知长度的函?


  A.截取从字W串左边开始N个字W?

    Declare @S1 varchar(100)
    Select @S1='http://www.163.com'
    Select Left(@S1,4)
    ------------------------------------
    昄l果: http


  B.截取从字W串双开始N个字W?例如取字Wwww.163.com)

    Declare @S1 varchar(100)
    Select @S1='http://www.163.com'
    Select right(@S1,11) 
    ------------------------------------
    昄l果: www.163.com


  C.截取字符串中L位置及长?例如取字Wwww)

    Declare @S1 varchar(100)
    Select @S1='http://www.163.com'
    Select SUBSTRING(@S1,8,3) 
    ------------------------------------
    昄l果: www.163.com

    以上例子皆是已知截取位置及长?下面介绍未知位置的例?

2.截取未知位置的函?


  A.截取指定字符串后的字W串(例如截取http://后面的字W串)

    Ҏ一:

    Declare @S1 varchar(100)
    Select @S1='http://www.163.com' 
    Select Substring(@S1,CHARINDEX('www',@S1)+1,Len(@S1))
    /*此处也可以这样写:Select Substring(@S1,CHARINDEX('//',@S1)+2,Len(@S1))*/
    ------------------------------------
    昄l果: www.163.com


    需要注?CHARINDEX函数搜烦字符串时,不区分大写,因此CHARINDEX('www',@S1)也可以写成CHARINDEX('WWW',@S1)

    Ҏ?(与方法一cM)

    Declare @S1 varchar(100)
    Select @S1='http://www.163.com' 
    Select Substring(@S1,PATINDEX('%www%',@S1)+1,Len(@S1))
    --此处也可以这样写:Select Substring(@S1,PATINDEX('%//%',@S1)+2,Len(@S1))
    ------------------------------------
    昄l果: www.163.com 


  函数PATINDEX与CHARINDEX区别在于:前者可以参C些参?增加查询的功?

    Ҏ?

    Declare @S1 varchar(100)
    Select @S1='http://www.163.com' 
    Select REPLACE(@S1,'http://','')
    ------------------------------------
    昄l果: www.163.com


  利用字符替换函数REPLACE,除需要显C字W串外的字符替换为空

    Ҏ?

    Declare @S1 varchar(100)
    Select @S1='http://www.163.com' 
    Select STUFF(@S1,CHARINDEX('http://',@S1),Len('http://'),'')
    ------------------------------------
    昄l果: www.163.com 

  函数STUFF与REPLACE区别在于:前者可以指定替换范?而后者则是全部范围内替换

  B.截取指定字符后的字符?例如截取C:\Windows\test.txt中文件名)
      与A不同的是,当搜索对象不是一个时,利用上面的方法只能搜索到W一个位|?

    Ҏ一:

    Declare @S1 varchar(100)
    Select @S1='C:\Windows\test.txt'
    select right(@S1,charindex('\',REVERSE(@S1))-1)
    -------------------------------------
    昄l果: text.txt


利用函数REVERSE获取需要截取的字符串长?

 


substr()


例子:

private void DDL_AreaBind()
          {
              conn = new SqlConnection(ConfigurationManager.ConnectionStrings["strcon"].ConnectionString);
              string str = "0000";
              cmd = new SqlCommand("select AreaID,Name=ltrim(Name) from Area where    right(AreaID,4) ='" + str + "'", conn);
              SqlDataAdapter sda = new SqlDataAdapter(cmd);
              sda.Fill(ds, "area");
              this.ddl_area.DataSource = ds.Tables["area"].DefaultView;
              this.ddl_area.DataTextField = "Name";
              this.ddl_area.DataValueField = "AreaID";
              this.ddl_area.DataBind();

           
              cmd = new SqlCommand("select * from Area    ", conn);
              cmd.CommandType = CommandType.Text;
              SqlDataAdapter adapter = new SqlDataAdapter(cmd);
              adapter.Fill(ds, "city");
              this.ddl_city.DataSource = ds.Tables["city"].DefaultView;
              this.ddl_city.DataTextField = "Name";
              this.ddl_city.DataValueField = "AreaID";
              this.ddl_city.DataBind();
          }


protected void ddl_area_SelectedIndexChanged(object sender, EventArgs e)
          {
              conn = new SqlConnection(ConfigurationManager.ConnectionStrings["strcon"].ConnectionString);
              this.ddl_city.Enabled = true;
              string str1="0000";
              cmd = new SqlCommand("select AreaID,Name from Area where substring(AreaID,1,2)='" + this.ddl_area.SelectedValue.Substring(0,2)    + "' AND substring(AreaID,3,4) <> '0000' AND substring(AreaID,5,2)='00'    ", conn);
              cmd.CommandType = CommandType.Text;
              SqlDataAdapter adapter = new SqlDataAdapter(cmd);
              DataSet ds = new DataSet();
              adapter.Fill(ds, "city");
              this.ddl_city.DataSource = ds.Tables["city"].DefaultView;
              this.ddl_city.DataTextField = "Name";
              this.ddl_city.DataValueField = "AreaID";
              this.ddl_city.DataBind();
          }

liujg 2009-03-10 16:33 发表评论
]]>
PL/SQL中用光标查询多条记录http://www.tkk7.com/tbest/articles/186783.htmlliujgliujgMon, 17 Mar 2008 07:55:00 GMThttp://www.tkk7.com/tbest/articles/186783.htmlhttp://www.tkk7.com/tbest/comments/186783.htmlhttp://www.tkk7.com/tbest/articles/186783.html#Feedback0http://www.tkk7.com/tbest/comments/commentRss/186783.htmlhttp://www.tkk7.com/tbest/services/trackbacks/186783.html一?什么是光标

Oracle 使用两种光标Q显式光标和隐式光标。不语句返回多条U录Q?PL/SQL Z用的每一?UPDATE ?DELETE ?INSERT {?SQL 命o隐式的声明一个光标。(要管?SQL 语句的处理,必须隐式的给它定义一个光标。)用户声明q用显C光标处?SELECT 语句q回的多条记录。显C的定义光标一U结构,它用户能够为特定的语句指定内存区域Q以便以后用?

二?光标的作?/strong>

?PL/SQL 光标查询q回多行数据Ӟq些记录l被UCؓzd集?Oracle 这U活动集存储在您创徏的显C定义的已命名的光标中?strong style="color: black; background-color: #ffff66">Oracle 光标是一U用于轻杄处理多行数据的机Ӟ没有光标Q?Oracle 开发h员必d独地、显式地取回q管理光标查询选择的每一条记录?

光标的另一功能事Q它包含一个跟t当前访问的记录的指针,q您的E序能够一ơ处理多条记录?

三?使用昄光标的基本方?/strong>

步骤如下Q?

1 、声明光?/strong>

声明光标的语法如下:

DECLARE cursor_name

Is

SELECT statement

其中Q?cursor_name 是您l光标指定的名称Q?SELECT statement 是给光标zd集返回记录的查询?

声明光标完成了下面两个目的:

l光标命名;

一个查询与光标兌h?

值得注意的是Q必d PL/SQL 块的声明部分声明光标Q给光标指定的名U是一个未声明的标识符Q而不是一?PL/SQL 变量Q不能给光标名称赋|也不能将它用在表辑ּ中?PL/SQL 块用这个名U来引用光标查询?

例: DECLARE

CURSOR c1

Is

SELECT VIEW_NAME FROM ALL_VIEWS

WHERE ROWNUM<=10 Q?

另外q可以在光标定义语句中声明光标的参数Q例Q?

CURSOR c1 Q?view _nbr number Q?

Is

SELECT VIEW_NAME FROM ALL_VIEWS

WHERE ROWNUM<= view _nbr Q?

光标参数只对相应的光标是可见的,不能在光标范围之外引用该光标的参数。如果试图这样做Q?Oracle 返回一个错误,指出该变量没有定义?

2 、打开光标

打开光标的语法如下:

OPEN cursor_name Q?

其中 cursor_name 是您以前定义的光标名U?

打开光标激zL询ƈ识别zd集,可是在执行光标取回命令之前,q没有真正取回记录?OPEN 命oq初始化了光标指针,使其指向zd集的W一条记录。光标被打开后,直到关闭之前Q取回到zd集的所有数据都是静态的Q换句话_光标忽略所有在光标打开之后Q对数据执行?SQL DML 命oQ?INSERT ?UPDATE ?DELETE ?SELECT Q。因此只有在需要时才打开它,要刷新活动集Q只需关闭q新打开光标卛_?

3 、从光标中取回数?/strong>

FETCH 命o以每ơ一条记录的方式取回zd集中的记录。通常?FETCH 命o和某UP代处理结合v来用,在P代处理中Q?FETCH 命o每执行一ơ,光标前进到活动集的下一条记录?

FETCH 命o的语法:

FETCH cursor_name INTO record_list Q?

其中Q?cursor_name 是前面定义的光标的名Uͼ record_list 是变量列表,它接受活动集中的列?FETCH 命o活动集的结果放|到q些变量中?

执行 FETCH 命o后,zd集中的结果被取回?PL/SQL 变量中,以便?PL/SQL 块中使用。每取回一条记录,光标的指针就Udzd集的下一条记录?

例:

FETCH C1 INTO VNAME;

WHILE C1%FOUND LOOP

DBMS_OUTPUT.PUT_LINE(TO_CHAR(C1%ROWCOUNT)||' '||VNAME);

END LOOP;

其中Q用属?'%FOUND' 使得?FETCH 到达zd集的l尾Ӟ不会引发异常。其它属性及含义见下表:

属?含量

%FOUND 布尔型属性,当最q一ơ该记录时成功返回,则gؓ TRUE

%NOTFOUND 布尔型属性,它的值M %FOUND 属性的值相?

%ISOPEN 布尔型属性,当光标是打开时返?TRUE

%ROWCOUNT 数字型属性,q回已从光标中读取的记录?

属?含量

%FOUND 布尔型属性,当最q一ơ该记录时成功返回,则gؓ TRUE

%NOTFOUND 布尔型属性,它的值M %FOUND 属性的值相?

%ISOPEN 布尔型属性,当光标是打开时返?TRUE

%ROWCOUNT 数字型属性,q回已从光标中读取的记录?

4 ?a name="baidusnap2">关闭光标

CLOSE 语句关闭以前打开的光标,使得zd集不定。当用户的程序或会话l束Ӟ Oracle 隐式关闭光标。光标被关闭后,׃能对它执行Q何操作了 , 否则引发异常?

CLOSE 语句的语法是Q?

CLOSE cursor_name Q?

其中Q?cursor_name 是以前打开的光标的名称?

完整的程序代码如下:

DECLARE

CURSOR C1 IS SELECT VIEW_NAME FROM ALL_VIEWS

WHERE ROWNUM<=10

ORDER BY VIEW_NAME;

VNAME VARCHAR2(40);

BEGIN

OPEN C1;

FETCH C1 INTO VNAME;

WHILE C1%FOUND LOOP

DBMS_OUTPUT.PUT_LINE(TO_CHAR(C1%ROWCOUNT)||''||VNAME);

END LOOP;

END;

…… CLOSE C1;

四?结

光标是一U结?, 能够以一ơ一条记录的方式处理多行查询的结?. 为每?DML 语句创徏隐式光标 , 而显式光标是q户创建的 , 以便处理q回多条记录的查询。而且 , 通过消除反复地分析代?, 光标提高了代码的处理速度?



liujg 2008-03-17 15:55 发表评论
]]>
?谈oracle ??I?|转)http://www.tkk7.com/tbest/articles/186737.htmlliujgliujgMon, 17 Mar 2008 05:33:00 GMThttp://www.tkk7.com/tbest/articles/186737.htmlhttp://www.tkk7.com/tbest/comments/186737.htmlhttp://www.tkk7.com/tbest/articles/186737.html#Feedback1http://www.tkk7.com/tbest/comments/commentRss/186737.htmlhttp://www.tkk7.com/tbest/services/trackbacks/186737.html

?谈oracle ??I??

摘自Q?a target="_blank">计算Z界日?/a>

???l??局 ???

---- ????中, I?????C????????????c??一 ??中, ??一 ???????| ???U???I?|NULLQ?????c???? ???????I(NOT NULLQ???键(PRIMARY KEYQ?????Ӟ ?????I?倹{??????中, ????I????在, ???????????烦?

---- ?如, ??????表(EMPQ?中, ??名(ENAMEQ?为KING ?行, ?为KING ?最 ??员(PRESIDENTQ, ????(MGRQ, 所 ?其MGR ?I?倹{?????所 ???????l?费(COMMQ, 所 ?列COMM ???I?| ?00?00?400? ??????行COMM ??I?倹{?

EMPNO ENAME    JOB       MGR HIREDATE    SAL   COMM  DEPTNO
---- -------- -------- --------- -------- ------ ---------
7369 SMITH     CLERK     7902 17-DEC-80  800           20
7499 ALLEN     SALESMAN  7698 20-FEB-81  1600    300   30
7521 WARD      SALESMAN  7698 22-FEB-81  1250    500   30
7566 JONES     MANAGER   7839 02-APR-81  2975          20
7654 MARTIN    SALESMAN  7698 28-SEP-81  1250   1400   30
7698 BLAKE     MANAGER   7839 01-MAY-81  2850          30
7782 CLARK     MANAGER   7839 09-JUN-81  2450          10
7788 SCOTT     ANALYST   7566 09-DEC-82  3000          20
7839 KING      PRESIDENT      17-NOV-81  5000          10
7844 TURNER    SALESMAN  7698 08-SEP-81  1500      0   30
7876 ADAMS     CLERK     7788 12-JAN-83  1100          20
7900 JAMES     CLERK     7698 03-DEC-81   950          30
7902 FORD      ANALYST   7566 03-DEC-81  3000          20
7934 MILLER    CLERK     7782 23-JAN-82  1300          10

---- ?????qEMP ??例, ????一 ?I????????所 ???一 ??性?

---- 一?I????????

---- 1. I?????

---- ??一 ????I(NOT NULLQ?????Ӟ ???~?????I?| ?????一 ????????| ????I?倹{?

---- ?用SQL ?句INSERT ??行, ??????列, ???I?| ????列, ???????I?| ?????用NULL ??C( ???W???列, ????' ??C)?

---- 例: ??一 行, 其EMPNO ?、ENAME ?JIA'、SAL ?0000、job 和comm ?I?倹{?

SQL >insert into emp(empno,ename,job,sal,comm)
values(1,'JIA',NULL,1000,NULL);
SQL >select * from emp where empno=1;
EMPNO ENAME  JOB   MGR HIREDATE    SAL    COMM    DEPTNO
--------- ---------- --------- --------- --------- ---------
1 JIA         1000

---- ????????一 行, 除job 和comm ?I??外,mgr、hiredate、deptno ?????????及, ??I?倹{?

---- ?用SQL ?句UPDATE ????据, I???用NULL ??C( ???W???列, ????' ??C)??

SQL >update emp set ename=NULL,sal=NULL where empno=1;

---- 2. I?????

---- I???????点:

---- * {???????倹{?

---- * ?0?I??W???I???同?

---- * 在where ??? Oracle ??l??为NULL ???为FALSEQ???q????的select ???q??行, q???q?????息?但NULL 和FALSE ???的?

---- * ?????????大?

---- * I??????引?

---- 二?I?????

---- ??I???C?~???据, 所 ?I??????????性, ????{?于??{?于????????????较, ?????I???w( ??在decode ??外, ??I??????{?P???I?????????WIS NULL 和IS NOT NULL?????????????W??????式, q???l?????I?| ???l????是NULL?在where ??中,Oracle ??l??为NULL ???为FALSEQ???q????的select ???q??行, ??q?????息?

---- ???询EMP ?中MGR 为NULL ?行:

SQL >select * from emp where mgr='';
no rows selected
SQL >select * from emp where mgr=null;
no rows selected
SQL >select * from emp where mgr is null;
EMPNO ENAME  JOB  MGR HIREDATE   SAL  COMM  DEPTNO
---------- --------- --------- --------- ---------
7839 KING  PRESIDENT  17-NOV-81  5000        10

---- W?? ????妥,WHERE ??l??为NULLQ??q??行?W????, q?回MGR ?I???行?

---- 三?I?????W?

---- 1. I???????W?

---- ????W?

---- ???

---- l??

AND
NULL AND TRUE
NULL
NULL AND FALSE
FALSE
NULL AND NULL
NULL
OR
NULL OR TRUE
TRUE
NULL OR FALSE
NULL
NULL OR NULL
NULL
NOT
NOT NULL
NULL

---- ???刎ͼ ????中, 除NULL AND FALSE l??为FALSE、NULL OR TRUE l??为TRUE ?外, ??l???为NULL?

---- ??在where ??中,Oracle ??l??为NULL 的WHERE ??为FALSEQ????????中NULL ??于FALSE???在NOT Q?NULL AND FALSE Q?和NOT Q?NULL AND NULL Q??????一 处FALSE 和TRUE ??别, 但NOT Q?NULL AND FALSE Q??l???TRUEQ?而NOT Q?NULL AND NULL Q??l??为NULL?

---- ??????I???????W???法:

SQL > select * from emp where not comm=null and comm!=0;
no rows selected
SQL > select * from emp where not ( not comm=null and comm!=0 );
EMPNO ENAME  JOB      MGR  HIREDATE  SAL  COMM  DEPTNO
---------- --------- --------- --------- ---------
7844 TURNER SALESMAN  7698 08-SEP-81 1500   0     30

---- W?一 个Select ?句, ??not comm=null and comm!=0" {??于NULL AND COMM!=0?????一 行, ?果COMM ??{?? ??| ??{??于NULL AND TRUEQ?l??为NULLQ??果COMM {??Q???{??于NULL AND FALSEQ?l??为FALSE?所 以, 最 l?l???q??行?

---- W??个Select ??????W?一 个Select ????? ?QNOTQ, ????一 行, ?果COMM ??{?? ??| ??{??于NOT NULLQ?l??为NULLQ??果COMM {??Q???{??于NOT FALSEQ?l??为TRUE?所 以, 最 l?l??q??行COMM {?? ?行?

---- 2. I???????W?

---- Q?QIS [NOT] NULLQ??????I????一 ??W( ? I?????Q?

Q?Q??=?gt;=?lt;=?gt;?lt;
SQL >select ename,sal,comm from emp where sal >comm;
ENAME            SAL      COMM
---------- --------- ---------
ALLEN           1600       300
WARD            1250       500
TURNER          1500         0

---- sal 或comm ?I???行,sal>comm ??l??为NULLQ?所 ??是sal 或comm ?I???????q?回?

---- Q?QIN 和NOT IN ??W?

SQL >select ename,mgr from emp where mgr in (7902,NULL);
ENAME            MGR
---------- ---------
SMITH           7902

---- ??q???中, ??mgr in (7902,NULL)" {??于mgr=7902 or mgr=NULL???表EMP ????一 行, ?果mgr 为NULLQ???q???{??于NULL OR NULLQ??为NULLQ??果mgr ??{??902 ??| ??q???{??于FALSE OR NULLQ??为NULLQ??果mgr {??902Q???q???{??于TRUE OR NULLQ??为TRUE?所 以, 最 l?l???q?回mgr {??902 ?行?

SQL >select deptno from emp where deptno not in ('10',NULL);
no rows selected

---- ??q???中, ??deptno not in ('10',NULL)" {??于deptno!='10' and deptno!=NULLQ??于EMP ?????一 行, ???l????为NULL 或FALSEQ?所 ??q??行?

---- Q?Qany,some

SQL >select ename,sal from emp where sal > any(3000,null);
ENAME            SAL
---------- ---------
KING            5000

---- ??sal > any(3000,null)" {??于sal >3000 or sal >null?c???qͼ3Q?W?一 句, 最 l?l??q??所 有sal >3000 ?行?

---- Q?QAll

SQL >select ename,sal from emp where sal > all(3000,null);
no rows selected

---- ??sal> all(3000,null)" {??于sal >3000 and sal >null, l????为NULL 或FALSEQ?所 ??q??行?

---- Q?Q(notQbetween

SQL >select ename,sal from emp where sal between null and 3000;
no rows selected

---- ??sal between null and 3000" {??于sal >=null and sal< =3000, l????为NULL 或FALSEQ?所 ??q??行?

SQL >select ename,sal from emp where sal not between null and 3000;
ENAME            SAL
---------- ---------
KING            5000

---- ??sal not between null and 3000" {??于sal3000, c???qͼ3Q??W?一 句, l??q?回sal>3000 ?行?

---- ???????W??I????l:

---- ????W?

---- ??式( 例:A、B 是NULL、C=10Q?

---- l??

IS NULL、IS NOT NULL
A IS NULL
TRUE
A IS NOT NULL
FALSE
C IS NULL
FALSE
C IS NOT NULL
TRUE
=?=?gt;=?lt; =?gt;?lt;
A = NULL
NULL
A > NULL
NULL
C = NULL
NULL
C > NULL
NULL
IN (=ANY)
A IN (10,NULL)
NULL
C IN (10,NULL)
TRUE
C IN (20,NULL)
NULL
NOT IN
( {???Q?ALL)
A NOT IN (20,NULL)
NULL
C NOT IN (20,NULL)
FALSE
C NOT IN (10,NULL)
NULL
ANYQSOME
A > ANY(5,NULL)
NULL
C > ANY(5,NULL)
TRUE
C > ANY(15,NULL)
NULL
ALL
A > ALL(5,NULL)
NULL
C > ALL(5,NULL)
NULL
C > ALL(15,NULL)
FALSE
(NOT)BETWEEN
A BETWEEN 5 AND NULL
NULL
C BETWEEN 5 AND NULL
NULL
C BETWEEN 15 AND NULL
FALSE
A NOT BETWEEN 5 AND NULL
NULL
C NOT BETWEEN 5 AND NULL
NULL
C NOT BETWEEN 15 AND NULL
TRUE

---- 3?I????术??W???W?

---- Q?Q?????W: I???{???Q?????I?????????q??l????I?| ??I???0 ?I?倹{?

---- Q?Q??W???W||Q??为ORACLE ???????W????????I??????同( ???????一 ????此)Q?所 ??于||Q?I??{??????W?倹{?例:

SQL >select ename,mgr,ename||mgr,sal,comm,sal+comm from emp;
ENAME            MGR ENAME||MGR          SAL      COMM  SAL+COMM
---------- --------- ------------- --------- --------- ---------
SMITH           7902 SMITH7902           800
ALLEN           7698 ALLEN7698          1600       300      1900
WARD            7698 WARD7698           1250       500      1750
JONES           7839 JONES7839          2975
MARTIN          7698 MARTIN7698         1250      1400      2650
BLAKE           7839 BLAKE7839          2850
CLARK           7839 CLARK7839          2450
SCOTT           7566 SCOTT7566          3000
KING                 KING               5000
TURNER          7698 TURNER7698         1500         0      1500
ADAMS           7788 ADAMS7788          1100
JAMES           7698 JAMES7698           950
FORD            7566 FORD7566           3000
MILLER          7782 MILLER7782         1300

---- ?????刎ͼ 凡mgr ?I??的,ename||mgr l??{?于enameQ??是comm ?I???行,sal+comm ??I?倹{?

---- 四?I?????

---- 1 Q?I???????

---- ?????敎ͼ ??l??????I?| ?ӞNVL、TRANSLATE ?外) q????I?倹{?????的ABSQCOMMQ, ?果COMM ?I?|ABS(COMM) ?I?倹{?

SQL > select ename,sal,comm,abs(comm) from emp where sal< 1500;
ENAME            SAL      COMM ABS(COMM)
---------- --------- --------- ---------
SMITH            800
WARD            1250       500       500
MARTIN          1250      1400      1400
ADAMS           1100
JAMES            950
MILLER          1300

---- 2. I???l???

---- l?????I?倹{??????中, ??需 ???用nvl ??????I?倹{?例:

SQL >select count(comm),sum(comm),avg(comm) from emp;
COUNT(COMM) SUM(COMM) AVG(COMM)
----------- --------- ---------
4      2200       550
SQL >select count(nvl(comm,0)),sum(nvl(comm,0)),avg(nvl(comm,0))
from emp;
COUNT(NVL(COMM,0)) SUM(NVL(COMM,0)) AVG(NVL(COMM,0))
------------------ ---------------- ----------------
14             2200        157.14286

---- W?一 个SELECT ???略COMM ?I???行, W??个SELECT ???用NVL ??l???所 ?的COMMQ?所 ???l????数?q??????同???需 ????是, ???l???q??????Ӟ ?????????????义, ????????z??握??如:

SQL >select deptno,sum(sal),sum(comm),
sum(sal+comm),sum(sal)+sum(comm),sum(nvl(sal,0)+nvl(comm,0))
from emp
group by deptno;
DEPTNO  SUM(SAL) SUM(COMM) SUM(SAL+COMM) SUM(SAL)
+SUM(COMM) SUM(NVL(SAL,0)+NVL(COMM,0))
--------- --------- --------- ------------- -------
10   8750                             8750
20   10875                            10875
30   9400      2200       7800        11600 11600

---- ???到SUM(SAL+COMM)、SUM(SAL)+SUM(COMM)?SUM(NVL(SAL,0)+NVL(COMM,0)) ??别:SUM(SAL+COMM) ??????????和, ?果SAL、COMM ??一 ?为NULLQ???????计;SUM(SAL)+SUM(COMM) ????????????加,SAL、COMM ?的NULL ????计, ???SUM(SAL)、SUM(COMM) ???l?????一 ?为NULLQ??????为NULLQ?在SUM(NVL(SAL,0)+NVL(COMM,0)) 里,SAL、COMM ?的NULL ? ?理?

---- 五?I???????

---- 1. I??????????倹{??如:

SQL > select ename,comm from emp where deptno='30' order by commQ?
ENAME           COMM
---------- ---------
TURNER             0
ALLEN            300
WARD             500
MARTIN          1400
BLAKE
JAMES

---- 2. I??????引???????????引, ??????I?????_ ??I??????引, 所 ?????????率????????????在MGR ??????引?

SQL >select ename from emp where mgr is null;
ENAME
----------
KING

---- ??????I?????引, 所 ?????I????????一 ??引(UNIQUE INDEXQ??如, ??在EMP ?的COMM ?????一 ??引:

SQL >  create unique index emp_comm on emp(comm);
Index created.


liujg 2008-03-17 13:33 发表评论
]]>
PowerDesigner 使用 Q{载)http://www.tkk7.com/tbest/articles/158856.htmlliujgliujgWed, 07 Nov 2007 08:36:00 GMThttp://www.tkk7.com/tbest/articles/158856.htmlhttp://www.tkk7.com/tbest/comments/158856.htmlhttp://www.tkk7.com/tbest/articles/158856.html#Feedback0http://www.tkk7.com/tbest/comments/commentRss/158856.htmlhttp://www.tkk7.com/tbest/services/trackbacks/158856.html原文Q?a >http://blog.csdn.net/casularm/archive/2005/10/28/518266.aspx
一、PowerDesigner ?/strong> 

        PowerDesigner是Sybase公司的CASE工具集,使用它可以方便地对管理信息系l进行分析设计,它几乎包括了数据库模型设计的全过E。利用PowerDesigner可以制作数据程图、概忉|据模型、物理数据模型,可以生成多种客户端开发工L应用E序Q还可ؓ数据仓库制作l构模型Q也能对团队设计模型q行控制。它可与许多行的数据库设计软gQ例如:PowerBuilderQDelphiQVB{相配合使用来羃短开发时间和使系l设计更优化?

PowerDesigner主要包括以下几个功能部分Q?/strong>
  Q?Q?DataArchitect
q是一个强大的数据库设计工P使用DataArchitect可利用实?关系图ؓ一个信息系l创?概念数据模型"QCDMQConceptual Data ModelQ。ƈ且可ҎCDM产生Z某一特定数据库管理系l(例如QSybase System 11Q的"物理数据模型"-PDM(Physical Data Model)。还可优化PDMQ生ؓ特定DBMS创徏数据库的SQL语句q可以文件Ş式存储以便在其他时刻q行q些SQL语句创徏数据库。另外,DataArchitectq可Ҏ已存在的数据库反向生成PDMQCDM及创建数据库的SQL脚本?
  Q?Q?ProcessAnalyst
q部分用于创建功能模型和数据图Q创?处理层次关系"?
  Q?Q?AppModeler
为客?服务器应用程序创建应用模型?
  Q?Q?ODBC Administrator
此部分用来管理系l的各种数据源?

PowerDesigner?U模型文Ӟ
概念数据模型 (CDM)
CDM 表现数据库的全部逻辑的结?与Q何的软g或数据储藏结构无兟?一个概忉|型经常包括在物理数据库中仍然不实现的数据对象?它给q行计划或业务活动的数据一个正式表现方式?
物理数据模型 (PDM)
PDM 叙述数据库的物理实现?
藉由 PDM Q你考虑真实的物理实现的l节?它进入帐户两个Y件或数据储藏l构之内ѝ?你能修正 PDM 适合你的表现或物理约束?
面向对象模型 (OOM)
一个OOM包含一pd包,c,接口 , 和他们的关系?q些对象一起Ş成所有的 ( 或部? 一个Y件系l的逻辑的设计视囄cȝ构?一个OOM本质上是软gpȝ的一个静态的概念模型?
你?PowerDesigner 面向对象模型建立面向对象模型.(OOM) 你能为纯_地对象- 导向的靠模切目的建立一个OOM, 产生Java文g或者PowerBuilder文gQ或你能使用一个来自OOM的物理数据模?PDM)对象 , 来表C关pL据库设计分析?
业务E序模型 (BPM)
BPM 描述业务的各U不同内在Q务和内在程Q而且客户如何以这些Q务和程互相影响?
BPM 是从业务合伙人的观点来看业务逻辑和规则的概念模型Q用一个图表描q?
E序Q流E,信息和合作协议之间的交互作用?

以下是其中的CDM PDM OOM三者的转换关系

使用PowerDesigner环境

对象览?
对象览器可以用分层l构昄你的工作I间.
输出H口
昄操作的结果?
l果列表
用于昄生成、覆盖和模型查结果,以及设计环境的M信息?
图表H口
用于l织模型中的图表Q以囑Ş方式昄模型中各对象之间的关pR?br />
 

我也不知道只有这些。。。?br />



liujg 2007-11-07 16:36 发表评论
]]>
SQL 查找重复记录(?http://www.tkk7.com/tbest/articles/125152.htmlliujgliujgTue, 19 Jun 2007 09:13:00 GMThttp://www.tkk7.com/tbest/articles/125152.htmlhttp://www.tkk7.com/tbest/comments/125152.htmlhttp://www.tkk7.com/tbest/articles/125152.html#Feedback0http://www.tkk7.com/tbest/comments/commentRss/125152.htmlhttp://www.tkk7.com/tbest/services/trackbacks/125152.html
文章来自此h博客Q?a >http://hi.baidu.com/zg110/blogQ在q里表示感谢Q?br>表stuinfoQ有三个字段recno(自增),stuid,stuname

表的Sql语句如下Q?br>
CREATE TABLE [StuInfo] (
[recno] [int] IDENTITY (1, 1) NOT NULL ,
[stuid] [varchar] (10) COLLATE Chinese_PRC_CI_AS NOT NULL ,
[stuname] [varchar] (10) COLLATE Chinese_PRC_CI_AS NOT NULL
) ON [PRIMARY]
GO

1.--查某一?或多?的重复?只能查出重复记录的|不能整个记录的信?
--?查找stuid,stuname重复的记?br>select stuid,stuname from stuinfo
group by stuid,stuname
having(count(*))>1

2.--查某一列有重复值的记录(q种Ҏ查出的是所有重复的记录,也就是说如果有两条记录重复的Q就查出两条)
--?查找stuid重复的记?br>select * from stuinfo
where stuid in (
select stuid from stuinfo
group by stuid
having(count(*))>1
)

3.--查某一列有重复值的记录(只显C多余的记录,也就是说如果有三条记录重复的Q就昄两条)
--q种Ҏl的前提是:需有一个不重复的列,本例中的是recno
--?查找stuid重复的记?br>select * from stuinfo s1
where recno not in (
select max(recno) from stuinfo s2
where s1.stuid=s2.stuid
)

 



liujg 2007-06-19 17:13 发表评论
]]>
վ֩ģ壺 һ߹ۿƵ| ޸avվ| gvgvͬ| ޳aƬ߹ۿ| ޾Ʒ߹ۿ| ŮݽƵѿ| ɫվWWWվ| Ů18ëƬˮѿ| ˳ɫ4444߹ۿ| պѹۿ | պ| 91鶹ƷԲ߹ۿ| AVۺɫһ| þþƷѵӰ| ˾þô߽| һƵ߹ۿİ | ѿŮˬ| ޹һ| һƵ| ޳AVӰƬ߹ۿ| ޺rӰ| þþþþþ99Ʒ| ߹ۿ| ձһ߲| ޾ƷƵ| ۺһƷþ| Ƶ| xxxxxxձƬѿ| ѹۿ| ˳߹ۿվƷ| ޾Ʒ| ѹСƵ߹ۿ| þֻƷ10| ޲ӰԺҹ߹ۿ| ˳վۿ߲| ޾Ʒɫһ| ޾Ʒa vС˵| Aѹۿ| ¶ۺƵ| Ļ˿Ʒһ| wŷs|