1、同义词:
同义词(Synonym)是数据库对象的一个别名,Oracle可以为表、视图、序列、过程、程序包等指定一个别名。同义词有两种类型:
**私有同义词:**拥有CREATE SYNONYM权限的用户(包括非管理员用户)即可创建私有同义词,创建的私有同义词只能由当前用户使用。
**公有同义词:**系统管理员可以创建公有同义词,公有同义词可以被所有用户访问。
创建同义词的语法是:
语法结构:同义词
示例:
--同义词和序列
---面试:视图可以进行增删改(dml)吗?
-------简单的视图可以进行增删改,但是限制条件比较多
-------复杂的视图不能进行DML操作
-----zai中创建一个视图包含平均工资,部门名称
create or replace view view_avg_aslary as
select avg(s.salary) 平均工资, t.department_name 部门名称
from employees s
left join departments t
on s.department_id = t.department_id
group by s.department_id, t.department_name;
select *from view_avg_aslary;
---错误示例,复杂视图不能进行DML操作
-----delete from view_avg_aslary;
----创建一个非只读简单视图
create or replace view view_employees2 as
select
s.employee_id,
s.first_name,
s.email,
s.phone_number,
s.hire_date,
s.job_id,
s.department_id,
t.department_name
from employees s
left join departments t
on s.department_id=t.department_id;
---delete from view_employees2
----删除其中的一条数据还是可以的
delete from view_employees2 e where e.employee_id=202
----同义词
select * from user_tables;--user_tables不但是一个视图,还是一个公有的同义词
----查询一下公有的同义词表
select *from all_synonyms;
select *from all_synonyms where synonym_name='USER_TABLES';
select *from all_synonyms where synonym_name='DUAL';
----必须在管理员sys账户下创建公有的同义词:
CREATE OR REPLACE PUBLIC SYNONYM view_avg_aslary
FOR hr.view_avg_aslary
---创建好同义词后,就可以在scott账户下直接访问hr里面的视图了
select *from view_avg_aslary;
select *from all_synonyms where synonym_name='VIEW_AVG_ASLARY';
2、序列:
序列(Sequence)是用来生成连续的整数数据的对象。序列常常用来作为主键中增长列,序列中的可以升序生成,也可以降序生成。
创建序列的语法是:
语法结构:创建序列
示例:
---序列
----创建序列
CREATE SEQUENCE seq_emp;
-----查询序列的下一个值
select seq_emp.nextval from dual;
-----查询序列当前的值
select seq_emp.currval from dual;
----创建一个实现自动增长的表
create table lanqiao(
id number primary key,
name varchar2(10)
)
insert into lanqiao values(seq_emp.nextval,'小羊');
select *from lanqiao
本文详细介绍了Oracle数据库中的同义词和序列概念。同义词作为数据库对象的别名,分为私有和公有,便于不同权限的用户访问。序列则用于生成连续整数,常用于主键自增。文章通过实例展示了同义词和序列的创建及使用方法。
619

被折叠的 条评论
为什么被折叠?



