-
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的字段外,还可以插入常量。示例如下:
INSERT INTO SELECT语句复制表数据
--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中。示例如下:
SELECT INTO FROM创建表并复制表数据
--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 dual2.取整(大)
S:SELECT ceiling(-1.001) value
O:SELECT ceil(-1.001) value from dual3.取整(小)
S:SELECT floor(-1.001) value
O:SELECT floor(-1.001) value from dual4.取整(截取)
S:SELECT cast(-1.002 as int) value
O:SELECT trunc(-1.002) value from dual5.四舍五入
S:SELECT round(1.23456,4) value 1.23460
O:SELECT round(1.23456,4) value from dual 1.23466.e为底的幂
S:SELECT Exp(1) value 2.7182818284590451
O:SELECT Exp(1) value from dual 2.718281827.取e为底的对数
S:SELECT log(2.7182818284590451) value 1
O:SELECT ln(2.7182818284590451) value from dual; 18.取10为底对数
S:SELECT log10(10) value 1
O:SELECT log(10,10) value from dual; 19.取平方
S:SELECT SQUARE(4) value 16
O:SELECT power(4,2) value from dual 1610.取平方根
S:SELECT SQRT(4) value 2
O:SELECT SQRT(4) value from dual 211.求任意数为底的幂
S:SELECT power(3,4) value 81
O:SELECT power(3,4) value from dual 8112.取随机数
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 -114.圆周率
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)aO: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)aO: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 Tbl21.求字符序号
S:SELECT ascii('a') value
O:SELECT ascii('a') value from dual22.从序号求字符
S:SELECT char(97) value
O:SELECT chr(97) value from dual
我的栏目
标题搜索
我的存档
数据统计
- 访问量: 104054
- 日志数: 102
- 书签数: 14
- 建立时间: 2008-02-29
- 更新时间: 2018-04-08