来自JOIN范围的Oracle USING子句

时间:2016-12-21 15:37:36

标签: sql oracle

我认为在Oracle中,使用USING子句only而不是ON来指定在两个表具有公共列的情况下要测试哪些列是否相等 - 名称。但后来我看到了这个:

create table example (

    col1           number not null,
    col2           clob not null
);

alter table example add constraint ex_pk primary key ( col1 ) using index enable;

using index enable在这做什么?

using子句的最常见用法列表是什么?

3 个答案:

答案 0 :(得分:1)

引用Tom Kyte here

  

它允许您指定存储选项,名称和其他属性   该约束所需的索引。

     

alter table t add constraint t_pk primary key(x);

     

将使用任何内容在默认表空间中创建唯一索引   存储参数是该表空间的默认值。

     

你alter table将在指定的表空间中创建索引,   使用您的存储选项。

如:

alter table example add constraint ex_pk primary key ( col1 )
USING INDEX 
PCTFREE 10 INITRANS 2 MAXTRANS 255 
STORAGE (INITIAL 512K NEXT 512K MINEXTENTS 1 MAXEXTENTS 505 
PCTINCREASE 0 FREELISTS 6 FREELIST GROUPS 2 BUFFER_POOL DEFAULT) 
TABLESPACE "MY_TABLESPACE" 
ENABLE 
/ 

答案 1 :(得分:1)

关于USING来自Oracle docs

  

您可以指定与约束关联的索引的详细信息。

     

如果您需要更明确地控制与之关联的索引   UNIQUE和PRIMARY KEY约束,数据库允许您:

     
      
  • 指定数据库用于强制执行的现有索引   约束

  •   
  • 指定数据库用于创建的CREATE INDEX语句   索引并强制执行约束

  •   

ENABLE与索引无关,但与约束本身无关。

答案 2 :(得分:1)

  

我认为在Oracle中,USING子句仅用于代替ON   
..........
  什么是使用子句的最常见用法列表?

USING只是一个关键字 - 保留字 它在Oracle的许多SQL和PL / SQL命令中使用,其中一些是:

  • SELECT .... JOIN .... USING ....
  • MERGE ..... 使用 ...
  • 翻译(x 使用 y)
  • 创建JAVA .... 使用 ...
  • 协会统计...... 使用 ....
  • 创建| ALTER INDEXTYPE ..... 使用 ...
  • 创建数据库链接..... 使用 ....
  • 创建表.... 使用 INDEX .....
  • 创建实质性视图..... 使用 INDEX ..... 使用 ROLLBACK SEGMENT
  • 执行立即.... 使用 ....
  • OPEN .... FOR .... USING ......

您可以在参考文献中找到所有这些内容,搜索" Oracle SQL参考"和#34; Oracle PL / SQL参考"使用您最喜欢的搜索引擎,您会找到以下链接:

从上面的列表中我大多只使用4:SELECT ... USING,MERGE ... USING,EXECUTE IMMEDIATE ... USING AND OPEN FOR ... USING