Oracle数据库常见的数据库对象介绍(含相关sql)

目录

视图篇: 从表中抽出的逻辑上相关的数据集合。

序列篇: 提供有规律的数值

索引篇: 提高查询的效率

查询数据库对象相关的sql

整理不易,请仔细阅读,希望对你有帮助

可自行复制粘贴,仅供参考,如有问题请及时私信或评论,我会一一回复


视图篇: 从表中抽出的逻辑上相关的数据集合。

• 视图是一种虚表。

• 视图建立在已有表的基础上, 视图赖以建立的这些表称为基表。

• 向视图提供数据内容的语句为 SELECT 语句, 可以将视图理解为存储起来的 SELECT 语句.

• 视图向用户提供基表数据的另一种表现形式

视图的作用

• 控制数据访问         • 简化查询

• 避免重复访问相同的数据

相关语法

create or replace view empview

as

select employee_id emp_id,last_name name,department_name

from employees e,departments d

Where e.department_id = d.department_id

• 可以使用 WITH READ ONLY 选项屏蔽对视图的DML(增删改) 操作

• 任何 DML 操作都会返回一个Oracle server 错误

删除视图

drop view 视图名;

序列篇:提供有规律的数值

可供多个用户用来产生唯一数值的数据库对象

• 自动提供唯一的数值             • 共享对象

• 主要用于提供主键值             • 将序列值装入内存可以提高访问效率

CREATE SEQUENCE sequence

       [INCREMENT BY n]  --每次增长的数值

       [START WITH n]    --从哪个值开始

       [{MAXVALUE n | NOMAXVALUE}]

       [{MINVALUE n | NOMINVALUE}]

       [{CYCLE | NOCYCLE}]     --是否需要循环

       [{CACHE n | NOCACHE}];  --是否缓存登录

创建序列

create sequence dept_id_seq

start with 200

increment by 10

maxvalue 10000;

注意事项

• 将序列值装入内存可提高访问效率

• 序列在下列情况下出现裂缝:

– 回滚                 – 系统异常                – 多个表同时使用同一序列

• 如果不将序列的值装入内存(NOCACHE), 可使用表 USER_SEQUENCES 查看序列当前的有效值

删除序列

• 使用 DROP SEQUENCE 语句删除序列

• 删除之后,序列不能再次被引用

DROP SEQUENCE dept_deptid_seq;

Sequence dropped.

索引篇: 提高查询的效率

• 一种独立于表的模式对象, 可以存储在与表不同的磁盘或表空间中

• 索引被删除或损坏, 不会对表产生影响, 其影响的只是查询的速度

• 索引一旦建立, Oracle 管理系统会对其进行自动维护, 而且由 Oracle 管理系统决定何时使用索引。用户不用在查询语句中指定使用哪个索引

• 在删除一个表时,所有基于该表的索引会自动被删除

• 通过指针加速 Oracle 服务器的查询速度

• 通过快速定位数据的方法,减少磁盘 I/O

创建索引:

• 自动创建: 在定义 PRIMARY KEY 或 UNIQUE 约束后系统自动在相应的列上创建唯一性索引

• 手动创建: 用户可以在其它列上创建非唯一的索引,以加速查询

创建索引()

CREATE INDEX emp_last_name_idx

ON employees(last_name);

Index created.

适合建索引的情况:

• 1.频繁作为where条件语句查询字段

• 2.关联字段需要建立索引

• 3.排序字段可以建立索引

• 4.分组字段可以建立索引(因为分组前提是排序)

• 5.统计字段可以建立索引(如.count(),max())

• 列中数据值分布范围很广

• 列经常在 WHERE 子句或连接条件中出现

• 表经常被访问而且数据量很大 ,访问的数据大概占数据总量的2%到4%

不适合建索引的情况:

• 表很小

• 列不经常作为连接条件或出现在WHERE子句中

• 查询的数据大于2%到4%

• 表经常更新

• 1.频繁更新的字段不适合建立索引

• 2.where条件中用不到的字段不适合建立索引

• 3.可以确定表数据比较少不需要建立索引

• 4.数据重复且发布比较均匀的字段不适合建索引(如性别,真假值)

• 5.参与列计算的列不适合建索引

删除索引

• 使用DROP INDEX 命令删除索引

• 删除索引UPPER_LAST_NAME_IDX

• 只有索引的拥有者或拥有DROP ANY INDEX 权限的用户才可以删除索引

• 删除操作是不可回滚的

查询数据库对象相关的sql

–2:表

-- 查看当前用户下所有的表

select * from user_tables;

-- 查看指定用户下的所有表

select a.TABLE_NAME from all_tables a where a.OWNER = upper('IBP_AUTH');

-- 查看名称包含log字符的表

select object_name,object_id from user_objects where instr(object_name,'LOG')>0;

-- 查看某表的创建时间

select object_name,created from user_objects where object_name=upper('&table_name');

select object_name,created from user_objects where object_name=upper('表名');

-- 查看某表的大小

select sum(bytes)/(1024*1024) as "size(M)" from user_segments where segment_name=upper('&table_name');

-- 查看放在ORACLE的内存区里的表

select table_name,cache from user_tables where instr(cache,'Y')>0;

–3:索引

查看索引个数和类别

select index_name,index_type,table_name from user_indexes order by table_name;

-- 查看索引被索引的字段

select * from user_ind_columns where index_name=upper('&index_name');

-- 查看索引的大小

select sum(bytes)/(1024*1024) as "size(M)" from user_segments

where segment_name=upper('&index_name');

–4:序列号

查看序列号,last_number是当前值

select * from user_sequences;

–5:视图

查看视图的名称

select view_name from user_views;

-- 查看创建视图的select语句

select view_name,text_length from user_views;

set long 2000; --说明:可以根据视图的text_length值设定set long 的大小

select text from user_views where view_name=upper('&view_name');

select text from user_views where view_name=upper('V_CUST_GRADE_ALL');

–6:同义词

查看同义词的名称

select * from user_synonyms;

-- 创建同义词

create synonym table_name for user2.table_name;

-- 权限不足问题解决(切换到user2用户下)

GRANT CREATE SYNONYM TO user1;

–7 约束条件

查看某表的约束条件

select constraint_name, constraint_type,search_condition, r_constraint_name

from user_constraints where table_name = upper('&table_name');

–8 存储函数和过程

查看函数和过程的状态

select object_name,status from user_objects where object_type='FUNCTION';

select object_name,status from user_objects where object_type='PROCEDURE';

-- 查看函数和过程的源代码

select text from all_source where owner=user and name=upper('&plsql_name');

–9:查看建表语句

SELECT DBMS_METADATA.GET_DDL('TABLE','TB_TRANSA_CASH_TRADING_INFO')FROM DUAL; (表名TABLE_NAME一定要来大写)

整理不易,请仔细阅读,希望对你有帮助

可自行复制粘贴,仅供参考,如有问题请及时私信或评论,我会一一回复

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

菜鸟#*

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值