欢迎投稿

今日深度:

Oracle(一)--)数据库对象详解(文字解释,先有

Oracle(一)--)数据库对象详解(文字解释,先有个小理解~)


----数据库对象:逻辑结构的集合 ---- 一、同义词:现有对象的别名 /* 作用: 简化SQL语句 隐藏对象的名称和所有者 提供对对象的公共访问 分类:*/ --公有同义词:可以被所有的数据库用户访问,本地对象和公有对象同名时,本地对象优先 create public synonym syn1 for scott.emp; select * from syn1; --私有同义词:只能被当前模式访问,且不能与当前模式下的对象同名 create synonym emp1 for scott.emp; select * from emp1; /* 同义词创建的条件:在自身的模式下创建私有同义词的话,用户需要具有create synonym系统权限, 在其他的模式创建私有同义词,用户需要具有create any synonym系统权限 公有同义词:用户需要具有create public synonym系统权限 */ --创建或替换现有的同义词 create or replace synonym emp1 for scott.books;
select * from emp1; --删除私有同义词 drop synonym emp1; --删除公有同义词 drop public synonym syn1; --oracle表中的列实现自增: --1 sys_guid: global unique identified:全局唯一标识,用于标识一行数据,32位的唯一字符串 select sys_guid() from dual;

二、 序列(与触发器连用) --序列:用于生成唯一、连续序号的数据库对象 --序列可以是升序的,也可以是降序的 create sequence seq_toys start with 10 increment by 10 maxvalue 500 minvalue 10 nocycle cache 10; /* 通过序列的伪列来访问序列的值 NEXTVAL 返回序列的下一个值 CURRVAL 返回序列的当前值 */ create table toys (toyid int primary key, toyname char(20), toyprice float); insert into toys values(seq_toys.nextval,'熊大',20); select * from toys; select seq_toys.CURRVAL from dual; insert into toys values(seq_toys.nextval,'熊二',21); --使用ALTER SEQUENCE语句修改序列,不能更改序列的START WITH参数
alter sequence seq_toys increment by 20 maxvalue 1000;
--删除序列 drop sequence seq_toys;
三:视图:视图以经过定制的方式显示来自一个或多个表的数据 /* 视图的优点有: 提供了另外一种级别的表安全性 隐藏了数据的复杂性 简化了用户的SQL命令 隔离基表结构的改变 通过重命名列,从另一个角度提供数据
CREATE [OR REPLACE] [FORCE] VIEW view_name [(alias[, alias]...)] AS select_statement [WITH CHECK OPTION] [WITH READ ONLY]; or replace:如果视图存在则替换,否则创建新的视图 force:无论基表是否存在都创建视图 with check option:一旦使用该限制,对视图增加或者修改数据的时候,必须满足子查询的条件 with read only:设置视图只读,不能通过视图更改数据,这样的视图具有更高的安全性 */
CREATE OR REPLACE VIEW v_stu AS SELECT * FROM students WHERE sdept = 'Art' WITH CHECK OPTION ;
select * from v_stu; select * from students;
insert into v_stu values('20030105','July','F',null,'Art',to_date('1996-12-11','yyyy-mm-dd'));
CREATE OR REPLACE VIEW v_stu AS SELECT * FROM students WHERE sdept = 'Art' ;
--若没有此选项,可以将不符合条件的记录(在试图中)改为视图中不可见记录 insert into v_stu values('20030106','Juli','F',null,'Maths',to_date('1996-12-11','yyyy-mm-dd'));
--使用 ORDER BY 子句创建视图 CREATE OR REPLACE VIEW v_stusorted AS SELECT * FROM students ORDER BY sdept;
select * from v_stusorted --force :带有错误的视图 create force view v_temp as select * from t_temp; select * from v_temp;
create table t_temp (id varchar2(10),name varchar2(20)); insert into t_temp values('1','a'); --视图中可以使用单行函数、分组函数和表达式 ---删除视图 drop view v_temp; --如何保证对视图的修改最后映射到唯一基表数据 --键保留表:基表的主键也是视图的主键
四、索引:与表相关的一个可选结构 /* 主要作用:用以提高 SQL 语句执行的性能 减少磁盘I/O
特点:在逻辑上和物理上都独立于表的数据 Oracle 自动维护索引
创建索引有以下两种方式: 1手工创建 2 自动创建:主键 唯一约束 */
create index index_stu on students(sname); --重建索引 --rebuilD 性能优于drop create 语句 alter index index_stu rebuild; --删除索引 drop index index_stu; --唯一索引 create unique index index_name on students(sname);
--组合索引:作用如果 SQL 语句的 WHERE 子句中引用 了组合索引的所有列或大多数列,则可以提高检索速度 create index index_ss on students(sage,sdept);
--USER_INDEXES select * from USER_INDEXES;

www.htsjk.Com true http://www.htsjk.com/oracle/23666.html NewsArticle Oracle(一)--)数据库对象详解(文字解释,先有个小理解~) ----数据库对象:逻辑结构的集合 ---- 一、同义词:现有对象的别名 /* 作用: 简化SQL语句 隐藏对象的名称和所有者 提供对对...
评论暂时关闭