一、什么是数据库对象
数据库对象是数据库里面用来存储和指向数据的各种概念和结构的总称。数据库支持的对象包括:
• 表:表是一个逻辑概念,是数据库组织管理数据的基本单位。
• 索引:索引是建立在表上的逻辑对象,索引可以提高表数据的访问查询效率。
• 视图:视图是一种虚定义的逻辑对象,结构和数据是建立在对表的查询基础之上的。
• 序列:序列可以产生一组等间隔的数值,主要用于表的主键的自增。
• 同义词:数据对象的别名,与其代表的数据对象是一种映射关系。
• 存储过程:一组为了完成特定功能的SQL/PLSQL语句集。
• 触发器:一种特殊类型的存储过程,通过指定的事件触发执行。
二、管理对象
(一)管理表
• 表概述:一个表描述了一个实体,表定义为列的集合。表中的每一列都设计为存储某种类型的信息,表上可以有约束、默认值等用于确保数据的有效性。
• 建表语法:
SQL> CREATE TABLE [user_name.]table_name
(
column_name1 data_type(size) [constraints],
column_name2 data_type(size) [constraints],
column_name3 data_type(size) [constraints],
....
);
• `user_name`:用户名,如果省略,默认是创建在当前连接用户下。
• `table_name`:表名。
• `column_name1、column_name2、column_name3`:列名。
• `data_type`:数据类型(例如`VARCHAR2`、`CHAR`等)。
• `size`:列的最大长度(例如`VARCHAR2(10)`、`CHAR(10)`等)。
• `constraints`:限制加入的表约束,如:`NOT NULL`、`DEFAULT`等。
• 修改表:
• 修改表名:
SQL> ALTER TABLE area_04 RENAME TO area_05;
• 修改列名:
SQL> ALTER TABLE area_05 RENAME COLUMN area_name TO area_name_01;
• 修改列长度:
SQL> ALTER TABLE area_05 MODIFY area_name_01 VARCHAR(80);
• 添加字段:
SQL> ALTER TABLE area_05 ADD NUM number(20);
• 删除字段:
SQL> ALTER TABLE area_05 DROP COLUMN num;
(二)管理索引
• 索引的作用:索引是用来快速访问数据的一种数据结构。根据业务合理的创建索引可以提高查询的效率。
• 创建索引语法:
SQL> CREATE INDEX [user_name.] index_name ON table_name(column_name)
• `user_name`:用户名,如果省略,默认是创建在当前连接用户下。
• `index_name`:索引名。
• `table_name`:表名。
• `column_name`:列名。
• 创建索引:
SQL> CREATE INDEX idx_area_06_info_1 ON area_06 (area_no);
• 修改索引:
• 让索引对优化器不可见:
SQL> ALTER INDEX idx_area_06_info_1 INVISIBLE;
• 让索引对优化器可见:
SQL> ALTER INDEX idx_area_06_info_1 VISIBLE;
• 删除索引:
SQL> DROP INDEX idx_area_06_info_1;
• 索引重建:
SQL> ALTER INDEX idx_area_06_info_1 REBUILD;
• 设置索引不可用:
SQL> ALTER INDEX idx_area_06_info_1 UNUSABLE;
(三)管理视图
• 视图的定义:用户可以将一个使用频率较高的查询语句定义为一个持久化的对象,该持久化对象称为视图。
• 视图的作用:
• 简化查询,使用视图代替使用频率较高的查询,特别是复杂查询,可以降低用户编写SQL的复杂度。
• 解耦合,在保证视图列的名称、数据类型不变的前提下,修改基表其他元素的定义不影响视图的正常使用。
• 权限隔离,视图作为一个独立的对象,用户在视图上的权限与在基表上的权限是分离的。合理地设计视图列及权限,可以有效避免基表中的全部信息完全暴露给只需部分信息(视图列)的用户。
• 创建视图语法:
SQL> CREATE [OR REPLACE] VIEW view_name AS subquery;
• `OR REPLACE`:如果已经存在了就替换已经存在的。
• `view_name`:视图名。
• `subquery`:查询语句。
• 创建视图:
SQL> CREATE OR REPLACE VIEW v_area_06 AS SELECT area_no,area_name FROM area_06;
• 查询视图:
SQL> SELECT * FROM v_area_06;
• 查询视图的字段信息:
SQL> DESC v_area_06;
• 删除视图:
SQL> DROP VIEW v_area_06;
注意:如果删除基表,则视图也会变得不可用。
三、数据库对象相关视图
• 对象查询相关视图:
• `DBA_OBJECTS`:显示所有的对象。
• 表相关视图:
• `DBA_TABLES`:显示所有的表。
• 索引相关视图:
• `DBA_INDEXES`:显示所有的索引。
• 视图相关视图:
• `DBA_VIEWS`:显示所有的视图。
• 查询视图:
• 查询所有对象:
SQL> SELECT owner,object_name,object_type,status FROM DBA_OBJECTS WHERE owner='SALES';
• 查询所有表:
SQL> SELECT owner,table_name,tablespace_name FROM DBA_TABLES WHERE owner='SALES';
• 查询所有索引:
SQL> SELECT owner,index_name,table_name FROM DBA_INDEXES WHERE owner='SALES';
• 查询视图对象信息:
SQL> SELECT owner,view_name,text FROM DBA_VIEWS WHERE owner='SALES';
四、小结
• 什么是数据库对象:表、索引、视图等。
• 管理对象:创建、修改、查看、删除操作。
• 数据库对象相关视图:`DBA_OBJECTS`、`DBA_TABLES`、`DBA_INDEXES`、`DBA_VIEWS`。