oracle中using怎么用,下面oracle 11g是什么意思思

3249人阅读
ORACLE 语法(7)
前面我们介绍了在oralce中使用natural join,也就是自然连接。在Oracle中的join连接中使用using关键字,是相对于natural join的。
我们在前面提到,如果是使用natraul join,并且两张表中如果有多个字段是具有相同的名称和数据类型的,那么这些字段都将被oracle自作主张的将他们连接起来。
但实际上我们有时候是不需要这样来连接的。我们只需要将他们的多个具有相同的名称和数据类型的字段中挑选一两个。这时候我们就需要用到using 关键字了。
下面是一个例子。
在oracle的例子sh的schema中的有一个表是sales,还有一个表是costs,这两个表中都有两个字段分别是pro_id和time_id。我们暂且不去考虑下面连接的实际意义,仅作语法上的研究。
如果使用natural连接,默认情况下,两个字段将会被自然地连接在一起。
Select * from
Select * from
Sales join costs on Sales.prod_id = costs.prod_id and sales.time_id = costs.time_id
Select * from
Sales ,costs
Where Sales.pro_id = cost.prod_id
and sales.time_id = costs.time_id
得到的结果应该是一样的。
如果我们使用自然连接,就没有机会控制连接条件,oracle自作主张的将两个相同数据类型和名称的字段自然地连接在一起了。
下面我们使用using关键字。
Select * from
Sales join costs using(prod_id)
这样就迫使oracle使用using指出的字段来做连接,而不是natural join连接中默认的两个。
请注意,这里的SQL语句没有任何意义,只是为了说明using的用法举了一个牵强的例子而已。
这里还需要说明的是:
1.如果在使用using关键字时,而且select的结果列表项中包含了using关键字所指明的那个关键字,那么请不要在select的结果列表项中对该关键字指明它属于哪个表,例如如果使用using(prod_id),而在结果列表中要包含prod_id字段的话,请不要写成sales.prod_id或者costs.prod_id而应该写成prod_id,而且也不要使用别名,就是使用例如prod_id as “产品编号”的形式。
2.仅能使用一个列名。
3.natural join关键字和using关键字是互斥的,也就是说不能同时出现。
参考知识库
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:407995次
积分:4103
积分:4103
排名:第6517名
原创:62篇
转载:72篇
评论:33条
(1)(4)(2)(2)(1)(1)(1)(1)(1)(5)(7)(1)(2)(2)(2)(1)(1)(8)(8)(10)(4)(2)(14)(8)(8)(4)(3)(1)(1)(2)(1)(2)(2)(11)(9)(1)(1)declare& i_bank_id&&
varchar2(10) := '15';& i_bank_name varchar2(100) := 'testyy';&
i_flag&&&&& varchar2(1) := '0';& i_oper_time date :=begin&
execute immediate 'insert into sys_bank values(:p1,:p2,:p3,:p4)'&&& using
i_bank_id, i_bank_name, i_flag, i_oper_&
阅读(...) 评论()查看: 4979|回复: 7
这个using index有什么用?
论坛徽章:1
看到一条语句:
ALTER TABLE ods.Bops_Complaint_Case ADD CONSTRAINT Bops_Complaint_Case_pk PRIMARY KEY(id)&&USING INDEX
TABLESPACE TBS_ODS_INDEX_00;
using index 后面没有跟索引名,那么在填加主键的时候这个using index有什么作用呢?
论坛徽章:14
创建pk约束时,同时创建索引。
论坛徽章:124
The primary key&&&Bops_Complaint_Case_pk& is created and stored in the TABLESPACE &TBS_ODS_INDEX_00&.
论坛徽章:1
原帖由 lonesashimi 于
15:31 发表
创建pk约束时,同时创建索引。
那和语句:
ALTER TABLE ods.Bops_Complaint_Case ADD CONSTRAINT Bops_Complaint_Case_pk PRIMARY KEY(id)&&
TABLESPACE TBS_ODS_INDEX_00;
有什么区别?创建主键的时候本来就要创建索引啊。
[ 本帖最后由 liujiannan047 于
15:42 编辑 ]
论坛徽章:14
原帖由 liujiannan047 于
15:41 发表
那和语句:
ALTER TABLE ods.Bops_Complaint_Case ADD CONSTRAINT Bops_Complaint_Case_pk PRIMARY KEY(id)&&
TABLESPACE TBS_ODS_INDEX_00;
有什么区别?创建主键的时候本来就要创建索引啊。
oracle在创建主键时如果该主键字段上没有唯一性约束索引,会同时创建一个与pk名称相同的索引。如果已经存在,则进行关联。所以,可以通过using index子句定义索引名称或修改索引的存储属性,
论坛徽章:1
原帖由 lonesashimi 于
15:51 发表
oracle在创建主键时如果该主键字段上没有唯一性约束索引,会同时创建一个与pk名称相同的索引。如果已经存在,则进行关联。所以,可以通过using index子句定义索引名称或修改索引的存储属性,
那这句话的意思是如果已经有唯一性约束索引,则不用原来的约束性索引,在表空间TBS_ODS_INDEX_00里再重新创建一个唯一性约束索引,而索引的名字由系统自动生成?
论坛徽章:14
上面的说明应该分成两件事说。
using index 子句是用来说明创建的index属性的。
如果存在唯一性索引,oracle会自动使用已经存在的索引作为主键的索引的。
论坛徽章:2
原帖由 liujiannan047 于
15:41 发表
那和语句:
ALTER TABLE ods.Bops_Complaint_Case ADD CONSTRAINT Bops_Complaint_Case_pk PRIMARY KEY(id)&&
TABLESPACE TBS_ODS_INDEX_00;
有什么区别?创建主键的时候本来就要创建索引啊。
好像这个语句运行不了吧。
如果没有显式地写出创建索引的信息,那跟随主键生成的索引都是默认的属性的
itpub.net All Right Reserved. 北京皓辰网域网络信息技术有限公司版权所有    
 北京市公安局海淀分局网监中心备案编号: 广播电视节目制作经营许可证:编号(京)字第1149号

我要回帖

更多关于 using是什么意思 的文章

 

随机推荐