我看到了全世界最好看的眼睛。 揉眼睛的手还有双眼皮。

发布新日志

  • SELECT INTO 和 INSERT INTO SELECT 两种表复制语句

    2012-02-14 09:58:25

          Insert是T-sql中常用语句,Insert INTO table(field1,field2,...) values(value1,value2,...)这种形式的在应用程序开发中必不可少。但我们在开发、测试过程中,经常会遇到需要表复制的情况,如将一个table1的数据的部分字段复制到table2中,或者将整个table1复制到table2中,这时候我们就要使用SELECT INTO 和 INSERT INTO SELECT 表复制语句了。

          1.INSERT INTO SELECT语句

          语句形式为:Insert into Table2(field1,field2,...) select value1,value2,... from Table1

          要求目标表Table2必须存在,由于目标表Table2已经存在,所以我们除了插入源表Table1的字段外,还可以插入常量。示例如下:


       --1.创建测试表
        create TABLE Table1
        (
            a 
    varchar(10),
            b 
    varchar(10),
            c 
    varchar(10),
            
    CONSTRAINT [PK_Table1] PRIMARY KEY CLUSTERED
            (
                a 
    ASC
            )
        ) 
    ON [PRIMARY]

        
    create TABLE Table2
        (
            a 
    varchar(10),
            c 
    varchar(10),
            d 
    int,
            
    CONSTRAINT [PK_Table2] PRIMARY KEY CLUSTERED
            (
                a 
    ASC
            )
        ) 
    ON [PRIMARY]
        
    GO
        
    --2.创建测试数据
        Insert into Table1 values('','asds','90')
        
    Insert into Table1 values('','asds','100')
        
    Insert into Table1 values('','asds','80')
        
    Insert into Table1 values('','asds',null)
        
    GO
        
    select * from Table2

        
    --3.INSERT INTO SELECT语句复制表数据
        Insert into Table2(a, c, d) select a,c,5 from Table1
        
    GO

        
    --4.显示更新后的结果
        select * from Table2
        
    GO
        
    --5.删除测试表
        drop TABLE Table1
        
    drop TABLE Table2


          2.SELECT INTO FROM语句

          语句形式为:SELECT vale1, value2 into Table2 from Table1

          要求目标表Table2不存在,因为在插入时会自动创建表Table2,并将Table1中指定字段数据复制到Table2中。示例如下:


       --1.创建测试表
        create TABLE Table1
        (
            a 
    varchar(10),
            b 
    varchar(10),
            c 
    varchar(10),
            
    CONSTRAINT [PK_Table1] PRIMARY KEY CLUSTERED
            (
                a 
    ASC
            )
        ) 
    ON [PRIMARY]
        
    GO

        
    --2.创建测试数据
        Insert into Table1 values('','asds','90')
        
    Insert into Table1 values('','asds','100')
        
    Insert into Table1 values('','asds','80')
        
    Insert into Table1 values('','asds',null)
        
    GO

        
    --3.SELECT INTO FROM语句创建表Table2并复制数据
        select a,c INTO Table2 from Table1
        
    GO

        
    --4.显示更新后的结果
        select * from Table2
        
    GO
        
    --5.删除测试表
        drop TABLE Table1
        
    drop TABLE Table2
  • sql server 日期转换函数

    2012-01-13 15:10:00

    select CONVERT(varchar(10),getdate(),120)
    2004-09-12

    select CONVERT(varchar, getdate(), 120 )
    2004-09-12 11:06:08

    select replace(replace(replace(CONVERT(varchar, getdate(), 120 ),'-',''),' ',''),':','')
    20040912110608

    select CONVERT(varchar(12) , getdate(), 111 )
    2004/09/12

    select CONVERT(varchar(12) , getdate(), 112 )
    20040912

    select CONVERT(varchar(12) , getdate(), 102 )
    2004.09.12

    其它我不常用的日期格式转换方法:

    select CONVERT(varchar(12) , getdate(), 101 )
    09/12/2004

    select CONVERT(varchar(12) , getdate(), 103 )
    12/09/2004

    select CONVERT(varchar(12) , getdate(), 104 )
    12.09.2004

    select CONVERT(varchar(12) , getdate(), 105 )
    12-09-2004

    select CONVERT(varchar(12) , getdate(), 106 )
    12 09 2004

    select CONVERT(varchar(12) , getdate(), 107 )
    09 12, 2004

    select CONVERT(varchar(12) , getdate(), 108 )
    11:06:08

    select CONVERT(varchar(12) , getdate(), 109 )
    09 12 2004 1

    select CONVERT(varchar(12) , getdate(), 110 )
    09-12-2004

    select CONVERT(varchar(12) , getdate(), 113 )
    12 09 2004 1

    select CONVERT(varchar(12) , getdate(), 114 )
    11:06:08.177
  • 如何在Windows 2000下将Oracle完全卸载?

    2008-11-19 16:51:23

    如何在Windows   2000下将Oracle完全卸载?  
       
      系统环境:    
      1、操作系统:Windows   2000   Server,机器内存128M  
      2、数据库: Oracle   8i   R2   (8.1.6)   for   NT   企业版  
      3、安装路径:D:\ORACLE  
       
      卸载步骤:    
      1、开始->设置->控制面板->管理工具->服务  
            停止所有Oracle服务。  
       
      2、开始->程序->Oracle   -   OraHome81->Oracle   Installation   Products->Universal   Installer  
            卸装所有Oracle产品  
       
      3、运行regedit,选择HKEY_LOCAL_MACHINE\SOFTWARE\ORACLE,按del键删除这个入口。  
       
      4、运行regedit,选择HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services,滚动这个列表,删除所有Oracle入口  
       
      5、从桌面上、STARTUP(启动)组、程序菜单中,删除所有有关Oracle的组和图标  
       
      6、重新启动计算机,重起后才能完全删除Oracle所在目录  
       
      7、删除与Oracle有关的文件,选择Oracle所在的缺省目录C:\Oracle,删除这个入口目录及所有子目录,  
       
          并从Windows   2000目录(一般为C:\WINNT)下删除以下文件  
       
          ORACLE.INI、oradim80.INI  
       
      8、WIN.INI文件中若有[ORACLE]的标记段,删除该段  
       
      系统环境:    
      1、操作系统:Windows   2000   Server,机器内存128M  
      2、数据库: Oracle   8i   R2   (8.1.6)   for   NT   企业版  
      3、安装路径:D:\ORACLE  
       
      卸载步骤:    
      1、开始->设置->控制面板->管理工具->服务  
            停止所有Oracle服务。  
       
      2、开始->程序->Oracle   -   OraHome81->Oracle   Installation   Products->Universal   Installer  
            卸装所有Oracle产品  
       
      3、运行regedit,选择HKEY_LOCAL_MACHINE\SOFTWARE\ORACLE,按del键删除这个入口。  
       
      4、运行regedit,选择HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services,滚动这个列表,删除所有Oracle入口  
       
      5、从桌面上、STARTUP(启动)组、程序菜单中,删除所有有关Oracle的组和图标  
       
      6、重新启动计算机,重起后才能完全删除Oracle所在目录  
       
      7、删除与Oracle有关的文件,选择Oracle所在的缺省目录C:\Oracle,删除这个入口目录及所有子目录,  
       
          并从Windows   2000目录(一般为C:\WINNT)下删除以下文件  
       
          ORACLE.INI、oradim80.INI  
       
      8、WIN.INI文件中若有[ORACLE]的标记段,删除该段  
  • oracle 10g EM使用(转)

    2008-11-19 15:44:44

     
    转自:http://blog.csdn.net/mengx/archive/2007/01/14/1482701.aspx
    一、Enterprise Manager 10g
    默认情况下,安装Oracle时,会安装EM。它是位于数据库服务器上的HTTP服务器。
    (1)启动EM
    要确保OracleDBConsole<SID>服务已经启动。
    启动服务:emctl start dbconsole
    关闭服务:emctl stop dbconsole
    访问EM:http://服务器名称:端口号/em
    端口号可在$ORACLE_HOME/install/protlist.ini中找到。
  • TRUNCATE和DELETE有以下几点区别

    2008-08-25 14:54:23

    TRUNCATE和DELETE有以下几点区别
    1、TRUNCATE在各种表上无论是大的还是小的都非常快。如果有ROLLBACK命令DELETE将被撤销,而TRUNCATE则不会被撤销。
    2、TRUNCATE是一个DDL语言,向其他所有的DDL语言一样,他将被隐式提交,不能对TRUNCATE使用ROLLBACK命令。
    3、TRUNCATE将重新设置高水平线和所有的索引。在对整个表和索引进行完全浏览时,经过TRUNCATE操作后的表比DELETE操作后的表要快得多。
    4、TRUNCATE不能触发任何DELETE触发器。
    5、不能授予任何人清空他人的表的权限。
    6、当表被清空后表和表的索引讲重新设置成初始大小,而delete则不能。
    7、不能清空父表。
  • Oracle导入&导出数据库\清空&复制表\其他

    2008-08-25 14:50:40

    Oracle导入&导出数据库\清空&复制表\其他

    一、oracle导出步骤:
    1、点击“开始”--“运行”--输入“cmd” 回车
    2、输入“exp” 回车
    3、输入“xxx\yyy@easdb_192.168.0.41” 回车 //这里xxx为要导出数据库的用户名,yyy为要导出数据库的用户密码,easdb_192.168.0.41为该数据库的连接字符串
    4、输入“e:\database.dmp” 回车,注意:这里是把导出的数据库放在e盘,取名为database.dmp。
    5、一直回车,到要求输入用户名:输“test” 回车,注意:test为刚刚创建的数据库用户名。
    6、回车,开始导出数据。


    二、oracle导出步骤:
    1、点击“开始”--“运行”--输入“cmd” 回车
    2、输入“imp” 回车
    3、输入“test1\pwd@easdb_192.168.0.41” 回车,注意:test1为238数据库中的用户名。
    4、输入“e:\database.dmp” 回车,注意:这里指要导入数据库的文件路径及文件名。
    5、一直回车,到要求输入用户名:输“test” 回车,注意:test为该数据库文件的前用户名,即此数据库导出时的用户。
    6、回车,开始导入数据。

     

    三、清空&复制表

    1、快速清空表内容:truncate table xxxx     \    truncate table user.xxxx     注:user为数据库的用户,就是清空user用户的xxxx表内容。

    2、复制一个表中的数据到另外一个表:create table yyy as select * from uuu。即把uuu表中的数据复制到yyy中。

    同样可以复制到同服务器上的oracle中的其他用户里(用user为例):create table user.yyy as select * from uuu

     

    四、其他

    1、创建用户:

    string sql = "create user " + usename + " identified by " +pwd+" default tablespace users Temporary TABLESPACE USERS";   //创建

    string sql2 = "grant connect,resource,dba to "+usename;//授权

    2、删除用户:

    string sql = "drop user "+usename+" cascade";
     

  • 查找oracle操作日志

    2008-08-01 14:24:47

    select   module,first_load_time   ,sql_text   from   v$sql where sql_text like '%some%'    order   by   first_load_time   desc;

    数据库重启前有效

  • NULL

    2008-07-10 10:27:23

    问:什么是NULL?
    答:在我们不知道具体有什么数据的时候,也即未知,可以用NULL,我们称它为空,ORACLE中,含有空值的表列长度为零。
    ORACLE允许任何一种数据类型的字段为空,除了以下两种情况:
    1、        主键字段(primary key),
    2、        定义时已经加了NOT NULL限制条件的字段


    说明:
    1、        等价于没有任何值、是未知数。
    2、        NULL与0、空字符串、空格都不同。
    3、        对空值做加、减、乘、除等运算操作,结果仍为空。
    4、        NULL的处理使用NVL函数。
    5、        比较时使用关键字用“is null”和“is not null”。
    6、        空值不能被索引,所以查询时有些符合条件的数据可能查不出来,count(*)中,用nvl(列名,0)处理后再查。
    7、        排序时比其他数据都大(索引默认是降序排列,小→大),所以NULL值总是排在最后。
    ·        使用方法:
    ·        SQL> select 1 from dual where null=null;
    ·       
    ·        没有查到记录
    ·       
    ·        SQL> select 1 from dual where null='';
    ·       
    ·        没有查到记录
    ·       
    ·        SQL> select 1 from dual where ''='';
    ·       
    ·        没有查到记录
    ·       
    ·        SQL> select 1 from dual where null is null;
    ·       
    ·                1
    ·        ---------
    ·                1
    ·       
    ·        SQL> select 1 from dual where nvl(null,0)=nvl(null,0);
    ·       
    ·                1
    ·        ---------
    ·                1
    ·       
    ·        对空值做加、减、乘、除等运算操作,结果仍为空。
    ·        SQL> select 1+null from dual;
    ·        SQL> select 1-null from dual;
    ·        SQL> select 1*null from dual;
    ·        SQL> select 1/null from dual;
    ·       
    ·       
    ·        查询到一个记录.
    ·       
    ·        注:这个记录就是SQL语句中的那个null
    ·       
    ·        设置某些列为空值
    ·        update table1 set 列1=NULL where 列1 is not null;
    ·       
    ·       
    ·        现有一个商品销售表sale,表结构为:
    ·        month    char(6)      --月份
    ·        sell    number(10,2)   --月销售金额
    ·       
    ·        create table sale (month char(6),sell number);
    ·        insert into sale values('200001',1000);
    ·        insert into sale values('200002',1100);
    ·        insert into sale values('200003',1200);
    ·        insert into sale values('200004',1300);
    ·        insert into sale values('200005',1400);
    ·        insert into sale values('200006',1500);
    ·        insert into sale values('200007',1600);
    ·        insert into sale values('200101',1100);
    ·        insert into sale values('200202',1200);
    ·        insert into sale values('200301',1300);
    ·        insert into sale values('200008',1000);
    ·        insert into sale(month) values('200009');(注意:这条记录的sell值为空)
    ·        commit;
    ·        共输入12条记录
    ·       
    ·        SQL> select * from sale where sell like '%';
    ·       
    ·        MONTH       SELL
    ·        ------ ---------
    ·        200001      1000
    ·        200002      1100
    ·        200003      1200
    ·        200004      1300
    ·        200005      1400
    ·        200006      1500
    ·        200007      1600
    ·        200101      1100
    ·        200202      1200
    ·        200301      1300
    ·        200008      1000
    ·       
    ·        查询到11记录.
    ·       
    ·        结果说明:
    ·        查询结果说明此SQL语句查询不出列值为NULL的字段
    ·        此时需对字段为NULL的情况另外处理。
    ·        SQL> select * from sale where sell like '%' or sell is null;
    ·        SQL> select * from sale where nvl(sell,0) like '%';
    ·       
    ·        MONTH       SELL
    ·        ------ ---------
    ·        200001      1000
    ·        200002      1100
    ·        200003      1200
    ·        200004      1300
    ·        200005      1400
    ·        200006      1500
    ·        200007      1600
    ·        200101      1100
    ·        200202      1200
    ·        200301      1300
    ·        200008      1000
    ·        200009
    ·       
    ·        查询到12记录.
    ·       
    ·        Oracle的空值就是这么的用法,我们最好熟悉它的约定,以防查出的结果不正确

     

  • JAVA连接DB总汇

    2008-06-13 11:17:27

    、Oracle8/8i/9i数据库(thin模式)
    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";
    //sample为你的数据库名
    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";
    //myDB为你的数据库名
    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);

  • Access与SQLserver函数比较

    2008-03-28 17:01:02

    Access:asc(字符) SQLServer:unicode(字符)
    作用:返回某字符的ASCII码

    Access:chr(数字) SQLServer:nchar(数字)
    作用:与asc相反,根据ASCII码返回字符

    Access:mid(字符串,N,L) SQLServer:substring(字符串,N,L)
    作用:返回字符串从N个字符起长度为L的子字符串,即N到N+L之间的字符串

    Access:abc(数字) SQLServer:abc (数字)
    作用:返回数字的绝对值(在猜解汉字的时候会用到)

    Access:A between B And C SQLServer:A between B And C
    作用:判断A是否界于B与C之间
  • SQL和ORACLE函数比较

    2008-03-28 16:05:30

    SQLServer和Oracle是大家经常用到的数据库,在此感谢作者总结出这些常用函数以供大家参考。

    数学函数:

     1.绝对值
       S:SELECT abs(-1) value
       O:SELECT abs(-1) value from dual

    2.取整(大)
       S:SELECT ceiling(-1.001) value
       O:SELECT ceil(-1.001) value from dual

    3.取整(小)
       S:SELECT floor(-1.001) value
       O:SELECT floor(-1.001) value from dual

    4.取整(截取)
       S:SELECT cast(-1.002 as int) value
       O:SELECT trunc(-1.002) value from dual

    5.四舍五入
       S:SELECT round(1.23456,4) value 1.23460
       O:SELECT round(1.23456,4) value from dual 1.2346

    6.e为底的幂
       S:SELECT Exp(1) value 2.7182818284590451
       O:SELECT Exp(1) value from dual 2.71828182

    7.取e为底的对数
       S:SELECT log(2.7182818284590451) value 1
       O:SELECT ln(2.7182818284590451) value from dual; 1

    8.取10为底对数
       S:SELECT log10(10) value 1
       O:SELECT log(10,10) value from dual; 1

    9.取平方
       S:SELECT SQUARE(4) value 16
       O:SELECT power(4,2) value from dual 16

    10.取平方根
       S:SELECT SQRT(4) value 2
       O:SELECT SQRT(4) value from dual 2

    11.求任意数为底的幂
       S:SELECT power(3,4) value 81
       O:SELECT power(3,4) value from dual 81

    12.取随机数
       S:SELECT rand() value
       O:SELECT sys.dbms_random.value(0,1) value from dual;

    13.取符号
       S:SELECT sign(-8) value -1
       O:SELECT sign(-8) value from dual -1

    14.圆周率
       S:SELECT PI() value 3.1415926535897931
       O:不知道

    15.sin,cos,tan 参数都以弧度为单位
       例如:SELECT sin(PI()/2) value 得到1(SQLServer)

    16.Asin,Acos,Atan,Atan2 返回弧度

    17.弧度角度互换(SQLServer,Oracle不知道)
       DEGREES:弧度-〉角度
       RADIANS:角度-〉弧度

    数值间比较:

     18. 求集合最大值
       S:SELECT max(value) value from
       (SELECT 1 value
       union
       SELECT -2 value
       union
       SELECT 4 value
       union
       SELECT 3 value)a

      O:SELECT greatest(1,-2,4,3) value from dual

    19. 求集合最小值
       S:SELECT min(value) value from
       (SELECT 1 value
       union
       SELECT -2 value
       union
       SELECT 4 value
       union
       SELECT 3 value)a

      O:SELECT least(1,-2,4,3) value from dual

    20.如何处理null值(F2中的null以10代替)
       S:SELECT F1,IsNull(F2,10) value from Tbl
       O:SELECT F1,nvl(F2,10) value from Tbl

    21.求字符序号
       S:SELECT ascii('a') value
       O:SELECT ascii('a') value from dual

    22.从序号求字符
       S:SELECT char(97) value
       O:SELECT chr(97) value from dual

     

     

Open Toolbar