虽然这是我找到最详细的配置描述,但是尝试还是没有成功。
1.下载Oracle Client Package
.
从
http://www.oracle.com/technology/software/tech/oci/instantclient/htdocs/winsoft.html
下载
Instant
Client Package – Basic
包
(
标注
:All files
required to run OCI, OCCI, and JDBC-OCI applications)
这里下载的是
Version 11.1.0.7
2.本地保存Oracle Client
Package:
创
建文件夹
,
比如
oracle_client,
将
下载的文件加压缩到此文件夹里
.(
笔者目录
:
D:\oracle_client\instantclient_10_2)
3.
在当前目录下
,新建立两个文件,sqlnet.ora和tnsnames.ora然后再
手动配置
sqlnet.ora
和
tnsnames.ora
比如这里是
:
sqlnet.ora
文件内容
:
SQLNET.AUTHENTICATION_SERVICES=
(NTS)
NAMES.DIRECTORY_PATH=
(TNSNAMES, EZCONNECT)
tnsnames.ora
文件内容
(
斜体表示需要替换的内容
):
orcl
=
(DESCRIPTION =
(ADDRESS_LIST
=
(ADDRESS
= (PROTOCOL = TCP)(HOST = 192.168.1.103
)(PORT =
1521))
......
虽然这是我找到最详细的配置描述,但是尝试还是没有成功。
1.下载Oracle Client Package
.
从
http://www.oracle.com/technology/software/tech/oci/instantclient/htdocs/winsoft.html
下载
Instant
Client Package – Basic
包
(
标注
:All files
required to run OCI, OCCI, and JDBC-OCI applications)
这里下载的是
Version 11.1.0.7
2.本地保存Oracle Client
Package:
创
建文件夹
,
比如
oracle_client,
将
下载的文件加压缩到此文件夹里
.(
笔者目录
:
D:\oracle_client\instantclient_10_2)
3.
在当前目录下
,新建立两个文件,sqlnet.ora和tnsnames.ora然后再
手动配置
sqlnet.ora
和
tnsnames.ora
比如这里是
:
sqlnet.ora
文件内容
:
SQLNET.AUTHENTICATION_SERVICES=
(NTS)
NAMES.DIRECTORY_PATH=
(TNSNAMES, EZCONNECT)
tnsnames.ora
文件内容
(
斜体表示需要替换的内容
):
orcl
=
(DESCRIPTION =
(ADDRESS_LIST
=
(ADDRESS
= (PROTOCOL = TCP)(HOST = 192.168.1.103
)(PORT =
1521))
......
虽然这是我找到最详细的配置描述,但是尝试还是没有成功。
1.下载Oracle Client Package
.
从
http://www.oracle.com/technology/software/tech/oci/instantclient/htdocs/winsoft.html
下载
Instant
Client Package – Basic
包
(
标注
:All files
required to run OCI, OCCI, and JDBC-OCI applications)
这里下载的是
Version 11.1.0.7
2.本地保存Oracle Client
Package:
创
建文件夹
,
比如
oracle_client,
将
下载的文件加压缩到此文件夹里
.(
笔者目录
:
D:\oracle_client\instantclient_10_2)
3.
在当前目录下
,新建立两个文件,sqlnet.ora和tnsnames.ora然后再
手动配置
sqlnet.ora
和
tnsnames.ora
比如这里是
:
sqlnet.ora
文件内容
:
SQLNET.AUTHENTICATION_SERVICES=
(NTS)
NAMES.DIRECTORY_PATH=
(TNSNAMES, EZCONNECT)
tnsnames.ora
文件内容
(
斜体表示需要替换的内容
):
orcl
=
(DESCRIPTION =
(ADDRESS_LIST
=
(ADDRESS
= (PROTOCOL = TCP)(HOST = 192.168.1.103
)(PORT =
1521))
......
虽然这是我找到最详细的配置描述,但是尝试还是没有成功。
1.下载Oracle Client Package
.
从
http://www.oracle.com/technology/software/tech/oci/instantclient/htdocs/winsoft.html
下载
Instant
Client Package – Basic
包
(
标注
:All files
required to run OCI, OCCI, and JDBC-OCI applications)
这里下载的是
Version 11.1.0.7
2.本地保存Oracle Client
Package:
创
建文件夹
,
比如
oracle_client,
将
下载的文件加压缩到此文件夹里
.(
笔者目录
:
D:\oracle_client\instantclient_10_2)
3.
在当前目录下
,新建立两个文件,sqlnet.ora和tnsnames.ora然后再
手动配置
sqlnet.ora
和
tnsnames.ora
比如这里是
:
sqlnet.ora
文件内容
:
SQLNET.AUTHENTICATION_SERVICES=
(NTS)
NAMES.DIRECTORY_PATH=
(TNSNAMES, EZCONNECT)
tnsnames.ora
文件内容
(
斜体表示需要替换的内容
):
orcl
=
(DESCRIPTION =
(ADDRESS_LIST
=
(ADDRESS
= (PROTOCOL = TCP)(HOST = 192.168.1.103
)(PORT =
1521))
......
CUBE 和 ROLLUP 之间的区别在于:
CUBE 生成的结果集显示了所选列中值的所有组合的聚合。
ROLLUP 生成的结果集显示了所选列中值的某一层次结构的聚合。
Oracle的GROUP BY语句除了最基本的语法外,还支持ROLLUP和CUBE语句。如果是ROLLUP(A, B, C)的话,首先分成两大步:(1)对于符合条件的每个A,先对(A、B、C)进行GROUP BY,然后对(A、B)进行GROUP BY,然后是(A)进行GROUP BY;(2)对全表进行GROUP BY操作。
按CB,GDM,CZJM统计
SELECT CB,GDM,CZJM,COUNT(*)
from LTJ_DDC
GROUP BY ROLLUP(CB,GDM,CZJM)
如果是GROUP BY CUBE(A, B, C),(1)先对全表进行统计;(2)则首先对(C)进行GROUP BY;(3)然后依次是对于每一个B,先统计B,再统计(B,C);(4)对每个A,按(A)、(A,C)、(A,B)、(A,B,C)进行检索。实例如下:
SELECT CB,GDM,CZJM,COUNT(*)
from LTJ_DDC
GROUP BY CUBE(CB,GDM,CZJM) ......
SQL中的单记录函数
1.ASCII
返回与指定的字符对应的十进制数;
SQL> select ascii(A) A,ascii(a) a,ascii(0) zero,ascii( ) space from dual;
A A ZERO SPACE
--------- --------- --------- ---------
65 97 48 32
2.CHR
给出整数,返回对应的字符;
SQL> select chr(54740) zhao,chr(65) chr65 from dual;
ZH C
-- -
赵 A
3.CONCAT
连接两个字符串;
SQL> select concat(010-,88888888)||转23 高乾竞电话 from dual;
高乾竞电话
----------------
010-88888888转23
4.INITCAP
返回字符串并将字符串的第一个字母变为大写;
SQL> select initcap(smith) upp from dual;
UPP
-----
Smith
5.INSTR(C1,C2,I,J)
在一个字符串中搜索指定的字符,返回发现指定的字符的位置;
C1 被搜索的字符串
C2 希望搜索的字符串
I 搜索的开始位置,默认为1
J 出现的位置,默认为1
SQL> select instr(oracle traning,ra,1,2) instring from dual;
INSTRING
---------
9
6.LENGTH
返回字符串的长度;
SQL> select name,length(name),addr,length(addr),sal,length(to_char(sal)) from gao.nchar_tst;
NAME LENGTH(NAME) ADDR LENGTH(ADDR) SAL LEN ......
60.AVG(DISTINCT|ALL)
all表示对所有的值求平均值,distinct只对不同的值求平均值
SQLWKS> create table table3(xm varchar(8),sal number(7,2));
语句已处理。
SQLWKS> insert into table3 values(gao,1111.11);
SQLWKS> insert into table3 values(gao,1111.11);
SQLWKS> insert into table3 values(zhu,5555.55);
SQLWKS> commit;
SQL> select avg(distinct sal) from gao.table3;
AVG(DISTINCTSAL)
----------------
3333.33
SQL> select avg(all sal) from gao.table3;
AVG(ALLSAL)
-----------
2592.59
61.MAX(DISTINCT|ALL)
求最大值,ALL表示对所有的值求最大值,DISTINCT表示对不同的值求最大值,相同的只取一次
SQL> select max(distinct sal) from scott.emp;
MAX(DISTINCTSAL)
----------------
5000
62.MIN(DISTINCT|ALL)
求最小值,ALL表示对所有的值求最小值,DISTINCT表示对不同的值求最小值,相同的只取一次
SQL> select min(all sal) from gao.table3;
MIN(ALLSAL)
-----------
1111.11
63.STDDEV(distinct|all)
求标准差,ALL表示对所有的值求标准差,DISTINCT表示只对不同的值求标准差
SQL> select s ......
80。LAST
功能描述:从DENSE_RANK返回的集合中取出排在最后面的一个值的行(可能多行,因为值可能相等),因此完整的语法需要在开始处加上一个集合函数以从中取出记录
SAMPLE:下面例子中DENSE_RANK按部门分区,再按佣金commission_pct排序,FIRST取出佣金最低的对应的所有行,然后前面的MAX函数从这个集合中取出薪水最低的值;LAST取出佣金最高的对应的所有行,然后前面的MIN函数从这个集合中取出薪水最高的值
SELECT last_name, department_id, salary,
MIN(salary) KEEP (DENSE_RANK FIRST ORDER BY commission_pct)
OVER (PARTITION BY department_id) "Worst",
MAX(salary) KEEP (DENSE_RANK LAST ORDER BY commission_pct)
OVER (PARTITION BY department_id) "Best"
from employees
WHERE department_id in (20,80)
ORDER BY department_id, salary;
LAST_NAME DEPARTMENT_ID SALARY Worst Best
------------------------- ------------- ---------- ---------- ----------
Fay 20 6000 6000 13000
Hartstein 20 13000 6000 13000
Kumar 80 6100 6100 14000
Banda 80 6200 6100 14000
Johnson 80 6200 6100 14000
Ande 80 6400 6100 14000
Lee 8 ......