易截截图软件、单文件、免安装、纯绿色、仅160KB

oracle 主键 \索引


在oracle中,我们创建一个主键,则同时自动创建了一个同名的唯一索引;删除主键,则主键约束和对应的唯一索引都删除了。这是我们经常见到的现象。
 
发出一个创建主键的sql,oracle其实执行了两步:创建主键约束、创建/关联 唯一索引。步骤是这样的:
创建主键约束时,检查该主键字段上是否已经存在唯一索引。若不存在,则自动创建同名唯一索引;若存在,则直接创建主键约束,并将该约束和已经存在的唯一索引对应上。
删除主键约束时,可以决定是否保留对应的索引;删除唯一索引时,若存在对应的主键约束,则不能删除。
 
总之,存在主键约束,则肯定存在与之对应的唯一索引,而存在唯一索引,不一定对应着有主键约束。
 
下面我们验证一下:
 
SQL> create table test_pri(a number(1), b number(1));
 
表已创建。
 
--1.创建主键,则自动创建同名唯一索引
--1.1创建主键,主键约束和唯一索引同时创建
SQL> alter table test_pri add constraint pk_test_pri_a primary key(a);
 
表已更改。
 
SQL> select CONSTRAINT_NAME, TABLE_NAME, INDEX_NAME
  2  from user_constraints where table_name = 'TEST_PRI';
 
CONSTRAINT_NAME   TABLE_NAME   INDEX_NAME  
----------------- ------------ -------------
PK_TEST_PRI_A     TEST_PRI     PK_TEST_PRI_A
 
SQL> select INDEX_NAME, INDEX_TYPE, TABLE_NAME, UNIQUENESS
  2  from user_indexes where table_name = 'TEST_PRI';
 
INDEX_NAME       INDEX_TYPE   TABLE_NAME   UNIQUENES
---------------- ------------ ------------ ---------
PK_TEST_PRI_A    NORMAL       TEST_PRI     UNIQUE
 
--1.2 删除主键,主键约束和对应的唯一索引都删除了
SQL> alter table test_pri drop constraint pk_test_pri_a;
 
表已更改。
 
SQL> select CONSTRAINT_NAME, TABLE_NAME, INDEX_NAME
  2  from user_constraints where table_name = 'TEST_PRI';
 
未选定行
 
SQL> select INDEX_NAME, INDEX_TYPE, TAB


相关文档:

Oracle数据库8i、9i默认用户存在弱口令

为这些用户名设置足够强壮的口令或锁定无用的默认用户。
SQL语句修改:
连接至Oracle后使用如下命令修改口令:
alter user system(用户名) identified by manager(密码);
连接至Oracle后使用如下命令锁定账号:
alter user test(用户名) account lock;
 
图形窗口修改:
Oracle服务openview上的用户:SCOT ......

oracle自动备份的一个批处理


if %time:~,2% leq 9  (set hh=0%time:~1,1%) else  (set hh=%time:~,2%)
exp wzolerp/wzolerp@wzol file=E:\数据库备份\wzolerp%date:~0,10%日%hh%时%time:~3,2%分.dmp log=E:\数据库备份\wzolerp%date:~0,10%日%hh%时%time:~3,2%分.log
exp wzolwms/wzolwms@wzol file=E:\数据库备份\wzolwms%date:~0,10%日 ......

Oracle 存储过程返回结果集用

Oracle 存储过程返回结果集用 ref cursor 实现。试验步骤如下:
1. 建立 ref cursor 类型和过程
CREATE OR REPLACE PACKAGE types
AS
    TYPE ref_cursor IS REF CURSOR;
END;
/
CREATE TABLE STOCK_PRICES(
    RIC VARCHAR(6) PRIMARY KEY,
    PRICE NUMBER(7,2 ......

Oracle多行记录合并/连接/聚合字符串的几种方法

什么是合并多行字符串(连接字符串)呢,例如:
SQL> desc test;
Name     Type          Nullable Default Comments
------- ------------ -------- ------- --------
COUNTRY VARCHAR2(20) Y       &nb ......

Oracle多行记录合并/连接/聚合字符串的几种方法

什么是合并多行字符串(连接字符串)呢,例如:
SQL> desc test;
Name     Type          Nullable Default Comments
------- ------------ -------- ------- --------
COUNTRY VARCHAR2(20) Y       &nb ......
© 2009 ej38.com All Rights Reserved. 关于E健网联系我们 | 站点地图 | 赣ICP备09004571号