目录
可自行复制粘贴,仅供参考,如有问题请及时私信或评论,我会一一回复
视图篇: 从表中抽出的逻辑上相关的数据集合。
• 视图是一种虚表。
• 视图建立在已有表的基础上, 视图赖以建立的这些表称为基表。
• 向视图提供数据内容的语句为 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一定要来大写)