??xml version="1.0" encoding="utf-8" standalone="yes"?>亚洲国产婷婷综合在线精品,亚洲乱码av中文一区二区,亚洲精品国精品久久99热一http://www.tkk7.com/ldwblog/archive/2012/10/11/389394.htmlDavid1228David1228Thu, 11 Oct 2012 07:21:00 GMThttp://www.tkk7.com/ldwblog/archive/2012/10/11/389394.htmlhttp://www.tkk7.com/ldwblog/comments/389394.htmlhttp://www.tkk7.com/ldwblog/archive/2012/10/11/389394.html#Feedback0http://www.tkk7.com/ldwblog/comments/commentRss/389394.htmlhttp://www.tkk7.com/ldwblog/services/trackbacks/389394.html通过源码包安装、配|Mysql详细步骤Q?/span>

1、上?/span>mysql-5.5.8-linux2.6-x86_64.tar.gz?/span>Web服务器的/usr/local/目录?/span>

2、解压ƈ重命?/span>

# cd /usr/local

# tar –xvzf mysql-5.5.8-linux2.6-x86_64.tar.gz

# mv mysql-5.5.8-linux2.6-x86_64 mysql

3、配|?/span>/etc/my.cnf

1Q安装操作系l时如果安装?/span>MySql׃生成/etc/my.cnfQ而系l自带的MySql版本较低Q所以替换已有的/etc/my.cnfQ替换之前可以备?/span>my.cnf

#mv /etc/my.cnf  /etc/my.cnf_bak

# cp /usr/local/mysql/support-files/my-medium.cnf /etc/my.cnf

2Q编?/span>/etc/my.cnfQ配|?/span>IPq接Q在mysqld中加入下边的U色字体

#vi /etc/my.cnf

[mysqld]

port            = 3306

socket          = /tmp/mysql.sock

skip-name-resolve

skip-external-locking

3Q保存,退出?/span>

4、添?/span>mysql用户和用L

如果pȝ已经安装?/span>mysqlQ则在添?/span>mysql用户和用L的时候会提示mysql用户Q或用户l)已经存在Q这U提C是正常的?/span>

# groupadd mysql

# useradd -g mysql mysql

5、修?/span>mysql目录权限

1Q设?/span>root用户可以讉K

# chown -R root /usr/local/mysql

2Q设?/span>mysqll和mysql用户能访?/span>/usr/local/mysql?/span>/usr/local/mysql/data

# chgrp -R mysql /usr/local/mysql

#chown -R mysql /usr/local/mysql/data

6、创?/span>mysqlpȝ数据?/span>

# cd /usr/local/mysql

#./scripts/mysql_install_db --user=mysql&

7、?/span>mysql用户启动mysqld

#/usr/local/mysql/bin/mysqld_safe  -user=mysql&

8、设?/span>MySql?/span>root用户的密?/span>

假设root用户的密码ؓ123456Q根据实际环境自行设?/span>

#/usr/local/mysql/bin/mysqladmin -u root password 123456

9、?/span>root用户dMySql

Ҏ(gu)步骤8讑֮的用户密码登?/span>mysql

# cd /usr/local/mysql/bin

#./mysql -u root -p     

Enter password:

10、开?/span>mysqlq程讉K

1Q赋?/span>root用户q程讉K权限

# grant all privileges on *.* to root @"%" identified by "123456";

#flush privileges;

2Q参数说?/span>

a)   grant all privilegesQ赋予所有权限,all可以替换为相x作;

b)   *.*Q说明数据库和表名,*代表所有;

c)   rootQ说明是lroot用户讑֮权限Q可以替换ؓ其他用户Q?/span>

d)   %Q这里是Host名称Q允许所有的q%Q?/span>

e)   123456Q是root用户的密码;

f)   flush privilegesQ是把新赋权限表h加蝲到内存,可以理解为即时生效?/span>

11、配|?/span>MySql自动启动

~辑/etc/rc.d/rc.local文gQ在文g最底端加入启动语句

# vi /etc/rc.d/rc.local

……

/usr/local/mysql/bin/mysqld_safe -user=mysql&

通过rpm包安装、配|及卸蝲mysql的详l过E?

  以MySQL-server-4.0.14-0.i386.rpmZQ放?data目录?/p>

  cd /data

  rpm -ivh MySQL-server-4.0.14-0.i386.rpm

  安装完成后在/usr/share/mysql目录中会有一个mysql的启动脚本mysql.server及示例配|文件等(如my-huge.cnf、my-large.cnf、my-medium.cnf)

  拯一个示例配|文件作为mysql的配|文Ӟ

  cp /usr/share/mysql/my-medium.cnf /etc/my.cnf

  rpm包安装完后自动将mysql安装成系l服务,所以可以用下面命令启动、停止mysql

  启动mysql

  /etc/init.d/mysql start ? service mysql start

  停止mysql

  /etc/init.d/mysql stop ? service mysql stop

  到此Qmysql服务安装配|完成?/p>

  安装mysql客户?/p>

  rpm -ivh MySQL-client-4.0.14-0.i386.rpm

  mysql安装好后目录l构如下Q?/p>

  工具E序?usr/bin目录?--ls /usr/bin/mysql*

  服务?/a>E序/usr/sbin/mysqld

  数据目录/var/lib/mysql

  默认情况下mysql错误日志文件、二q制日志文g及进E文件写?var/lib/mysql目录?如localhost.err、localhost.pid、localhost-bin.001{?/p>

  要改变这些情况可以修?etc/my.cnf文g

  如将日志文g写在/var/log目录中,可以在my.cnf文g中加入下面两行:

  [mysqld_safe]

  err-log = /var/log/mysqld.log

  有个实用E序/usr/bin/mysql_install_dbQ该E序可以用来初始? mysql数据?/a>Q即创徏/var/log/mysql目录Q及创徏mysql数据?mysql授权表等信息)及test数据?I库),如果不小心删 除了/var/log/mysql目录可以通过该程序来初始?

  卸蝲mysql

  rpm -qa|grep -i mysql

  rpm -ev MySQL-server-4.0.14-0 MySQL-client-4.0.14-0

  卸蝲?var/lib/mysql中的数据?etc/my.cnf不会删除Q如果确定没用后手工删?/p>

  rm -f /etc/my.cnf

  rm -rf /var/lib/mysql



David1228 2012-10-11 15:21 发表评论
]]>
创徏表空?oraclehttp://www.tkk7.com/ldwblog/archive/2011/08/22/357067.htmlDavid1228David1228Mon, 22 Aug 2011 09:57:00 GMThttp://www.tkk7.com/ldwblog/archive/2011/08/22/357067.htmlhttp://www.tkk7.com/ldwblog/comments/357067.htmlhttp://www.tkk7.com/ldwblog/archive/2011/08/22/357067.html#Feedback0http://www.tkk7.com/ldwblog/comments/commentRss/357067.htmlhttp://www.tkk7.com/ldwblog/services/trackbacks/357067.html
DECLARE
  V_FILENAME VARCHAR2(200);
BEGIN
  select SUBSTR(FILE_NAME,
                1,
                LENGTH(FILE_NAME) - INSTR(REVERSE(FILE_NAME), '/') + 1)
    INTO V_FILENAME
    from dba_data_files
   where tablespace_name = 'ZSDATA'
     AND ROWNUM = 1;
  EXECUTE IMMEDIATE 'CREATE SMALLFILE 
    TABLESPACE ZSMEMBER_DATA
    LOGGING 
    DATAFILE ''' || V_FILENAME ||
                    'zsmember_data.dbf'' SIZE 5M REUSE 
    AUTOEXTEND 
    ON NEXT  5120K MAXSIZE  32767M EXTENT MANAGEMENT LOCAL 
    SEGMENT SPACE MANAGEMENT  AUTO ';
  EXECUTE IMMEDIATE 'CREATE SMALLFILE 
    TABLESPACE ZSMEMBER_IDX
    LOGGING 
    DATAFILE ''' || V_FILENAME ||
                    'zsmember_idx.dbf'' SIZE 5M REUSE 
    AUTOEXTEND 
  


David1228 2011-08-22 17:57 发表评论
]]>
Oracle查询表创建时?/title><link>http://www.tkk7.com/ldwblog/archive/2011/07/12/354135.html</link><dc:creator>David1228</dc:creator><author>David1228</author><pubDate>Tue, 12 Jul 2011 01:48:00 GMT</pubDate><guid>http://www.tkk7.com/ldwblog/archive/2011/07/12/354135.html</guid><wfw:comment>http://www.tkk7.com/ldwblog/comments/354135.html</wfw:comment><comments>http://www.tkk7.com/ldwblog/archive/2011/07/12/354135.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.tkk7.com/ldwblog/comments/commentRss/354135.html</wfw:commentRss><trackback:ping>http://www.tkk7.com/ldwblog/services/trackbacks/354135.html</trackback:ping><description><![CDATA[<div>select CREATED from ALL_OBJECTS<br /> where OBJECT_TYPE='TABLE'<br /> and OBJECT_NAME=your_table_name<br /> 如果是你自己建的表,也可以在USER_OBJECTS中查?br /> select CREATED from USER_OBJECTS<br /> where OBJECT_TYPE='TABLE'<br /> and OBJECT_NAME=your_table_name</div><img src ="http://www.tkk7.com/ldwblog/aggbug/354135.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.tkk7.com/ldwblog/" target="_blank">David1228</a> 2011-07-12 09:48 <a href="http://www.tkk7.com/ldwblog/archive/2011/07/12/354135.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Oracle实用日期函数ȝhttp://www.tkk7.com/ldwblog/archive/2010/09/19/332428.htmlDavid1228David1228Sun, 19 Sep 2010 06:03:00 GMThttp://www.tkk7.com/ldwblog/archive/2010/09/19/332428.htmlhttp://www.tkk7.com/ldwblog/comments/332428.htmlhttp://www.tkk7.com/ldwblog/archive/2010/09/19/332428.html#Feedback0http://www.tkk7.com/ldwblog/comments/commentRss/332428.htmlhttp://www.tkk7.com/ldwblog/services/trackbacks/332428.html startday>=to_char(trunc($startday-1),'yyyyMMdd')
and startday <to_char(trunc($startday),'yyyyMMdd')
说明Q?startday为时间标?函数trunc($startday-10)用来求日期的前十?
函数to_char(trunc($startday-10),'yyyyMMdd')用来求得日期以q月日的形式转化为charcd
2、最q十天的数据汇?
startday>=to_char(trunc($startday-10),'yyyyMMdd')
and startday <to_char(trunc($startday),'yyyyMMdd')
说明Q?startday为时间标?函数trunc($startday-10)用来求日期的前十?
函数to_char(trunc($startday-10),'yyyyMMdd')用来求得日期以q月日的形式转化为charcd
二、月汇M?
1、一个月数据汇?
startday>=to_char(trunc($startday,'mm'),'yyyyMMdd')
and startday <to_char(trunc(add_months($startday,1),'mm'),'yyyyMMdd')
说明Q?startday为时间标?函数trunc($startday,'mm')用来求日期所在月W一?
函数to_char(trunc($startday,'mm'),'yyyyMMdd')用来求得日期所在月W一天以q月日的形式转化为charcd
2、一个月内Q意时间段内的数据汇?
求日期所在月的五号到月末之前的四天的汇?
startday>=to_char(trunc($startday,'mm')+4,'yyyyMMdd')
and startday <to_char(trunc(add_months($startday,1),'mm')-4,'yyyyMMdd')
三、周汇M?
1、一个周数据汇?
startday>=to_char(trunc($startday,'d')+1,'yyyyMMdd')
and startday <to_char(trunc($startday,'d')+8,'yyyyMMdd')
说明Q?startday为时间标?函数trunc($startday,'d')用来求日期所在周的第一天根据所在地Z同可能ؓ周日或周一
函数to_char(trunc($startday,'d')+1,'yyyyMMdd')用来求得日期以q月日的形式转化为charcd
说明一周的W一天ؓ周日或者周一取决于你数据库的nls讄
select * from nls_session_parameters;
alter session set NLS_TERRITORY='AMERICA';
四、小时汇M?
1、求前N个小时的数据汇?
startday=to_char($startday,'yyyyMMdd') and
starttime>=to_char(trunc($startday-N/24,'hh24'),'hh24')||'0000' and
starttime<to_char(trunc($startday,'hh24'),'hh24')||'0000'
说明Q?startday为时间标?函数to_char($startday,'yyyyMMdd')用来求日期以q月日的形式转化为charcd
函数to_char(trunc(sysdate-N/24,'hh24'),'hh24')用来求得日期以24时制的形式转化为charcd

David1228 2010-09-19 14:03 发表评论
]]>
表空间的作用http://www.tkk7.com/ldwblog/archive/2010/09/13/331936.htmlDavid1228David1228Mon, 13 Sep 2010 13:49:00 GMThttp://www.tkk7.com/ldwblog/archive/2010/09/13/331936.htmlhttp://www.tkk7.com/ldwblog/comments/331936.htmlhttp://www.tkk7.com/ldwblog/archive/2010/09/13/331936.html#Feedback0http://www.tkk7.com/ldwblog/comments/commentRss/331936.htmlhttp://www.tkk7.com/ldwblog/services/trackbacks/331936.html
2010-07-13

 

文章分类:数据?/a>

SQL Server数据库与Oracle数据库之间最大的区别要属表空间设计。Oracle数据库开创性地提出了表I间的设计理念,qؓOracle数据库的高性能做出了不可磨灭的贡献。可以这么说QOracle中很多优化都是基于表I间的设计理念而实现的?/p>

  典型应用一Q控制用h占用的表I间配额?/strong>

  在一些大型的数据库应用中Q我们需要控制某个用h者某一l用户其所占用的磁盘空间。这好像在文g服务?/a>中,需要ؓ每个用户讄盘配额一P以防?a style="color: #000000" title="盘" target="_blank">盘I间耗竭。所以,在数据库中,我们也需要限制用h可以使用的磁盘空间大。ؓ了达到这个目的,我们可以通过表空间来实现?/p>

  我们可以在Oracle数据库中Q徏立不同的表空_为其讄最大的存储定wQ然后把用户归属于这个表I间。如此的话,q个用户的存储容量,受到这个表I间大小的限制?/p>

  典型应用二:控制数据库所占用的磁盘空间?/strong>

  有时候,在Oracle数据?a style="color: #000000" title="服务? target="_blank">服务?/a>中,可能q行的不止一个服务。除了数据库服务器外Q可能还有邮件服务器{应用系l服务器。ؓ此,需要先对Oracle数据库的盘I间作个规划Q否则,当多个应用程序服务所占用的磁盘空间都无限增加Ӟ最后可能导致各个服务都因ؓ盘I间的耗竭而停止。所以,在同一台服务器上用多个应用程序服务,我们往往需要先l他们进行磁盘空间的规划和分配。各个服务都不能够超q我们分配给他的最大限额,或者超q后及时的提醒我们。只有这P才能够避免因为磁盘空间的耗竭而导致各U应用服务的崩溃?/p>

  典型应用三:灉|攄表空_提高数据库的输入输出性能?/strong>

  数据库管理员q可以将不同cd的数据放|到不同的表I间中,q样可以明显提高数据库输入输出性能Q有利于数据的备份与恢复{管理工作。因为我们数据库理员在备䆾或者恢复数据的时候,可以按表I间来备份数据。如在设计一个大型的分销pȝ后台数据库的时候,我们可以按省份徏立表I间。与江省相关的数据文g攄在浙江省的表I间中,北京发生业务记录Q则记录在北京这个表I间中。如此,当浙江省的业务数据出现错误的时候,则直接还原浙江省的表I间卛_。很明显Q这栯计,当某个表I间中的数据出现错误需要恢复的时候,可以避免对其他表I间的媄响?/p>

  另外Q还可以对表I间q行独立备䆾。当数据库容量比较大的时候,若一下子Ҏ(gu)个数据库q行备䆾Q显然会占用比较多的旉。虽然说Oracle数据库支持热备䆾Q但是在备䆾期间Q会占用比较多的pȝ资源Q从而造成数据库性能的下降。ؓ此,当数据库定w比较大的时候,我们需要进行设|多个表I间Q然后规划各个表I间的备份时_从而可以提高整个数据库的备份效率,降低备䆾对于数据库正常运行的影响?/p>

  典型应用四:大表的排序操作?/strong>

  我们都知道,当表中的记录比较多的时候,对他们进行查询,速度会比较慢。第一ơ查询成功后Q若再对其进行第二次重新排序Q仍焉要这么多的时间。ؓ此,我们在数据库设计的时候,针对q种定w比较大的表对象,往往把它攑֜一个独立的表空_以提高数据库的性能?/p>

  典型应用五:日志文g与数据文件分开放,提高数据?/strong>安全性?/strong>

  默认情况下,日志文g与数据文件存攑֜同一表空间。但是,q对于数据库安全斚w来说Q不是很好。所以,我们在数据库设计的过E中Q往往喜欢把日志文Ӟ特别是重做日志文Ӟ攑֜一个独立的表空间中Q然后把它存攑֜另外一块硬盘上。如此的话,当存放数据文件的盘出现故障Ӟ能够马上通过存放在另一个表I间的重做日志文ӞҎ(gu)据库q行修复Q以减少企业因ؓ数据丢失所带来的损失?/p>

  当然Q表I间的优势还不仅仅这些,企业对于数据库的性能要求高Q或者数据库定w大Q则表空间的优势׃大?/p>

  下面Q我们就具体来看看Oracle数据库中表空间的处理方式Q看其在性能与安全性方面是否有_的优势与SQL Server数据库抗衡?/p>

  在数据库设计的时候,我们数据库管理员按如下顺序设|表I间?/p>

W一步:建立表空间?/strong>

  在设计数据库的时候,首先需要设计表I间。我们需要考虑Q是只徏立一个表I间呢,q是需要徏立多个表I间Q以及各个表I间的存放位|、磁盘限额等{?/p>

  到底设计多少个表I间合理Q没有统一的说法,q主要根据企业的实际需求去判断。如企业需要对用户q行盘限额控制的,则就需要根据用L数量来设|表I间。当企业的数据容量比较大Q而其又对数据库的性能有比较高的要求时Q就需要根据不同类型的数据Q设|不同的表空_以提高其输入输出性能?/p>

  W二步:建立用户Qƈ制定用户的默认表I间?/strong>

  在徏立用L时候,我们数据库管理员要指定用L默认表空间。因为我们在利用CREATE语句创徏数据库对象,如数据库表的时候,光认是存储在数据库的当前默认空间。若不指定用户默认表I间的话Q则用户每次创徏数据库对象的时候,都要指定表空_昄Q这q不是很合理?/p>

  另外要注意,不同的表I间有不同的权限控制。用户对于表I间Ah完全控制权限Q可能对于表I间B只有查询权限,甚至q连接的权限的都没有。所以,合理为用户配|表I间的访问权限,也是提高数据库安全性的一个方法?/p>



David1228 2010-09-13 21:49 发表评论
]]>
造成ORA-12560: TNS: 协议适配器错误的问题的原因有三个http://www.tkk7.com/ldwblog/archive/2010/09/01/330497.htmlDavid1228David1228Wed, 01 Sep 2010 01:32:00 GMThttp://www.tkk7.com/ldwblog/archive/2010/09/01/330497.htmlhttp://www.tkk7.com/ldwblog/comments/330497.htmlhttp://www.tkk7.com/ldwblog/archive/2010/09/01/330497.html#Feedback0http://www.tkk7.com/ldwblog/comments/commentRss/330497.htmlhttp://www.tkk7.com/ldwblog/services/trackbacks/330497.html转蝲http://queue19.javaeye.com/blog/409580
造成ORA-12560: TNS: 协议适配器错误的问题的原因有三个Q?/p>


?.监听服务没有赯v来。windowsq_个一如下操作Q开?--E序---理工具---服务Q打开服务面板Q?
启动oraclehome92TNSlistener服务?/p>

 

?.database instance没有赯v来。windowsq_如下操作Q开?--E序---理工具---服务Q打开服务
面板Q启动oracleserviceXXXX,XXXX是你的database SID.

?.注册表问题。regeditQ然后进入HKEY_LOCAL_MACHINE\SOFTWARE\ORACLE\HOME0该环境变量ORACLE_SID讄为XXXX,XXXX是你的database SID.或者右几我的电(sh)脑,属?-高--环境变量---pȝ变量--新徏Q变量名=oracle_sid,变量?XXXX,XXXX是你的database SID.或者进入sqlplus前,在command line?
输set oracle_sid=XXXX,XXXX是你的database SID.l过以上步骤Q就可以解决问题了?/p>

David1228 2010-09-01 09:32 发表评论
]]>
Oracle里面的JOINq接Q加?+)的用和例子http://www.tkk7.com/ldwblog/archive/2010/08/21/329518.htmlDavid1228David1228Sat, 21 Aug 2010 01:06:00 GMThttp://www.tkk7.com/ldwblog/archive/2010/08/21/329518.htmlhttp://www.tkk7.com/ldwblog/comments/329518.htmlhttp://www.tkk7.com/ldwblog/archive/2010/08/21/329518.html#Feedback0http://www.tkk7.com/ldwblog/comments/commentRss/329518.htmlhttp://www.tkk7.com/ldwblog/services/trackbacks/329518.html转蝲自http://www.java2000.net/p19263

假设?
a?
id
1
2
3
4

b?
id
1
2
3

希望出来l果

a.id b.id
1 1
2 2
3 3
4

用left join ?
SQL code select a.id,b.id
form a
left jion b on a.id=b.id


?+)?
SQL code select a.id,b.id
form a ,b
where a.id=b.id(+)


?+)的语法简z,Ҏ(gu)LQ但只是ORACLE支持QLEFT JOIN是通用的,其它没有差别

zengdan84Q?/strong>
select * from a, b where a.id = b.id;

对于外连接,Oracle中可以?#8220;(+)”来表C,9i可以使用LEFT/RIGHT/FULL OUTER JOINQ下面将配合实例一一介绍?

1. LEFT OUTER JOINQ左外关?
SELECT e.last_name, e.department_id, d.department_name
FROM employees e
LEFT OUTER JOIN departments d
ON (e.department_id = d.department_id);

{h(hun)?

SELECT e.last_name, e.department_id, d.department_name
FROM employees e, departments d
WHERE e.department_id=d.department_id(+);


l果为:所有员工及对应部门的记录,包括没有对应部门~号department_id的员工记录?

2. RIGHT OUTER JOINQ右外关?

SELECT e.last_name, e.department_id, d.department_name
FROM employees e
RIGHT OUTER JOIN departments d
ON (e.department_id = d.department_id);

{h(hun)?

SELECT e.last_name, e.department_id, d.department_name
FROM employees e, departments d
WHERE e.department_id(+)=d.department_id;

l果为:所有员工及对应部门的记录,包括没有M员工的部门记录?

3. FULL OUTER JOINQ全外关?

SELECT e.last_name, e.department_id, d.department_name
FROM employees e
FULL OUTER JOIN departments d
ON (e.department_id = d.department_id);

l果为:所有员工及对应部门的记录,包括没有对应部门~号department_id的员工记录和没有M员工的部门记录?

chensi05Q?/strong>
说简单点是哪边加h哪边

wuchunyu002Q?/strong>
外连?
除了昄匚w相等q接条g的数据外,q可以显C某一个表中无法匹配相{连接条件的记录!
------------------------------------------------
1) 左条?+) = x?
左条件所在的表必MD行相{连接条件的匚w,而右条g所在的表除了匹配相{连接条件外Q还可以昄无法匚wq接条g的数?
也称为右外连?
--------------------------------
可以用下列语句取?
SELECT...FROM ? RIGHT OUTER JOIN ? ON 条g;
2) 左条?= x?+)
x件所在的表必MD行相{连接条件的匚w,而左条g所在的表除了匹配相{连接条件外Q还可以昄无法匚wq接条g的数?
也称为左外连?
--------------------------------
可以用下列语句取?
SELECT...FROM ? LEFT OUTER JOIN ? ON 条g;

REM 除了相等q接之外,昄没有员工的部门信?
SELECT * FROM EMP,DEPT WHERE EMP.DEPTNO(+) = DEPT.DEPTNO;
SELECT * FROM EMP RIGHT OUTER JOIN DEPT ON EMP.DEPTNO = DEPT.DEPTNO;
REM 除了相等q接之外,昄没有部门的员工信?
SELECT * FROM EMP,DEPT WHERE EMP.DEPTNO = DEPT.DEPTNO(+);
SELECT * FROM EMP LEFT OUTER JOIN DEPT ON EMP.DEPTNO = DEPT.DEPTNO;


shenliang1985(沈亮)Q?/strong>
Oracle 你用在From语句后用Outer Join语法 而不是Oracle的Join操作W?+).而且(+)是要受下面的规则限制的,但Outer Join语法则不受的~~

1Q你不可以在查询块中使用(+) 当它同时包含 join的from语句?
2Q?+)只是在where语句?q且只能对应一个表或视囄一行字D?
3Q如果A和B做联接时有多个条Ӟ那么(+)必须完善所有的匚w条gQ?
如果没有 ,oracle不会警告你~只是l果自然不同?
4Q不可以在作Z个表外查?另张表内查询?+)联接操作~~
5Q不可以用(+Q外联接到自?当然Self Join是可以的
6Q含Q?Q的Where后的注意
OR不可?
IN不可?
子查询不可用

以下l些个例子:
SQL code SQL>
desc part

Name
Null? Type
----------------------------------------- -------- -----------------
PART_ID NOT
NULL
VARCHAR2(4)
SUPPLIER_ID
VARCHAR2(4)

SQL
>
select
*
from part;

PART SUPP
---- ----
P1 S1
P2 S2
P3
P4

SQL
>
desc supplier

Name
Null? Type
----------------------------------------- -------- -----------------
SUPPLIER_ID NOT
NULL
VARCHAR2(4)
SUPPLIER_NAME
NOT
NULL
VARCHAR2(20)

SQL
>
select
*
from supplier;

SUPP SUPPLIER_NAME
---- --------------------
S1 Supplier#1
S2 Supplier#
2
S3 Supplier#
3

SQL
>
select p.part_id, s.supplier_name
2
from part p, supplier s
3
where p.supplier_id = s.supplier_id (+);

PART SUPPLIER_NAME
---- --------------------
P1 Supplier#1
P2 Supplier#
2
P3
P4

--(+)是单向的

SQL
>
select p.part_id, s.supplier_name
2
from part p, supplier s
3
where p.supplier_id (+) = s.supplier_id (+);
where p.supplier_id (+) = s.supplier_id (+)
*
ERROR at line
3:
ORA
-01468: a predicate may reference only one outer-joined table
--实现Full Join的方?/font>

SQL
>
select p.part_id, s.supplier_name
2
from part p, supplier s
3
where p.supplier_id = s.supplier_id (+)
4
union
5
select p.part_id, s.supplier_name
6
from part p, supplier s
7
where p.supplier_id (+) = s.supplier_id;

PART SUPPLIER_NAME
---- --------------------
P1 Supplier#1
P2 Supplier#
2
P3
P4
Supplier#
3
--现在的语?
SQL>
select p.part_id, s.supplier_name
2
from part p full
outer
join supplier s
3
on p.supplier_id = s.supplier_id;

PART SUPPLIER_NAME
---- --------------------
P1 Supplier#1
P2 Supplier#
2
P4
P3
Supplier#
3

另外的EGQ?

SQL code
SQL
>
select
*
from testa;

ID NAME ADDR AGE
---------- ------ ------ ----------

3 ?sh)?南京 23
5 物理 北京 23
6 物理 沛_ 25
1 ?sh)?上v 23
2 ?sh)?北京 22
4 物理 芜湖 22
7 艺术 上v 21
8 歌剧 苏州 16
9 沈亮 上v 22

已选择9行?

SQL
>
select
*
from testb;

ID ADDR
---------- ----------

7 上v
1 北京
3 上v
5 合肥
--匚w完全
select testa.id,testa.addr from testa,testb where testa.id(+)=testb.id and
testa.addr(
+)=testb.addr;

ID ADDR
---------- ------

7 上v



现在的Outer JoinҎ(gu)是Oracle9i时开始引用的 ANSI标准的联接语法,现在的则比较直观 ?
通过上边Full Join的实现方?不难看到ANSI的联接语法要比用含Union?+)的执行效率更高~?/div>

David1228 2010-08-21 09:06 发表评论
]]>Oracle导入导出命o {?.....http://www.tkk7.com/ldwblog/archive/2010/01/05/308318.htmlDavid1228David1228Tue, 05 Jan 2010 10:12:00 GMThttp://www.tkk7.com/ldwblog/archive/2010/01/05/308318.htmlhttp://www.tkk7.com/ldwblog/comments/308318.htmlhttp://www.tkk7.com/ldwblog/archive/2010/01/05/308318.html#Feedback0http://www.tkk7.com/ldwblog/comments/commentRss/308318.htmlhttp://www.tkk7.com/ldwblog/services/trackbacks/308318.html    输入导出命o:  exp system/system@mis file="d:\backup\2010-1-5.dmp"  导出的是dmp文g
   导入命oQ?imp rmp/rmp@mis fromuser="system" touser="rmp" file="d:\backup\2010-1-5.dmp"


通过pl/sql  选择Tools--->Export Table --->选中要导出的?-->选择SQL Inserts 选择Drop tables  选择导出的目?--点击Export 导出的文件data.sql

导入的时候通过选择Command Window 然后在显C的H口下输入@后点d车键(Enter) --》选择导出的data.sql  ---->执行?,,,OK

David1228 2010-01-05 18:12 发表评论
]]>
两条集合函数的应?/title><link>http://www.tkk7.com/ldwblog/archive/2009/11/25/303673.html</link><dc:creator>David1228</dc:creator><author>David1228</author><pubDate>Wed, 25 Nov 2009 09:58:00 GMT</pubDate><guid>http://www.tkk7.com/ldwblog/archive/2009/11/25/303673.html</guid><wfw:comment>http://www.tkk7.com/ldwblog/comments/303673.html</wfw:comment><comments>http://www.tkk7.com/ldwblog/archive/2009/11/25/303673.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.tkk7.com/ldwblog/comments/commentRss/303673.html</wfw:commentRss><trackback:ping>http://www.tkk7.com/ldwblog/services/trackbacks/303673.html</trackback:ping><description><![CDATA[sql语句Q如何统计一列中的值重复出现的ơ数Q查询出的结果按ơ数的倒序?<br /> 解决?br /> select * from (select col,count(col) as c from table group by col) as t order by t.c <br /> <br /> <br /> <p>本来的目标是 MAX(...) Q结?q么一?HQL 语句L得不到结构:<br /> string query = "SELECT MAX(ID) FROM Student";<br /> 另外两句Q?SELECT MAX(Student.ID) FROM Student "  ?"SELECT MAX(ID) FROM Student AS stud";<br /> 同样得不到结果,q回的的均是 Student 对象集合</p> <p>刚开始以Z支持 MAX 函数Q但是SELECT COUNT() FROM Student Q就可以正确q回U律敎ͼ而且很多文档也多证明了HQL支持ANSI SQL集合函数Q?/p> <p>l于发现 只有 "SELECT MAX(stud.ID) FROM Student AS stud";<br /> 当然  "SELECT MAX(stud.ID) FROM Student stud" 也是正确?/p> <p>转蝲h明出处:http://blog.csdn.net/Jinglecat/archive/2005/08/03/445296.aspx</p> <img src ="http://www.tkk7.com/ldwblog/aggbug/303673.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.tkk7.com/ldwblog/" target="_blank">David1228</a> 2009-11-25 17:58 <a href="http://www.tkk7.com/ldwblog/archive/2009/11/25/303673.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>查询不重复记录(表中某个字段重复的取其中一条记录的sqlQ按旉最新或者版本最新获取)Q红?/title><link>http://www.tkk7.com/ldwblog/archive/2009/11/25/303618.html</link><dc:creator>David1228</dc:creator><author>David1228</author><pubDate>Wed, 25 Nov 2009 06:58:00 GMT</pubDate><guid>http://www.tkk7.com/ldwblog/archive/2009/11/25/303618.html</guid><wfw:comment>http://www.tkk7.com/ldwblog/comments/303618.html</wfw:comment><comments>http://www.tkk7.com/ldwblog/archive/2009/11/25/303618.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.tkk7.com/ldwblog/comments/commentRss/303618.html</wfw:commentRss><trackback:ping>http://www.tkk7.com/ldwblog/services/trackbacks/303618.html</trackback:ping><description><![CDATA[select t1.id,t1.parent_sys_fun_point_id,t1.sys_fun_point_type,t1.sys_fun_point_state,t2.sys_fun_point_ver,<br />        t4.sys_fun_point_name ,t2.create_time,t4.sys_fun_point_code,t4.sys_fun_point_desc,t2.sys_fun_point_info_id,t1.sys_fun_point_layer <br />          from req_system_function_point t1,<br />                 (<span style="color: #0000ff">select distinct t.sys_fun_point_id,t.sys_fun_point_ver,t.sys_fun_point_info_id,t.create_time,t.sys_ver<br />                    from req_sys_fun_point_version t <br />                       where t.sys_ver <= (select tt.cur_sys_ver from req_sys tt)) </span>t2,<br />                       req_sys_fun_point_info t4<br />           where t1.parent_sys_fun_point_id is not null <br />                        and t1.id = t2.sys_fun_point_id <br />                        and t4.id=t2.sys_fun_point_info_id <br />                        and t1.sys_fun_point_state = 0 <br />                        and <span style="color: #ff0000">t2.sys_ver=(select max(t3.sys_ver)  from  req_sys_fun_point_version t3 where  t1.id=t3.sys_fun_point_id );</span> <img src ="http://www.tkk7.com/ldwblog/aggbug/303618.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.tkk7.com/ldwblog/" target="_blank">David1228</a> 2009-11-25 14:58 <a href="http://www.tkk7.com/ldwblog/archive/2009/11/25/303618.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Oracle SQL中的IN ?EXSITS区别ȝhttp://www.tkk7.com/ldwblog/archive/2009/03/31/263095.htmlDavid1228David1228Tue, 31 Mar 2009 05:08:00 GMThttp://www.tkk7.com/ldwblog/archive/2009/03/31/263095.htmlhttp://www.tkk7.com/ldwblog/comments/263095.htmlhttp://www.tkk7.com/ldwblog/archive/2009/03/31/263095.html#Feedback0http://www.tkk7.com/ldwblog/comments/commentRss/263095.htmlhttp://www.tkk7.com/ldwblog/services/trackbacks/263095.html 定l定的值是否与子查询或列表中的值相匚w?

EXISTS
指定一个子查询Q检行的存在?

比较使用 EXISTS ?IN 的查?

q个例子比较了两个语义类似的查询?
W一个查询?EXISTS 而第二个查询使用 IN。注意两个查询返回相同的信息?
SELECT DISTINCT pub_name
FROM publishers
WHERE EXISTS
(SELECT *
FROM titles
WHERE pub_id = publishers.pub_id
AND type = 'business')

-- Or, using the IN clause:

SELECT distinct pub_name
FROM publishers
WHERE pub_id IN
(SELECT pub_id
FROM titles
WHERE type = 'business')

下面是Q一查询的结果集Q?
pub_name
----------------------------------------
Algodata Infosystems
New Moon Books


exits 相当于存在量词:表示集合存在,也就是集合不为空只作用一个集?
例如 exist P表示P不空时ؓ? not exist P表示p为空时ؓ真in表示一个标量和一元关pȝ关系?
例如Qs in P表示当s与P中的某个值相{时 为真; s not in P 表示s与P中的每一个值都不相{时 为真

在Oracle SQL中取数据时有时要用到in ?exists 那么他们有什么区别呢Q?

1)性能上的比较
比如Select * from T1 where x in ( select y from T2 )
执行的过E相当于:
select *
  from t1, ( select distinct y from t2 ) t2
where t1.x = t2.y;

相对?

select * from t1 where exists ( select null from t2 where y = x )
执行的过E相当于:
for x in ( select * from t1 )
   loop
      if ( exists ( select null from t2 where y = x.x )
      then
         OUTPUT THE RECORD
      end if
end loop
?T1 不可避免的要被完全扫描一?

分别适用在什么情?
以子查询 ( select y from T2 )虑方向
如果子查询的l果集很大需要消耗很多时_但是T1比较?yu)执? select null from t2 where y = x.x )非常快,那么exists比较适合用在q里
相对应得子查询的l果集比较小的时候就应该使用in.

in?span class="hilite1">exists
in 是把外表和内表作hash q接Q?span class="hilite1">exists是对外表作loop循环Q每ơloop循环再对内表q行查询?
一直以来认?span class="hilite1">exists比in效率高的说法是不准确的?
如果查询的两个表大小相当Q那么用in?span class="hilite1">exists差别不大?

如果两个表中一个较?yu),一个是大表Q则子查询表大的?span class="hilite1">existsQ子查询表小的用inQ?
例如Q表AQ小表)Q表BQ大表)
1Q?
select * from A where cc in (select cc from B)
效率低,用到了A表上cc列的索引Q?
select * from A where exists(select cc from B where cc=A.cc)
效率高,用到了B表上cc列的索引?

相反?
2Q?
select * from B where cc in (select cc from A)
效率高,用到了B表上cc列的索引Q?
select * from B where exists(select cc from A where cc=B.cc)
效率低,用到了A表上cc列的索引?

not in 和not exists
如果查询语句使用了not in 那么内外表都q行全表扫描Q没有用到烦引;
而not extsts 的子查询依然能用到表上的索引?
所以无论那个表大,用not exists都比not in要快?

in ?=的区?
select name from student where name in ('zhang','wang','li','zhao');

?
select name from student where name='zhang' or name='li' or name='wang' or name='zhao'的结果是相同的?


David1228 2009-03-31 13:08 发表评论
]]>
oracle 存储q程和函数学习笔?http://www.tkk7.com/ldwblog/archive/2009/01/31/252783.htmlDavid1228David1228Sat, 31 Jan 2009 04:18:00 GMThttp://www.tkk7.com/ldwblog/archive/2009/01/31/252783.html
create [or replace] procedure procedure_name
  
[(argument[{in|out|in out}] type,
    
   argument
[{in|out|in out}] type)] {is|as}
  procedure_body
  
  

单的例子Q?/p>



  
create procedure RaiseError(
   
/*if p_Raise is true,then an unhandled error is raised.
   if p_Raise is false,the procedure completes successfully.
*/
      p_Raise 
in boolean:=true,
      p_ParameterA  out 
numberas
      
  
begin 
      p_Parameter1:
='abcdwxc';
      p_Parameter2:
=143;
  
end ParameterLength;

 

删除q程语法Q?/font>

drop procedure procedure_name;

 

2、创建函数的语法Q?/p>

Code

 

单函数的例子Q?/p>

 create function ClassInfo(
      p_Department classes.department
%type,
      p_Course     classes.course
%type)
      
return varchar is 
      v_CurrentStudents 
number;
      v_MaxStudents     
number;
      v_PercentFull     
number;
      
begin
          
select current_students,max_students 
          
into v_CurrentStudents,v_MaxStudents
          
from classes
          
where department=P_Department and course=P_Course;
          
          
--计算癑ֈ?/span>
          v_PercentFull:=v_CurrentStudents/V_MaxStudent*100;
          
          
if v_PercentFull=100 then
          
return 'Full';
          elseif v_PercentFull
>80 then 
          
return 'Some Room';
          elseif v_PercentFull
>60 then 
          
return 'More Room';
          elseif v_PercentFull
>0 then 
          
return 'Lots of Room';
          
else
          
return 'Empty';
          
end if 
          
      
end ClassInfo;
          

 

删除函数语法Q?/font>

drop function function_name;


David1228 2009-01-31 12:18 发表评论
]]>
վ֩ģ壺 պ߹ۿ| һĻ| vvվ| 91Ʒ| ŷ Ƶ С˵| ޳˹Ʒ| ³ʦӰԺѹۿ| ˳ɫ77777߹ۿ| ҹҹAһ| hƬѹۿ| | avۺר | ޳av| ǿ˫ͽˬˬƵ | һaƬþëƬ | AVһַ | Ʒר| aѹۿƵ| Ҹ24p| ޹þþþþþ| ִӲˬƵ| һ߹ۿ| һëƬaѲɫ| ձĻ| AVһ| ۺƷ͵| Ʒɫѿ| Ļһ| ߹ۿһ| ĻAVһ | Ļ߹ۿ| պ˳ۺ| ˿Ļ| һҳ| ɫWWWַ| ҹ޹˲| ձƵ| ëƬaëƬѲ| ѼƵ| wŷs| ˳߹ۿվ|