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
相关文档:
本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/cosio/archive/2009/03/11/3978747.aspx
有两种含义的表大小。一种是分配给一个表的物理空间数量,而不管空间是否被使用。可以这样查询获得字节数:
select segment_name, bytes
from user_segments
where segment_type = 'TABLE';
或者
Sel ......
select distinct id
from table t
where rownum < 10
order by t.id desc;
上述语句的过滤条件执行顺序 先where --->order by --->distinct
如果有group by的话 group by 在order by前面的 ......
什么是savepoint?
Use the SAVEPOINT statement to identify a point in a transaction to which you can later roll back.
给你个例子
SQL> create table test (id number(7));
表已创建。
SQL> insert into test values (3);
已创建 1 行。
SQL> savepoint a;
保存 ......
author:skate
time:2010-05-26
Oracle DBA 笔试题
(答题时间60分钟)
网上看见一篇DBA的面试题,觉得挺实用的,而不像有的面试弄得很虚,很理想化。
Unix/Linux题目
1、如何查看主机cpu,内存、IP和磁盘空间?
2、你常用的进程管理、主机性能察看命令有哪些?
3、建立组dba和该组下用户oracle,默认shell为bash。 ......