Join是一种试图将两个表结合在一起的谓词,一次只能连接2个表,表连接也可以被称为表关联。在后面的叙述中,我们将会使用”row source”来代替”表”,因为使用row source更严谨一些,并且将参与连接的2个row source分别称为row source1和row source 2。Join过程的各个步骤经常是串行操作,即使相关的row source可以被并行访问,即可以并行的读取做join连接的两个row source的数据,但是在将表中符合限制条件的数据读入到内存形成row source后,join的其它步骤一般是串行的。有多种方法可以将2个表连接起来,当然每种方法都有自己的优缺点,每种连接类型只有在特定的条件下才会发挥出其最大优势。
row source(表)之间的连接顺序对于查询的效率有非常大的影响。通过首先存取特定的表,即将该表作为驱动表,这样可以先应用某些限制条件,从而得到一个较小的row source,使连接的效率较高,这也就是我们常说的要先执行限制条件的原因。一般是在将表读入内存时,应用where子句中对该表的限制条件。
根据2个row source的连接条件的中操作符的不同,可以将连接分为等值连接(如WHERE A.COL3 = B.COL4)、非等值连接(WHERE A.COL3 > B.COL4)、外连接( ......
前两天将自己本机器中的ASP.NET应用部署到了服务器上,结果出现了些问题.折腾了两天才搞清楚.
首先发现安装.NET3.5时候需要连接Internet,(其实安装包完整的离线安装包)而服务器是内部网络的,每办法只能安装一个VS2008上去,真不明白为何安装VS时候dotNetFramework又不需要连接Internet了.
后来发现在本机器没有问题的应用部上去后又不能访问数据库了(使用OLEDB方式连接的ORACLE),提示本机器未安装oracle8.17以上的客户端,(已经安装了,而且用sqlplus可以访问)开始以为是oralce安装出了问题又安装了oracle9.2客户端也一样,后来google才知道是NTFS文件系统安全问题,解决方法: 在oracle/bin目录,加入给以下用户/组,授完全权限:
asp.net machine account
administrator
authenticated users
并且将Asp.net加入到administrator组,再重启
后又出现错误,提示无法获取Oracle错误信息,google了下才知道使卸载oralce8.17没有删除注册表信息安装oracle9.2就无法写注册表了.所以卸载后需要手工清理注册表,后在安装. ......
前两天将自己本机器中的ASP.NET应用部署到了服务器上,结果出现了些问题.折腾了两天才搞清楚.
首先发现安装.NET3.5时候需要连接Internet,(其实安装包完整的离线安装包)而服务器是内部网络的,每办法只能安装一个VS2008上去,真不明白为何安装VS时候dotNetFramework又不需要连接Internet了.
后来发现在本机器没有问题的应用部上去后又不能访问数据库了(使用OLEDB方式连接的ORACLE),提示本机器未安装oracle8.17以上的客户端,(已经安装了,而且用sqlplus可以访问)开始以为是oralce安装出了问题又安装了oracle9.2客户端也一样,后来google才知道是NTFS文件系统安全问题,解决方法: 在oracle/bin目录,加入给以下用户/组,授完全权限:
asp.net machine account
administrator
authenticated users
并且将Asp.net加入到administrator组,再重启
后又出现错误,提示无法获取Oracle错误信息,google了下才知道使卸载oralce8.17没有删除注册表信息安装oracle9.2就无法写注册表了.所以卸载后需要手工清理注册表,后在安装. ......
Oracle SQL与ANSI SQL区别
相信大家都使用过SQL SERVER。今天给大家简单介绍一下Oracle SQL与ANSI SQL区别。其实,SQL SERVER与与ANSI SQL也有区别。
1、首先大家要明白什么是ANSI
ANSI:美国国家标准学会(American National Standards Institute)。当时,美国的许多企业和专业技术团体,已开始了标准化工作,但因彼此间没有协调,存在不少矛盾和问题。为了进一步提高效率,数百个科技学会、协会组织和团体,均认为有必要成立一个专门的标准化机构,并制订统一的通用标准。
2、那么在学习SQL语句的过程,ANSI SQL到底是什么
(1)作为程序员开发者们应该知道,在使用那些非标准的SQL命令(比如Oracle、微软和MySQL等数据库系统)从跨平台和遵守标准的角度出发,你应该尽量采用ANSI SQL,它是一种和平台无关的数据库语言。其实为什么这么说了,很简单就是可能在Oracle能够运行的SQL语句不一定在SQL SERVER当中能够运行,那么在跨平台当中数据操作就会带来困难。
(2)程序在开发的时候,如果使用SQL语句对数据进行操作。一般的建议不管你在使用哪种数据库系统,如果该数据库系统中的SQL完全支持ANSI SQL标准,那么请你尽量使用ANSI SQL。
3、ANSI数据类型与Oracle中 ......
Oracle SQL与ANSI SQL区别
相信大家都使用过SQL SERVER。今天给大家简单介绍一下Oracle SQL与ANSI SQL区别。其实,SQL SERVER与与ANSI SQL也有区别。
1、首先大家要明白什么是ANSI
ANSI:美国国家标准学会(American National Standards Institute)。当时,美国的许多企业和专业技术团体,已开始了标准化工作,但因彼此间没有协调,存在不少矛盾和问题。为了进一步提高效率,数百个科技学会、协会组织和团体,均认为有必要成立一个专门的标准化机构,并制订统一的通用标准。
2、那么在学习SQL语句的过程,ANSI SQL到底是什么
(1)作为程序员开发者们应该知道,在使用那些非标准的SQL命令(比如Oracle、微软和MySQL等数据库系统)从跨平台和遵守标准的角度出发,你应该尽量采用ANSI SQL,它是一种和平台无关的数据库语言。其实为什么这么说了,很简单就是可能在Oracle能够运行的SQL语句不一定在SQL SERVER当中能够运行,那么在跨平台当中数据操作就会带来困难。
(2)程序在开发的时候,如果使用SQL语句对数据进行操作。一般的建议不管你在使用哪种数据库系统,如果该数据库系统中的SQL完全支持ANSI SQL标准,那么请你尽量使用ANSI SQL。
3、ANSI数据类型与Oracle中 ......
查询及删除重复记录的SQL语句
1、查找表中多余的重复记录,重复记录是根据单个字段(peopleId)来判断
select * from people
where peopleId in (select peopleId from people group by peopleId having count(peopleId) > 1)
2、删除表中多余的重复记录,重复记录是根据单个字段(peopleId)来判断,只留有rowid最小的记录
delete from people
where peopleId in (select peopleId from people group by peopleId having count(peopleId) > 1)
and rowid not in (select min(rowid) from people group by peopleId having count(peopleId )>1)
注:rowid为oracle自带不用该.....
3、查找表中多余的重复记录(多个字段)
select * from vitae a
where (a.peopleId,a.seq) in (select peopleId,seq from vitae group by peopleId,seq having count(*) > 1)
4、删除表中多余的重复记录(多个字段),只留有rowid最小的记录
delete from vitae a
where (a.peopleId,a.seq) in (select peopleId,seq from vitae grou ......
查询及删除重复记录的SQL语句
1、查找表中多余的重复记录,重复记录是根据单个字段(peopleId)来判断
select * from people
where peopleId in (select peopleId from people group by peopleId having count(peopleId) > 1)
2、删除表中多余的重复记录,重复记录是根据单个字段(peopleId)来判断,只留有rowid最小的记录
delete from people
where peopleId in (select peopleId from people group by peopleId having count(peopleId) > 1)
and rowid not in (select min(rowid) from people group by peopleId having count(peopleId )>1)
注:rowid为oracle自带不用该.....
3、查找表中多余的重复记录(多个字段)
select * from vitae a
where (a.peopleId,a.seq) in (select peopleId,seq from vitae group by peopleId,seq having count(*) > 1)
4、删除表中多余的重复记录(多个字段),只留有rowid最小的记录
delete from vitae a
where (a.peopleId,a.seq) in (select peopleId,seq from vitae grou ......
SELECT * from ALL_SOURCE
where TYPE='PROCEDURE' AND TEXT LIKE
'%0997500%';
--查询ALL_SOURCE中,(脚本代码)内容与0997500模糊匹配的类型为PROCEDURE(存储过程)的信息。
根据GROUP
BY TYPE
该ALL_SOURCE中只有以下5种类型
1 FUNCTION
2 JAVA
SOURCE
3 PACKAGE
4 PACKAGE BODY
5 PROCEDURE ......
SELECT * from ALL_SOURCE
where TYPE='PROCEDURE' AND TEXT LIKE
'%0997500%';
--查询ALL_SOURCE中,(脚本代码)内容与0997500模糊匹配的类型为PROCEDURE(存储过程)的信息。
根据GROUP
BY TYPE
该ALL_SOURCE中只有以下5种类型
1 FUNCTION
2 JAVA
SOURCE
3 PACKAGE
4 PACKAGE BODY
5 PROCEDURE ......
一:SQL Loader 的特点
oracle自己带了很多的工具可以用来进行数据的迁移、备份和恢复等工作。但是每个工具都有自己的特点。
比如说exp和imp可以对数据库中的数据进行导出和导出的工作,是一种很好的数据库备份和恢复的工具,因此主要用在数据库的热备份和恢复方面。有着速度快,使用简单,快捷的优点;同时也有一些缺点,比如在不同版本数据库之间的导出、导入的过程之中,总会出现这样或者那样的问题,这个也许是oracle公司自己产品的兼容性的问题吧。
sql loader 工具却没有这方面的问题,它可以把一些以文本格式存放的数据顺利的导入到oracle数据库中,是一种在不同数据库之间进行数据迁移的非常方便而且通用的工具。缺点就速度比较慢,另外对blob等类型的数据就有点麻烦了。
二. sqlldr 帮助:
C:\Documents and Settings\David>sqlldr
SQL*Loader: Release 10.2.0.1.0 - Production on 星期四 7月 2 08:54:06 2009
Copyright (c) 1982, 2005, Oracle. All rights reserved.
用法: SQLLDR keyword=value [,keyword=value,...]
有效的关键字:
userid -- ORACLE 用户名/口令
control -- 控制文件名
&nbs ......
一:SQL Loader 的特点
oracle自己带了很多的工具可以用来进行数据的迁移、备份和恢复等工作。但是每个工具都有自己的特点。
比如说exp和imp可以对数据库中的数据进行导出和导出的工作,是一种很好的数据库备份和恢复的工具,因此主要用在数据库的热备份和恢复方面。有着速度快,使用简单,快捷的优点;同时也有一些缺点,比如在不同版本数据库之间的导出、导入的过程之中,总会出现这样或者那样的问题,这个也许是oracle公司自己产品的兼容性的问题吧。
sql loader 工具却没有这方面的问题,它可以把一些以文本格式存放的数据顺利的导入到oracle数据库中,是一种在不同数据库之间进行数据迁移的非常方便而且通用的工具。缺点就速度比较慢,另外对blob等类型的数据就有点麻烦了。
二. sqlldr 帮助:
C:\Documents and Settings\David>sqlldr
SQL*Loader: Release 10.2.0.1.0 - Production on 星期四 7月 2 08:54:06 2009
Copyright (c) 1982, 2005, Oracle. All rights reserved.
用法: SQLLDR keyword=value [,keyword=value,...]
有效的关键字:
userid -- ORACLE 用户名/口令
control -- 控制文件名
&nbs ......